summaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/COVERAGE162
-rw-r--r--t/defaults/desc9
-rw-r--r--t/defaults/files6
-rw-r--r--t/defaults/fill-values11
-rw-r--r--t/recipes/README359
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/control.in45
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.dirs2
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.install4
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.dirs2
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.install2
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postinst9
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postrm9
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.dirs2
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.install2
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/Makefile5
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/baz.load1
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo1
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.conf5
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.load5
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/eval/desc2
-rw-r--r--t/recipes/checks/apache2/apache2-modules-general/eval/hints9
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/control.in48
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.dirs1
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.install1
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postinst11
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postrm12
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.dirs1
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.install3
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.dirs1
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.install1
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/false-positives.conf12
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/local-phpmyfoo2.conf1
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo.conf14
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo21
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/eval/desc2
-rw-r--r--t/recipes/checks/apache2/apache2-webapplications-general/eval/hints22
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/control.in87
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.install1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.manpages1
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libapp-something-perl3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libsomething-else-perl3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/python-something3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/ruby-something3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-pl3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-py3
-rwxr-xr-xt/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-rb3
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libapp-something-perl.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libsomething-else-perl.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/python-something.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/ruby-something.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-pl.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-py.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-rb.16
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/eval/desc2
-rw-r--r--t/recipes/checks/application-not-library/application-not-library/eval/hints11
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml1
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml2
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.desktop8
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.dirs2
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml22
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.udev14
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/rules15
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/fill-values3
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/eval/desc2
-rw-r--r--t/recipes/checks/appstream-metadata/appstream-metadata/eval/hints5
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/apt/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/eval/hints4
-rw-r--r--t/recipes/checks/apt/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/build-spec/fill-values4
-rw-r--r--t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/desc2
-rw-r--r--t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/hints6
-rw-r--r--t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/post-test2
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/debian/control.in31
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/desc2
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/hints1
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/hints1
-rw-r--r--t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values3
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/desc4
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/hints1
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/build-spec/fill-values5
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/desc2
-rw-r--r--t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/hints1
-rwxr-xr-xt/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/fill-values3
-rw-r--r--t/recipes/checks/binaries/architecture/binaries-misplaced/eval/desc2
-rw-r--r--t/recipes/checks/binaries/architecture/binaries-misplaced/eval/hints1
-rw-r--r--t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/dumpobj22
-rw-r--r--t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/install2
-rwxr-xr-xt/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/desc4
-rw-r--r--t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/hints1
-rw-r--r--t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/Makefile37
-rw-r--r--t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/desc2
-rw-r--r--t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/hints1
-rw-r--r--t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/dumpobj22
-rw-r--r--t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/install2
-rwxr-xr-xt/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/desc4
-rw-r--r--t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/hints4
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/fill-values8
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/eval/desc2
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/eval/hints3
-rw-r--r--t/recipes/checks/binaries/corrupted/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/binaries-general/eval/hints1
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/hints4
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/hints5
-rw-r--r--t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/hints1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/hints3
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/Makefile37
-rw-r--r--t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/desc2
-rw-r--r--t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/hints1
-rw-r--r--t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/Makefile35
-rw-r--r--t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/base.pod12
-rw-r--r--t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c17
-rw-r--r--t/recipes/checks/binaries/hardening/binaries-hardening/eval/desc3
-rw-r--r--t/recipes/checks/binaries/hardening/binaries-hardening/eval/hints4
-rwxr-xr-xt/recipes/checks/binaries/hardening/binaries-hardening/eval/test-calibration53
-rw-r--r--t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/Makefile37
-rw-r--r--t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/desc2
-rw-r--r--t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/hints1
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/libbasic2.symbols4
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/basic.c27
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/lfs.c10
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/desc3
-rw-r--r--t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/hints1
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/binaries/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/binaries/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/binaries/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/binaries/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/binaries/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/binaries/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/binaries/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/control.in53
-rwxr-xr-xt/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/fill-values5
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/Makefile7
-rwxr-xr-xt/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/script3
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/true.c5
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/desc2
-rw-r--r--t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/hints5
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/location/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/binaries/location/binaries-general/eval/hints2
-rwxr-xr-xt/recipes/checks/binaries/location/binaries-general/eval/post-test1
-rwxr-xr-xt/recipes/checks/binaries/location/binaries-misplaced/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/location/binaries-misplaced/build-spec/fill-values3
-rw-r--r--t/recipes/checks/binaries/location/binaries-misplaced/eval/desc2
-rw-r--r--t/recipes/checks/binaries/location/binaries-misplaced/eval/hints1
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/control.in25
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/libbasic2.symbols2
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/eval/desc2
-rw-r--r--t/recipes/checks/binaries/location/binaries-multiarch-same/eval/hints1
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/Makefile52
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/dummy.pod11
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt.c30
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt_r.c33
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-fcrypt.c21
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey.c45
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey_r.c48
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/desc2
-rw-r--r--t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/hints5
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/Makefile35
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.c5
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.pod14
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/hints3
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/post-test3
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols4
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/rules15
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/Makefile14
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx14
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/hints2
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/libbasic2.symbols2
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/hints1
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/eval/hints2
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/hints6
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/fill-values5
-rw-r--r--t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/basic.c21
-rw-r--r--t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/setup.py9
-rw-r--r--t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/hints1
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/debian/rules17
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/Makefile16
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/hints1
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/debian/rules17
-rw-r--r--t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/Makefile16
-rw-r--r--t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/hints1
-rw-r--r--t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/Makefile37
-rw-r--r--t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/desc2
-rw-r--r--t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/hints1
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/binaries/profiling/binaries-general/eval/hints1
-rwxr-xr-xt/recipes/checks/binaries/profiling/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/binaries/rpath/binaries-general/eval/hints3
-rwxr-xr-xt/recipes/checks/binaries/rpath/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/rpath/quoted/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/eval/desc2
-rw-r--r--t/recipes/checks/binaries/rpath/quoted/eval/hints5
-rwxr-xr-xt/recipes/checks/binaries/rpath/quoted/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/rpath/relative/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/rpath/relative/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/rpath/relative/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/rpath/relative/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/rpath/relative/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/rpath/relative/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/rpath/relative/eval/desc2
-rw-r--r--t/recipes/checks/binaries/rpath/relative/eval/hints5
-rwxr-xr-xt/recipes/checks/binaries/rpath/relative/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/Makefile11
-rw-r--r--t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/basic.c23
-rw-r--r--t/recipes/checks/binaries/spelling/binaries-spelling/eval/desc2
-rw-r--r--t/recipes/checks/binaries/spelling/binaries-spelling/eval/hints3
-rw-r--r--t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/dumpobj22
-rw-r--r--t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/install2
-rwxr-xr-xt/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/static/binaries-from-other-arch/eval/desc4
-rw-r--r--t/recipes/checks/binaries/static/binaries-from-other-arch/eval/hints2
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/binaries/static/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/binaries/static/binaries-general/eval/hints1
-rwxr-xr-xt/recipes/checks/binaries/static/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/binaries/static/binaries-golang/build-spec/fill-values5
-rw-r--r--t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile16
-rw-r--r--t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/binaries/static/binaries-golang/eval/desc3
-rw-r--r--t/recipes/checks/binaries/static/binaries-golang/eval/hints1
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/binaries/static/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/binaries/static/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/binaries/static/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/fill-values6
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/eval/desc2
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/eval/hints1
-rw-r--r--t/recipes/checks/binaries/static/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/build-systems/automake/automake-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/Makefile.am0
-rw-r--r--t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/configure.in1
-rw-r--r--t/recipes/checks/build-systems/automake/automake-general/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/automake/automake-general/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/orig/hello.c8
-rwxr-xr-xt/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/pre-upstream35
-rw-r--r--t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/desc4
-rw-r--r--t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/orig/ltmain.sh62
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/desc3
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltconfig0
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltmain.sh59
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/desc3
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/hints2
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/orig/ltmain.sh48
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/desc4
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/hints0
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/fill-values4
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltconfig0
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltmain.sh59
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/desc4
-rw-r--r--t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/hints0
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/configure.in5
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/src/configure.in1
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/hints2
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/configure.ac5
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/src/configure.ac1
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/hints2
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/somepackage.substvars1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/pre-build34
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/desc3
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/hints1
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/pre-build32
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-native/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-native/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/README.source1
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/somepackage.substvars1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/pre-build34
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/desc3
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/patches/wig-pen5
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/fill-values4
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/pre-build32
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/debian/rules71
-rw-r--r--t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/hints2
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/rules111
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpfoo7
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3.Xfoo4
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3foo4
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/desc5
-rw-r--r--t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/install4
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/links1
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/Makefile9
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/_python_module.txt12
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/dependency_libs.txt15
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/kio_locate.txt15
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/trailing-slash.txt12
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/hints2
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/orig/waf15
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/desc3
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/hints1
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/fill-values3
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/some-source.c5
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/waf.in13
-rwxr-xr-xt/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/pre-upstream18
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/desc2
-rw-r--r--t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changed-by-localhost/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changed-by-malformed/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changed-by-no-name/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changed-by-root-email/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changed-by-root/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-bad-ubuntu-distribution/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-distribution-mismatch/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-experimental-mismatch/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-file-bad-section/build-spec/fill-values3
-rw-r--r--t/recipes/checks/changes-file/changes-file-bad-section/build-spec/referenced-files/__some-file__1
-rw-r--r--t/recipes/checks/changes-file/changes-file-bad-section/build-spec/test.changes.in18
-rw-r--r--t/recipes/checks/changes-file/changes-file-bad-section/eval/desc2
-rw-r--r--t/recipes/checks/changes-file/changes-file-bad-section/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__1
-rw-r--r--t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/test.changes.in18
-rw-r--r--t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/hints4
-rw-r--r--t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in36
-rw-r--r--t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values4
-rw-r--r--t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc2
-rw-r--r--t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-missing-fields/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-missing-format/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-unreleased/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/changes-upload-has-backports-version-number/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/changes-file/checksum-count-mismatch/build-spec/post-build.in3
-rw-r--r--t/recipes/checks/changes-file/checksum-count-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/changes-file/checksum-count-mismatch/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/distribution-multiple-bad/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/generic-empty/eval/hints1
-rw-r--r--t/recipes/checks/changes-file/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/fill-values4
-rw-r--r--t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/orig/etc/some.config1
-rw-r--r--t/recipes/checks/conffiles/conffile-removed-but-present/eval/desc2
-rw-r--r--t/recipes/checks/conffiles/conffile-removed-but-present/eval/hints1
-rw-r--r--t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/install1
-rw-r--r--t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/fill-values3
-rw-r--r--t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/orig/something.conf1
-rw-r--r--t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/desc2
-rw-r--r--t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/hints1
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/debian/conffiles9
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/debian/install3
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/debian/links1
-rwxr-xr-xt/recipes/checks/conffiles/conffiles-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/orig/etc/rc2.d/file1
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/orig/usr/share/foo1
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/build-spec/orig/var/cache/foo1
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/eval/desc2
-rw-r--r--t/recipes/checks/conffiles/conffiles-general/eval/hints13
-rw-r--r--t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/fill-values4
-rw-r--r--t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/orig/etc/some.config1
-rw-r--r--t/recipes/checks/conffiles/instruction-chicken-soup/eval/desc2
-rw-r--r--t/recipes/checks/conffiles/instruction-chicken-soup/eval/hints1
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/eval/hints3
-rw-r--r--t/recipes/checks/conffiles/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/conffiles/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/conffiles/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/debian/gitlab-ci.yml5
-rw-r--r--t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/fill-values3
-rw-r--r--t/recipes/checks/continuous-integration/salsa/first-level-array/eval/desc2
-rw-r--r--t/recipes/checks/continuous-integration/salsa/first-level-array/eval/hints3
-rw-r--r--t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/debian/gitlab-ci.yml1
-rw-r--r--t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/continuous-integration/salsa/root-scalar/eval/desc2
-rw-r--r--t/recipes/checks/continuous-integration/salsa/root-scalar/eval/hints2
-rw-r--r--t/recipes/checks/control-files/control-field-traversal-4/build-spec/DEBIAN/control.in12
-rw-r--r--t/recipes/checks/control-files/control-field-traversal-4/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/control-files/control-field-traversal-4/build-spec/pre-data13
-rw-r--r--t/recipes/checks/control-files/control-field-traversal-4/eval/desc4
-rw-r--r--t/recipes/checks/control-files/control-field-traversal-4/eval/literal1
-rw-r--r--t/recipes/checks/control-files/control-files-bad/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/control-files/control-files-bad/build-spec/pre-control7
-rwxr-xr-xt/recipes/checks/control-files/control-files-bad/build-spec/tar-control8
-rw-r--r--t/recipes/checks/control-files/control-files-bad/eval/desc2
-rw-r--r--t/recipes/checks/control-files/control-files-bad/eval/hints3
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/prerm9
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/fill-values3
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/desc2
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/hints2
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/build-spec/fill-values3
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/desc2
-rw-r--r--t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/hints1
-rw-r--r--t/recipes/checks/control-files/control-files-traversal/build-spec/control-members3
-rw-r--r--t/recipes/checks/control-files/control-files-traversal/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/control-files/control-files-traversal/build-spec/pre-control8
-rw-r--r--t/recipes/checks/control-files/control-files-traversal/eval/desc2
-rw-r--r--t/recipes/checks/control-files/control-files-traversal/eval/hints2
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/isinstallable1
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/special-file1
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/triggers0
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/build-spec/control-members5
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/build-spec/fill-values3
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/eval/desc2
-rw-r--r--t/recipes/checks/control-files/control-files-weird-files/eval/hints4
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/control-files/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/control-files/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/control-files/legacy-binary/eval/desc3
-rw-r--r--t/recipes/checks/control-files/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/control-files/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/control-files/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/control-files/legacy-libbaz/eval/hints11
-rwxr-xr-xt/recipes/checks/control-files/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/control-files/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/control-files/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/control-files/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/control-files/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/control-files/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/eval/hints5
-rw-r--r--t/recipes/checks/control-files/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/control-files/md5sums-empty/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/control-files/md5sums-empty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/control-files/md5sums-empty/eval/desc4
-rw-r--r--t/recipes/checks/control-files/md5sums-empty/eval/hints1
-rw-r--r--t/recipes/checks/control-files/md5sums-traversal/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/control-files/md5sums-traversal/build-spec/pre-control8
-rw-r--r--t/recipes/checks/control-files/md5sums-traversal/eval/desc2
-rw-r--r--t/recipes/checks/control-files/md5sums-traversal/eval/hints2
-rw-r--r--t/recipes/checks/control-files/unpack-numerical-owner/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-control8
-rwxr-xr-xt/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-data7
-rw-r--r--t/recipes/checks/control-files/unpack-numerical-owner/eval/desc3
-rw-r--r--t/recipes/checks/control-files/unpack-numerical-owner/eval/hints1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.docs3
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.init21
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.install9
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.manpages1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.install1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.manpages1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/rules31
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/README1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/read-only1
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/sample.ali1
-rwxr-xr-xt/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/script20
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/eval/desc2
-rw-r--r--t/recipes/checks/cron/files-bad-perm-owner/eval/hints1
-rw-r--r--t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/debian/install2
-rw-r--r--t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module0
-rwxr-xr-xt/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly3
-rw-r--r--t/recipes/checks/cron/files-foo-violates-expected-naming/eval/desc2
-rw-r--r--t/recipes/checks/cron/files-foo-violates-expected-naming/eval/hints1
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/cron/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/cron/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.c1
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.cpp1
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/oui.db/oui.db20
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/negative.py5
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/positive.cpp4
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-autogenerated/eval/hints4
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/debian/copyright20
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_01.txt70
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_02.txt75
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/3_01.txt55
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/eval/desc5
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php-unrel/eval/hints0
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_01.txt70
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_02.txt75
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/3_01.txt55
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-bad-php/eval/hints3
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/ISI_export_format.html8
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/copyright-header.html9
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.svg53
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.xml9
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/hints4
-rw-r--r--t/recipes/checks/cruft/cruft-evil-json/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-evil-json/build-spec/orig/src/evil.c10
-rw-r--r--t/recipes/checks/cruft/cruft-evil-json/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-evil-json/eval/hints1
-rw-r--r--t/recipes/checks/cruft/cruft-general-upstream/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/cruft/cruft-general-upstream/build-spec/pre-upstream61
-rw-r--r--t/recipes/checks/cruft/cruft-general-upstream/eval/desc5
-rw-r--r--t/recipes/checks/cruft/cruft-general-upstream/eval/hints26
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi6
-rwxr-xr-xt/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/pre-build45
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/desc3
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/hints1
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi12
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/empty.texi5
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf125
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.html56
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt25
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt8
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi12
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po16
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html12
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c15
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c15
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html1
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html13
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi13
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html13
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html15
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info14
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml15
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po42
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff102
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader20
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex2
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt19
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html28
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi13
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c13
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi8
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.89
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt5
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt4
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt8
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po15
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff18
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi19
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml8
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html11
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi9
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po8
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex8
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt21
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt7
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi6
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.112
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-gfdl-invariants/eval/hints37
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/install1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/json.js529
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js0
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/fill-values4
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/README1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js19
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.js3
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js4
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js4
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js8
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js4
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js3
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js104
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js30
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js4
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html7
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js3
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js3
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js1
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js2
-rwxr-xr-xt/recipes/checks/cruft/cruft-minified-js/build-spec/pre-build52
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/eval/hints3
-rw-r--r--t/recipes/checks/cruft/cruft-minified-js/eval/post-test4
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/debian/copyright25
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/bcp78.txt3
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc-3492.txt23
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc.txt23
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-rfc/eval/hints2
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-utf/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-utf/build-spec/orig/src/bad.c18
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-utf/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-non-free-utf/eval/hints1
-rw-r--r--t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv.c12
-rw-r--r--t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv2.c10
-rw-r--r--t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/falsepositive/allmankind.c12
-rw-r--r--t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/hints2
-rw-r--r--t/recipes/checks/cruft/cruft-python/build-spec/debian/missing-sources/fake.py1
-rw-r--r--t/recipes/checks/cruft/cruft-python/build-spec/debian/pycompat0
-rw-r--r--t/recipes/checks/cruft/cruft-python/build-spec/debian/pyversions1
-rw-r--r--t/recipes/checks/cruft/cruft-python/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/cruft/cruft-python/build-spec/pre-build31
-rw-r--r--t/recipes/checks/cruft/cruft-python/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-python/eval/hints6
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/fill-values3
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/hello.c10
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/Makefile177
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/environment.picklebin0 -> 4812 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/index.doctreebin0 -> 6751 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/.buildinfo4
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_sources/index.txt22
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/ajax-loader.gifbin0 -> 673 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/basic.css537
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-bright.pngbin0 -> 3500 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-close.pngbin0 -> 3578 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment.pngbin0 -> 3445 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/default.css256
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/doctools.js238
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down-pressed.pngbin0 -> 368 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down.pngbin0 -> 363 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/file.pngbin0 -> 392 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/jquery.js9404
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/minus.pngbin0 -> 199 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/plus.pngbin0 -> 199 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/pygments.css62
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/searchtools.js622
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/sidebar.js159
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/underscore.js1226
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up-pressed.pngbin0 -> 372 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up.pngbin0 -> 363 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/websupport.js808
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/genindex.html92
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/index.html109
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/objects.invbin0 -> 197 bytes
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/search.html99
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/searchindex.js1
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/conf.py259
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/index.rst22
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/make.bat242
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/eval/desc2
-rw-r--r--t/recipes/checks/cruft/cruft-sphinx-documentation/eval/hints1
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/fill-values3
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/hints2
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/fill-values3
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/hints2
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-member/build-spec/fill-values3
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-member/build-spec/members/extra-stuff1
-rwxr-xr-xt/recipes/checks/deb-format/deb-format-extra-member/build-spec/post-build5
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-member/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-member/eval/hints3
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/deb-members4
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/fill-values3
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/members/_extra-stuff1
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/hints3
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/deb-members4
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/fill-values3
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/members/_extra-stuff1
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/hints3
-rw-r--r--t/recipes/checks/deb-format/deb-format-lzma/build-spec/deb-members3
-rw-r--r--t/recipes/checks/deb-format/deb-format-lzma/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/deb-format/deb-format-lzma/build-spec/tar-data7
-rw-r--r--t/recipes/checks/deb-format/deb-format-lzma/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/deb-format-lzma/eval/hints4
-rw-r--r--t/recipes/checks/deb-format/deb-format-no-compress/build-spec/deb-members3
-rw-r--r--t/recipes/checks/deb-format/deb-format-no-compress/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-control8
-rwxr-xr-xt/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-data7
-rw-r--r--t/recipes/checks/deb-format/deb-format-no-compress/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/deb-format-no-compress/eval/hints4
-rw-r--r--t/recipes/checks/deb-format/deb-format-record-size/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-control8
-rwxr-xr-xt/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-data7
-rw-r--r--t/recipes/checks/deb-format/deb-format-record-size/eval/desc2
-rw-r--r--t/recipes/checks/deb-format/deb-format-record-size/eval/hints2
-rw-r--r--t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/fill-values6
-rw-r--r--t/recipes/checks/deb-format/deb-format-udeb-compression/eval/desc3
-rw-r--r--t/recipes/checks/deb-format/deb-format-udeb-compression/eval/hints1
-rw-r--r--t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/deb-members3
-rw-r--r--t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/fill-values6
-rw-r--r--t/recipes/checks/deb-format/deb-format-wrong-order/eval/desc4
-rw-r--r--t/recipes/checks/deb-format/deb-format-wrong-order/eval/hints2
-rw-r--r--t/recipes/checks/deb-format/debhelper-compat-old/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/deb-format/debhelper-compat-old/build-spec/fill-values3
-rw-r--r--t/recipes/checks/deb-format/debhelper-compat-old/eval/desc4
-rw-r--r--t/recipes/checks/deb-format/debhelper-compat-old/eval/hints2
-rw-r--r--t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level3
-rw-r--r--t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/control.in17
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-arch-depends/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-arch-depends/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/desc5
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/hints5
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/control.in80
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-1.install1
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-2.install1
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-3.install1
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-4.install1
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-5.install1
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-good.install5
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-brace-expansion/eval/hints8
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/debian/compat1
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-empty/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-empty/eval/hints2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-experimental/eval/desc5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-experimental/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/source/options2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-missing/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-missing/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/debian/compat3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/debian/compat3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-multiple/eval/hints5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/fill-values5
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/fill-values5
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/desc5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-compat/eval/hints1
-rw-r--r--t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/compat.in1
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/rules48
-rw-r--r--t/recipes/checks/debhelper/debhelper-deprecated/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-deprecated/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-deprecated/eval/hints6
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/debian/rules37
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/hints5
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/compat.in1
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-compat/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-compat/eval/hints5
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level3
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/dirs3
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/install6
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/links2
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/manpages5
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/mime2
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/rules16
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-exec/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-exec/eval/hints12
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/debian/control.in31
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/hints5
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/README.source0
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/patches/series0
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/hints3
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/control.in42
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/hints4
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/hints6
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/hints4
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/debian/rules3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/hints4
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/hints5
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/docs2
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/rules6
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/compat.in1
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files/build-spec/fill-values5
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-executable-files/build-spec/pre-build8
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-executable-files/eval/hints7
-rw-r--r--t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/control.in33
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/rules24
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/eval/desc5
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/eval/hints12
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level2
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-override-typos/build-spec/debian/rules43
-rw-r--r--t/recipes/checks/debhelper/debhelper-override-typos/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-override-typos/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-override-typos/eval/hints19
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/control.in14
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/rules23
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/hints2
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/hints3
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/desc4
-rw-r--r--t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/rules38
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/hints3
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token/build-spec/debian/postinst6
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-script-token/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/debhelper-unused-cdbs/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debhelper/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/eval/hints5
-rw-r--r--t/recipes/checks/debhelper/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/debhelper/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/eval/hints8
-rw-r--r--t/recipes/checks/debhelper/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/legacy-libbaz/eval/hints13
-rwxr-xr-xt/recipes/checks/debhelper/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/hints4
-rw-r--r--t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debhelper/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debhelper/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debhelper/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debhelper/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debhelper/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/eval/hints7
-rw-r--r--t/recipes/checks/debhelper/legacy-scripts/eval/post-test1
-rwxr-xr-xt/recipes/checks/debhelper/oeverride-typo/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debhelper/oeverride-typo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/oeverride-typo/eval/desc3
-rw-r--r--t/recipes/checks/debhelper/oeverride-typo/eval/hints4
-rwxr-xr-xt/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/hints6
-rw-r--r--t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.debhelper.log1
-rw-r--r--t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.postinst.debhelper1
-rwxr-xr-xt/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/desc2
-rw-r--r--t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/post-build.in3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-become-native/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-become-native/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/orig/ChangeLog5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/hints4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/debian/changelog.in11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/debian/changelog.in11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/desc6
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/debian/changelog.in11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/desc6
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/debian/changelog.in11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-etch/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-experimental/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/orig/changelog1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/changelog.in42
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-general/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-general/eval/hints14
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-general/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/debian/changelog.in17
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/hints3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-missing/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-missing/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/debian/changelog.in14
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/NEWS7
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/debian/NEWS11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-general/eval/hints7
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/debian/NEWS6
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-version/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/package-news6
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/orig/ChangeLog5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/debian/changelog.in45
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-stable/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-stable/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/doc/changelog.in22
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-syntax/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-syntax/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/post-build.in24
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/private.key81
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/public.key41
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/desc6
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/orig/some-changelog.html8
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/orig/some-changelog1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date7
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-bzr/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-bzr/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-bzr/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-non-native-simple/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-special-chars/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/hints3
-rw-r--r--t/recipes/checks/debian/changelog/cruft-native-dash-version/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/date-based-version/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/debian/changelog/date-based-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/date-based-version/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/date-based-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad-rc/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-bad/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dfsg-native/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dot-dfsg/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dsfg/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dsfg/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/fields-version-dsfg/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/hints3
-rw-r--r--t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/eval/hints9
-rw-r--r--t/recipes/checks/debian/changelog/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/debian/changelog/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-fields/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/eval/hints4
-rw-r--r--t/recipes/checks/debian/changelog/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/eval/hints4
-rw-r--r--t/recipes/checks/debian/changelog/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-libbaz/eval/hints9
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/hints2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/desc5
-rw-r--r--t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/missing-explicit-entry-fp/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-changelog/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-changelog/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-version/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-version/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/nmu-local-version/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/nmu-team-upload/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/nmu-team-upload/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/package-version-0/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/package-version-0/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/package-version-0/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/post-build.in5
-rw-r--r--t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/desc4
-rw-r--r--t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/hints0
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/doc-base9
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/add-readme8
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/nonrel6
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/series3
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/spelling6
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/changelog/spelling-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/desc3
-rw-r--r--t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control.in42
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/desc3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hint0
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hints0
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/desc3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/hints0
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/control1
-rw-r--r--t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/test-12
-rw-r--r--t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/debian/control.in43
-rw-r--r--t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in33
-rw-r--r--t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/desc5
-rw-r--r--t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints2
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install1
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control.in41
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/hints2
-rw-r--r--t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/hints3
-rw-r--r--t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/debian/control.in26
-rw-r--r--t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/hints4
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/redundant/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/field/redundant/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/control.in22
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/hints5
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-general/eval/hints3
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/hints2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/pre-build6
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/hints2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/hints3
-rw-r--r--t/recipes/checks/debian/control/link/control-file-symlink/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/control/link/control-file-symlink/build-spec/pre-build6
-rw-r--r--t/recipes/checks/debian/control/link/control-file-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/link/control-file-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/control.in81
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/hints2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/debian/control.in115
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/hints3
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/hints4
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/hints5
-rw-r--r--t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/copyright23
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/source-copyright-missing-notice-file-for-apache-license-unrel.install1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/orig/NOTICE1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/hints0
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/debian/copyright23
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE.txt1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/subdir/NOTICE1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/unrel/NOTICE1
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/hints3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/control.in39
-rwxr-xr-xt/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/hints0
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/DEBIAN/control.in12
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/control-members1
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-control7
-rwxr-xr-xt/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-data13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/control.in243
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-crln.copyright36
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright661
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright202
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright397
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright206
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright344
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright674
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright171
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright22
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright25
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright5
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-no-errors.copyright36
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright19
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-php.copyright151
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright24
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-versionless.copyright2
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-w3c.copyright95
-rwxr-xr-xt/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-general/eval/hints28
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/control.in28
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright20
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright21
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/control.in95
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache2.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache3.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gfdl.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gpl.copyright14
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl2.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-perl.copyright13
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/desc8
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/hints0
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/control.in40
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/copyright-file-symlink/eval/hints3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.desktop8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.dirs2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.udev14
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/rules15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/fill-values6
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/pre-build18
-rw-r--r--t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/hints3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/desc5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/control.in243
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-crln.copyright36
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright661
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright202
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright397
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright206
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright344
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright674
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright171
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright25
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-no-errors.copyright36
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright19
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-php.copyright151
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright24
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-versionless.copyright2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-w3c.copyright95
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/hints16
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/control.in28
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright20
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi12
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/empty.texi5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf125
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.html56
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt25
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi12
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po16
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html12
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info14
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po42
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff102
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader20
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt19
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html28
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.89
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff18
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi19
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html11
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.112
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/debian/copyright30
-rw-r--r--t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/debian/copyright13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/debian/copyright38
-rw-r--r--t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/orig/COPYING1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/.matches0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/include-this0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/copyright34
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/remove-file.patch10
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/orig/will-be-empty/removed-by-patch1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/desc5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/copyright11
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/patches/a.patch1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/orig/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/debian/copyright23
-rw-r--r--t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/debian/copyright47
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/figtoipe/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/ipe5toxml/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/pdftoipe/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/svgtoipe/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/desc5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/debian/copyright19
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/orig/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/debian/copyright20
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/README1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/space1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/hints4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/debian/copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/debian/copyright113
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/hints14
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/debian/copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/debian/copyright97
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/hints12
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/debian/copyright19
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/debian/copyright28
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/orig/filea0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/debian/copyright81
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/hints11
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/post-test4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/debian/copyright379
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/hints5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/post-test3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/debian/copyright79
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/hints11
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/post-test4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/debian/copyright16
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/fill-values2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/bad.xml18
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/good.xml18
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/debian/copyright23
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/hints0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/debian/copyright23
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/debian/copyright23
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/debian/copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/debian/copyright16
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/orig/README1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/hints5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/copyright29
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/0001-recreate-file.diff6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/.matches0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir-2/filename0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename-20
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-this0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/foolib/false-positive0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/hints5
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/copyright56
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/plus+file0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/hints19
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/debian/copyright36
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/NEWS1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/README1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/hints6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/debian/copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/debian/copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/debian/copyright22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/debian/copyright43
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING.CC-BY-SA-3.01
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/LICENSE1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/file,with,commas0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/i-have-no-copyright-information0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/01-file-with-(something-in-parenthesis).png0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/02-or-perhaps-only-one-{-which-causes-a-compile-failure.png0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/03-even-]-is-not-safe.png0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/04-Perhaps-even-|-will-cause-problems.png0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/05-Lets-not-forget-^-and-$-for-added-fun.png0
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/hints7
-rw-r--r--t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/doc-base9
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/add-readme8
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/nonrel6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/series3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/spelling6
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/spelling-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/debian/copyright35
-rw-r--r--t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.dirs2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.metadata.xml22
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.udev25
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/dep5/udev-rules/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/patches/a.patch1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/orig/a-file1
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/desc3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/hints3
-rw-r--r--t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/hints5
-rw-r--r--t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/debian/copyright/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/copyright/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/debian/copyright/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/debian/copyright/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/generic-empty/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/eval/hints8
-rw-r--r--t/recipes/checks/debian/copyright/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/debian/copyright/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-fields/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/eval/hints3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/copyright/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/pre-build4
-rw-r--r--t/recipes/checks/debian/copyright/named-copyright-in-source/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/named-copyright-in-source/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/copyright/source-copyright-missing/build-spec/pre-build2
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-missing/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-missing/eval/hints2
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/pre-build4
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/copyright56
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/plus+file0
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-undefined/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/source-copyright-undefined/eval/hints1
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/doc-base9
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/add-readme8
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/nonrel6
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/series3
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/spelling6
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/copyright/spelling-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/config22
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/da.po42
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/templates.pot42
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/templates15
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-general/eval/hints4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/config5
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/control.in15
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/desc3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/hints4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/da.po25
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/templates.pot25
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/templates4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/config-gen.pl31
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/gen-source.mk8
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/script6
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/pre-build4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/hints1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/config9
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/da.po24
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/templates.pot24
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postinst10
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postrm10
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/preinst11
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/rules16
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/templates4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/hints5
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/da.po25
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/templates.pot25
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/templates4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/config-gen.pl31
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/gen-source.mk8
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/pre-build4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-missing-dep/eval/hints1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/config6
-rw-r--r--t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/postinst7
-rw-r--r--t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-no-templates/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-no-templates/eval/hints1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/config6
-rw-r--r--t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/templates3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-syntax-error/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-syntax-error/eval/hints2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en.po241
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en_US.po223
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/templates.pot223
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/templates124
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/config-gen.pl31
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/gen-source.mk8
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-templates-general/build-spec/pre-build4
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/debconf-templates-general/eval/hints22
-rw-r--r--t/recipes/checks/debian/debconf/debconf-traversal/build-spec/dpkg-overrides1
-rw-r--r--t/recipes/checks/debian/debconf/debconf-traversal/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/debconf/debconf-traversal/build-spec/post-build7
-rw-r--r--t/recipes/checks/debian/debconf/debconf-traversal/eval/desc3
-rw-r--r--t/recipes/checks/debian/debconf/debconf-traversal/eval/hints0
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/eval/hints49
-rw-r--r--t/recipes/checks/debian/debconf/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debian/debconf/national-encoding/build-spec/debian/templates3
-rw-r--r--t/recipes/checks/debian/debconf/national-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/national-encoding/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/national-encoding/eval/hints1
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/English.po1
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/POTFILES.in3
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/de.po2
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/templates.pot30
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates10
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates.en_US5
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/debconf/po-debconf-general/eval/hints3
-rw-r--r--t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/debian/not-forwarded.desktop1
-rw-r--r--t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/desktop-entries/desktop-file/eval/desc3
-rw-r--r--t/recipes/checks/debian/desktop-entries/desktop-file/eval/hints1
-rw-r--r--t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS62
-rw-r--r--t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS.Debian62
-rw-r--r--t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/filenames/duplicate-news-files/eval/desc3
-rw-r--r--t/recipes/checks/debian/filenames/duplicate-news-files/eval/hints1
-rw-r--r--t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/debian/NEWS.Debian62
-rw-r--r--t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/filenames/news-has-debian-extension/eval/desc3
-rw-r--r--t/recipes/checks/debian/filenames/news-has-debian-extension/eval/hints1
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/orig/dummy1
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/desc2
-rw-r--r--t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/hints2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/debian/lintian-overrides6
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/debian/lintian-overrides6
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/debian/source/lintian-overrides2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/post-build7
-rw-r--r--t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/orig/Makefile18
-rw-r--r--t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/hints4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/debian/source/lintian-overrides1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in28
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd641
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd641
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/overrides2
-rwxr-xr-xt/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/lintian-overrides20
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/orig/foo.132
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/desc4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/hints2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/overrides-shown.lintian-overrides21
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/orig/foo.132
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/desc5
-rw-r--r--t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/hints2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/debian/lintian-overrides1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/debian/lintian-overrides1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/desc2
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/hints1
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in28
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd641
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd641
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc5
-rw-r--r--t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints1
-rw-r--r--t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/debian/maintscript4
-rw-r--r--t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/desc2
-rw-r--r--t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/hints3
-rwxr-xr-xt/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/bin/not-suitable-for-upstream3
-rw-r--r--t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/not-suitable-for-upstream.11
-rw-r--r--t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/desc9
-rw-r--r--t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/hints1
-rw-r--r--t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/debian/not-forwarded.11
-rw-r--r--t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/manual-pages/manpage-in-1/eval/desc3
-rw-r--r--t/recipes/checks/debian/manual-pages/manpage-in-1/eval/hints1
-rw-r--r--t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/debian/not-installed1
-rw-r--r--t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/desc3
-rw-r--r--t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch10
-rw-r--r--t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch20
-rw-r--r--t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/series5
-rw-r--r--t/recipes/checks/debian/patches/count/two-patches/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/count/two-patches/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/count/two-patches/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/debian/patches/applied-upstream.patch15
-rw-r--r--t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/dep3/applied-upstream/eval/desc5
-rw-r--r--t/recipes/checks/debian/patches/dep3/applied-upstream/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/debian/patches/silent.patch14
-rw-r--r--t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/debian/patches/not-forwarded.patch15
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-no/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-no/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/debian/patches/no-forwarding-needed.patch15
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/desc5
-rw-r--r--t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/debian/patches/13_document_modifiers.diff41
-rw-r--r--t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/dep3/origin-upstream/eval/desc5
-rw-r--r--t/recipes/checks/debian/patches/dep3/origin-upstream/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/debian/patches/no-forwarding-needed.patch17
-rw-r--r--t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/dep3/pseudo-header/eval/desc5
-rw-r--r--t/recipes/checks/debian/patches/dep3/pseudo-header/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/hints5
-rw-r--r--t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list12
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff7
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/hints5
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README.patches1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/series6
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-file11
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-other-file12
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/README1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-21
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/diff/README1
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/hints2
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/eval/hints2
-rw-r--r--t/recipes/checks/debian/patches/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/eval/hints2
-rw-r--r--t/recipes/checks/debian/patches/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/patches/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/eval/hints3
-rw-r--r--t/recipes/checks/debian/patches/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list12
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff7
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/patches/series0
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-empty-series/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-empty-series/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/diff/README1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/01_this_patch_is_ok7
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/hints2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-17
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/orig/a1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok7
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description5
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch8
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/04_template_description17
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/series4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README.patches1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/series6
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-file11
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-other-file12
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/README1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-21
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/diff/README1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/hints3
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok7
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/orig/README1
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/patches/wig-pen5
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/pre-build32
-rw-r--r--t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/hints6
-rw-r--r--t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/patches/series0
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/desc4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-17
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/orig/a1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok7
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description5
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch8
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/04_template_description17
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/series4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/desc3
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/hints3
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README.patches1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/series6
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-file11
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-other-file12
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/README1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-21
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/diff/README1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/hints6
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/some-change.patch6
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/orig/README1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/desc4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok7
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/orig/README1
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/doc-base9
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/add-readme8
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel6
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel28
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/series4
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/spelling6
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/quilt/spelling-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/doc-base9
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/add-readme8
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel6
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel28
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/series4
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/spelling6
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/patches/spelling-general/eval/hints1
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en.po241
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en_US.po223
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/templates.pot223
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/templates124
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/config-gen.pl31
-rwxr-xr-xt/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/gen-source.mk8
-rwxr-xr-xt/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/pre-build4
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/config8
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/templates.pot37
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/zh_CN.po64
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/templates22
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/desc2
-rw-r--r--t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/hints1
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/eval/hints12
-rw-r--r--t/recipes/checks/debian/po-debconf/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/English.po1
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/POTFILES.in3
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/de.po2
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/templates.pot30
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates10
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates.en_US5
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-general/eval/hints8
-rwxr-xr-xt/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/config9
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/po/en.po17
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/postinst7
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/templates10
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/desc2
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/config9
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/postinst7
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/templates10
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/hints3
-rw-r--r--t/recipes/checks/debian/readme/bad-email-format/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/readme/bad-email-format/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/readme/bad-email-format/eval/desc2
-rw-r--r--t/recipes/checks/debian/readme/bad-email-format/eval/hints1
-rw-r--r--t/recipes/checks/debian/readme/bad-email-format/eval/post-test1
-rw-r--r--t/recipes/checks/debian/readme/debian-readme-general/build-spec/debian/README.Debian11
-rw-r--r--t/recipes/checks/debian/readme/debian-readme-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/readme/debian-readme-general/eval/desc3
-rw-r--r--t/recipes/checks/debian/readme/debian-readme-general/eval/hints4
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/eval/hints1
-rw-r--r--t/recipes/checks/debian/readme/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/debian/readme/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/readme/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/debhelper-compat-old/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/debhelper-compat-old/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level3
-rwxr-xr-xt/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/debhelper-dh-compat/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/debhelper-dh-compat/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level3
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/control.in33
-rwxr-xr-xt/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/rules24
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level2
-rwxr-xr-xt/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/debian/rules17
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/hints7
-rwxr-xr-xt/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/hints4
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/hints0
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/desc6
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/compat.in1
-rwxr-xr-xt/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/rules76
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/fill-values6
-rwxr-xr-xt/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/desc3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/debian/rules6
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/control.in12
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/copyright10
-rwxr-xr-xt/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/rules100
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/fill-values8
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/orig/README9
-rwxr-xr-xt/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/eval/hints4
-rw-r--r--t/recipes/checks/debian/rules/generic-dh-make-2005/eval/post-test1
-rw-r--r--t/recipes/checks/debian/rules/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/debian/rules/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/debian/rules/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/rules/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/rules/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/debian/rules/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/debian/rules/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/generic-empty/eval/hints4
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/eval/hints4
-rw-r--r--t/recipes/checks/debian/rules/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/eval/hints2
-rw-r--r--t/recipes/checks/debian/rules/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/debian/rules/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/rules/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/legacy-fields/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/rules/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/eval/hints2
-rw-r--r--t/recipes/checks/debian/rules/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/rules/permissions-775/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/rules/permissions-775/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/rules/permissions-775/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/permissions-775/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/debian/rules37
-rw-r--r--t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/desc3
-rw-r--r--t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/hints4
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/debian/rules29
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-order/build-spec/debian/rules34
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-order/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-order/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-order/eval/hints5
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/debian/rules29
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/desc3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/debian/rules29
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-unused-target/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-dh-unused-target/eval/hints0
-rw-r--r--t/recipes/checks/debian/rules/rules-general/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/rules/rules-general/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debian/rules/rules-general/build-spec/debian/rules23
-rw-r--r--t/recipes/checks/debian/rules/rules-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/rules/rules-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-general/eval/hints8
-rwxr-xr-xt/recipes/checks/debian/rules/rules-ignore-define/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/rules/rules-ignore-define/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-ignore-define/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-ignore-define/eval/hints0
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/Makefile3
-rwxr-xr-xt/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/desc3
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/orig/Makefile3
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/compat.in1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/desc3
-rw-r--r--t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules3
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules.mk2
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/hints4
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-missing-targets/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/rules/rules-not-makefile/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/debian/rules/rules-not-makefile/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-not-makefile/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-not-makefile/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/desc5
-rw-r--r--t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/hints0
-rwxr-xr-xt/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/hints4
-rw-r--r--t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/hints6
-rwxr-xr-xt/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/debian/rules6
-rw-r--r--t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/hints6
-rw-r--r--t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/rules-special-variables/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-special-variables/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-special-variables/eval/hints2
-rw-r--r--t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real4
-rw-r--r--t/recipes/checks/debian/rules/rules-symlink/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/rules/rules-symlink/build-spec/pre-build6
-rw-r--r--t/recipes/checks/debian/rules/rules-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-symlink/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/hints1
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/desc2
-rw-r--r--t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/hints3
-rw-r--r--t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/rules/rules-variable-targets/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/rules/rules-variable-targets/eval/desc3
-rw-r--r--t/recipes/checks/debian/rules/rules-variable-targets/eval/hints0
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/control.in48
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/code.c9
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/hints4
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols4
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/rules15
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/Makefile14
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx14
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/hints2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/libbasic2.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/control.in25
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/libbasic2.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/control.in21
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/libbasic2.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/rules23
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/Makefile26
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/eval/desc3
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/binaries-multiarch/eval/post-test2
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/control.in33
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install1
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/Makefile24
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/eval/desc3
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/eval/hints48
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/legacy-libbaz/eval/hints20
-rwxr-xr-xt/recipes/checks/debian/shlibs/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/control.in57
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/rules19
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/hints11
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols7
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/Makefile27
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.c16
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/hints2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/Makefile24
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.c16
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/hints2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/foo.c9
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/get.c6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/code.c12
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/libexecbit1.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-exit/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile20
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.install2
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst6
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/control.in47
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install1
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst6
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install1
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst8
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm8
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install1
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm8
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols3
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/rules21
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/Makefile22
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/app2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/hints3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile19
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c10
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/desc3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/code.c10
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/code.c10
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack9
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.shlibs1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/orig/some-lib1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/Makefile21
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/hints1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/Makefile.in110
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/symbols3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/Makefile26
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/non-pic.c11
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/desc3
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/post-test1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/control.in48
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libesym1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.symbols10
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libsym1.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/nolibrary.install1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/rules17
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/someconf.conf2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/desc2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/hints9
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/control.in15
-rwxr-xr-xt/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/symbols2
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/triggers1
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/Makefile15
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/foo.c24
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/desc5
-rw-r--r--t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/hints2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-classifications/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/desc2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/hints1
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/debian/source/options2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/desc2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/hints3
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/debian/source/formt1
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/pre-build2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/hints4
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/patches/series11
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/source/git-patches11
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/orig/an_empty_file0
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/desc2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/hints2
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/debian/source/git-patches11
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/desc4
-rw-r--r--t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/hints1
-rw-r--r--t/recipes/checks/debian/source-dir/source-format-1.0/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/source-dir/source-format-1.0/eval/desc2
-rw-r--r--t/recipes/checks/debian/source-dir/source-format-1.0/eval/hints2
-rw-r--r--t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/debian/source/include-binaries3
-rw-r--r--t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/desc2
-rw-r--r--t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/hints1
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/somepackage.substvars1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-diff/build-spec/pre-build34
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-diff/eval/desc3
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-diff/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-native/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-native/build-spec/pre-build32
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-native/eval/desc2
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-native/eval/hints1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/README.source1
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/somepackage.substvars1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/pre-build34
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-quilt/eval/desc3
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-quilt/eval/hints2
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/patches/wig-pen5
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/pre-build32
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/desc2
-rw-r--r--t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/hints1
-rw-r--r--t/recipes/checks/debian/symbols/package-placeholder/build-spec/debian/package-placeholder.symbols66
-rw-r--r--t/recipes/checks/debian/symbols/package-placeholder/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/symbols/package-placeholder/eval/desc2
-rw-r--r--t/recipes/checks/debian/symbols/package-placeholder/eval/hints1
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/orig/dummy1
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/desc2
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/hints22
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/README.source6
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/changelog.in9
-rwxr-xr-xt/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/desc2
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/hints4
-rwxr-xr-xt/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/desc2
-rw-r--r--t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/debian/upstream/metadata4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/bogus-field/eval/desc4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/bogus-field/eval/hints5
-rw-r--r--t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/debian/upstream1
-rw-r--r--t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/debian/upstream/metadata7
-rw-r--r--t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/fields-present/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/fields-present/eval/hints7
-rw-r--r--t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/debian/upstream/metadata2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/in-native-source/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/in-native-source/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/debian/upstream/metadata2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/hints2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/pre-build2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/pre-build11
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/hints2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/debian/upstream/metadata5
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/hints7
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/debian/upstream/metadata6
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/hints7
-rw-r--r--t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/debian/upstream/metadata5
-rw-r--r--t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/hints2
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/debian/upstream/signing-key.asc160
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/desc5
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/debian/upstream/signing-key.asc0
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/debian/upstream/signing-key.asc101
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/desc4
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream-signing-key.pgp52
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream/signing-key.asc52
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/watch5
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/debian/upstream/signing-key.asc160
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/desc2
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/hints1
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/debian/upstream/signing-key.asc153
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/desc4
-rw-r--r--t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/hints1
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/a-file1
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/install1
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-install/eval/desc4
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-install/eval/hints1
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/a-file1
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/links1
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-links/eval/desc4
-rw-r--r--t/recipes/checks/debian/variables/build-multiarch-in-links/eval/hints1
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/debian/version-substvars/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/debian/control.in62
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-general/eval/desc2
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-general/eval/hints7
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/debian/control.in57
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/desc3
-rw-r--r--t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/hints8
-rw-r--r--t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/fill-values6
-rwxr-xr-xt/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/pre-build18
-rw-r--r--t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/desc3
-rw-r--r--t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/filenamemangle/build-spec/debian/watch5
-rw-r--r--t/recipes/checks/debian/watch/filenamemangle/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/filenamemangle/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/filenamemangle/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/hints4
-rw-r--r--t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/watch/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/eval/hints7
-rw-r--r--t/recipes/checks/debian/watch/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/comments-only/build-spec/debian/watch2
-rw-r--r--t/recipes/checks/debian/watch/standard/comments-only/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/comments-only/eval/desc7
-rw-r--r--t/recipes/checks/debian/watch/standard/comments-only/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/eval/hints3
-rw-r--r--t/recipes/checks/debian/watch/standard/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/debian/watch/standard/no-version/build-spec/debian/watch1
-rw-r--r--t/recipes/checks/debian/watch/standard/no-version/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/no-version/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/no-version/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/version-1/build-spec/debian/watch2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-1/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/version-1/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-1/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/version-2/build-spec/debian/watch2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-2/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/version-2/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-2/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-3/build-spec/debian/watch2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-3/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/version-3/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-3/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-4/build-spec/debian/watch2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-4/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/version-4/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-4/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/version-5/build-spec/debian/watch2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-5/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/standard/version-5/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/standard/version-5/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/changelog.in14
-rw-r--r--t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/upstream/signing-key.asc52
-rw-r--r--t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/watch32
-rw-r--r--t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/standard/watch-file-general/eval/desc3
-rw-r--r--t/recipes/checks/debian/watch/standard/watch-file-general/eval/hints4
-rw-r--r--t/recipes/checks/debian/watch/two-upstream-components/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/debian/watch/two-upstream-components/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/two-upstream-components/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/two-upstream-components/eval/hints3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/watch4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-bug-765995/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-bug-765995/eval/hints3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/changelog.in14
-rw-r--r--t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/upstream/signing-key.asc52
-rw-r--r--t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/watch32
-rw-r--r--t/recipes/checks/debian/watch/watch-file-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-general/eval/desc3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-general/eval/hints24
-rw-r--r--t/recipes/checks/debian/watch/watch-file-native/build-spec/debian/watch5
-rw-r--r--t/recipes/checks/debian/watch/watch-file-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-native/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-native/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/changelog.in14
-rw-r--r--t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/watch3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/watch5
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/desc4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/debian/watch3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/desc4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/debian/watch3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-prerelease/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-prerelease/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/debian/watch3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/hints2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/debian/watch4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/desc4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/hints1
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-should-mangle/eval/hints3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-template/build-spec/debian/watch3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-template/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debian/watch/watch-file-template/eval/desc2
-rw-r--r--t/recipes/checks/debian/watch/watch-file-template/eval/hints3
-rw-r--r--t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in36
-rw-r--r--t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc2
-rw-r--r--t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints1
-rw-r--r--t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debug/automatic/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debug/automatic/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debug/automatic/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in36
-rw-r--r--t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values4
-rw-r--r--t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc2
-rw-r--r--t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints1
-rw-r--r--t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/debug/obsolete/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debug/obsolete/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/debug/obsolete/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/debug/obsolete/fields-general/build-spec/debian/control.in46
-rw-r--r--t/recipes/checks/debug/obsolete/fields-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/debug/obsolete/fields-general/eval/desc2
-rw-r--r--t/recipes/checks/debug/obsolete/fields-general/eval/hints1
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/debug/obsolete/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/debug/obsolete/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-policy/build-spec/debian/install2
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-policy/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/etc/dbus-1/system.d/send-destination.conf14
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/usr/share/dbus-1/system.d/at-console.conf15
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-policy/eval/desc2
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-policy/eval/hints9
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/build-spec/debian/install1
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/gvfs-daemon.service3
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/org.mpris.MediaPlayer2.mpd.service3
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service5
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/this-name-cannot-work.service4
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/eval/desc2
-rw-r--r--t/recipes/checks/desktop/dbus/dbus-services/eval/hints2
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/control.in87
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-bad.install2
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-good-42.install2
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-perfect-42.install1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-0.install1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-dev.install3
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-0.install1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-dev.install2
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/Makefile7
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Bad-23.typelib1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Good-42.typelib1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/GoodExtras-42.typelib1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-0-dummy0
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-dev-dummy0
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Bad-23.gir1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Good-42.gir1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/GoodExtras-42.gir1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Perfect-42.gir1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/eval/desc3
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/eval/hints10
-rw-r--r--t/recipes/checks/desktop/gnome/gir/gir/eval/post-test1
-rw-r--r--t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/debian/control.in29
-rw-r--r--t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/desc2
-rw-r--r--t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/hints1
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/desktop/gnome/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/desktop/icons/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/desktop/icons/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/desktop/icons/files-general/eval/desc3
-rw-r--r--t/recipes/checks/desktop/icons/files-general/eval/hints4
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/control.in31
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/files-fonts.install14
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.install4
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.links1
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/4shadow.ttf2
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.otf1
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.ttf1
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/foo.pcf1
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/eval/desc2
-rw-r--r--t/recipes/checks/desktop/x11/files-fonts/eval/hints7
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/debian/install21
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/desktop/x11/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-install.conf2
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/desktop/x11/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/desktop/x11/files-general/eval/desc3
-rw-r--r--t/recipes/checks/desktop/x11/files-general/eval/hints4
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install1
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm0
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/desc4
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/hints1
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/install1
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/fill-values3
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm0
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/desc2
-rw-r--r--t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/hints1
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/eval/hints3
-rw-r--r--t/recipes/checks/desktop/x11/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/README.source5
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/control.in22
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright_hints1
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/fill-values3
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/desc2
-rw-r--r--t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/hints6
-rw-r--r--t/recipes/checks/dh-make/cruft-readme-source/build-spec/debian/README.source5
-rw-r--r--t/recipes/checks/dh-make/cruft-readme-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/dh-make/cruft-readme-source/eval/desc2
-rw-r--r--t/recipes/checks/dh-make/cruft-readme-source/eval/hints1
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/hints17
-rw-r--r--t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/documentation/devhelp/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/orig/devhelp/index.devhelp1
-rw-r--r--t/recipes/checks/documentation/devhelp/standard/version-1/eval/desc2
-rw-r--r--t/recipes/checks/documentation/devhelp/standard/version-1/eval/hints1
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/Doxyfile2363
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css1440
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.pngbin0 -> 3778 bytes
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/files.html98
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/index.html87
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css60
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/doxygen.sty1
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/files.tex4
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/refman.tex153
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/hello.c10
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/desc2
-rw-r--r--t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/hints4
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/Doxyfile2363
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css1440
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.pngbin0 -> 3778 bytes
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js97
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html98
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html103
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html103
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html150
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gzbin0 -> 52 bytes
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md51
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.pngbin0 -> 15147 bytes
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html87
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css60
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/hello.c10
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/desc2
-rw-r--r--t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/hints6
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/documentation/examples/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.docs3
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.init21
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.install9
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.manpages1
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.install1
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.manpages1
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/rules31
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/README1
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/read-only1
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/sample.ali1
-rwxr-xr-xt/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/script20
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/eval/desc2
-rw-r--r--t/recipes/checks/documentation/files-bad-perm-owner/eval/hints1
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/Doxyfile2363
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css1440
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.pngbin0 -> 3778 bytes
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js97
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html98
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html103
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html103
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html150
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gzbin0 -> 52 bytes
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md51
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.pngbin0 -> 15147 bytes
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html87
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css60
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/hello.c10
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/eval/desc2
-rw-r--r--t/recipes/checks/documentation/files-doxygen-documentation/eval/hints2
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/documentation/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/documentation/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/documentation/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/documentation/files-general/eval/desc3
-rw-r--r--t/recipes/checks/documentation/files-general/eval/hints1
-rw-r--r--t/recipes/checks/documentation/files-package-contains-foo/build-spec/debian/rules73
-rw-r--r--t/recipes/checks/documentation/files-package-contains-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/files-package-contains-foo/eval/desc2
-rw-r--r--t/recipes/checks/documentation/files-package-contains-foo/eval/hints8
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/debian/control.in53
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/debian/python-kinterbasdb.install7
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/debian/rules19
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/orig/Makefile7
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/orig/lib.c4
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/orig/objects.inv199
-rw-r--r--t/recipes/checks/documentation/files-python-general/build-spec/orig/python.egg1
-rw-r--r--t/recipes/checks/documentation/files-python-general/eval/desc3
-rw-r--r--t/recipes/checks/documentation/files-python-general/eval/hints1
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs2
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install6
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/fill-values4
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/Makefile11
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/README1
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/misc.txt1
-rwxr-xr-xt/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-19
-rwxr-xr-xt/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-23
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test.c13
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/desc2
-rw-r--r--t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/hints2
-rw-r--r--t/recipes/checks/documentation/files-zero-byte-doc/build-spec/fill-values4
-rw-r--r--t/recipes/checks/documentation/files-zero-byte-doc/build-spec/orig/Makefile29
-rw-r--r--t/recipes/checks/documentation/files-zero-byte-doc/eval/desc3
-rw-r--r--t/recipes/checks/documentation/files-zero-byte-doc/eval/hints6
-rw-r--r--t/recipes/checks/documentation/files-zero-byte-doc/eval/post-test2
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/documentation/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/documentation/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/documentation/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/documentation/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/documentation/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/documentation/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/eval/hints9
-rw-r--r--t/recipes/checks/documentation/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/documentation/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/documentation/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/documentation/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/documentation/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/documentation/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/documentation/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/documentation/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/documentation/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/documentation/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/documentation/manual/acute-accent/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/acute-accent/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/acute-accent/build-spec/orig/man/hosts_access.5405
-rw-r--r--t/recipes/checks/documentation/manual/acute-accent/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/acute-accent/eval/hints34
-rw-r--r--t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/bin/sbin-binary3
-rw-r--r--t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/undocumented.711
-rw-r--r--t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bad-so.11
-rwxr-xr-xt/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bin/bad-so3
-rw-r--r--t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/combined-manpage/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/bin/mount.cifs3
-rw-r--r--t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/man/mount.cifs.859
-rw-r--r--t/recipes/checks/documentation/manual/combined-manpage/eval/desc6
-rw-r--r--t/recipes/checks/documentation/manual/combined-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary3
-rw-r--r--t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary.111
-rw-r--r--t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/debian/install2
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad3
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad.110
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/debian/install2
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telekinetic3
-rwxr-xr-xt/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telepathic3
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-manpage/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/executable-without-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/documentation/manual/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/documentation/manual/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/documentation/manual/files-general/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/files-general/eval/hints2
-rw-r--r--t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/bin/mentions-other-standard3
-rw-r--r--t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/mentions-other-standard.1p17
-rw-r--r--t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/Makefile12
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/bin/bad-so3
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/eval/hints5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/eval/hints5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/documentation/manual/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/eval/hints16
-rw-r--r--t/recipes/checks/documentation/manual/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/debian/links1
-rw-r--r--t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bad-whatis.13
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bin/bad-whatis3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/bin/program3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/program.162
-rw-r--r--t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-empty/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/bin/empty-manpage3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/empty-manpage.10
-rw-r--r--t/recipes/checks/documentation/manual/manpage-empty/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/manpage-empty/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/bin/errors-from-man3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/errors-from-man.1p18
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/bin/errors-from-pod2man3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/errors-from-pod2man.1p24
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/README.13
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/bin/README3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-generic-name/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-generic-name/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/install2
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/bin/test-utf8-chars3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/man/test-utf8-chars.1p9
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/test-utf8-chars.1p10
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.111
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/bin/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/bin/pretend-compress3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/pretend-compress.111
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/bin/not-compressed3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/not-compressed.111
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-compressed/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/orig/not-max-compress.611
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/orig/python-traceback.542
-rw-r--r--t/recipes/checks/documentation/manual/manpage-python-traceback/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-python-traceback/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/orig/section.311
-rw-r--r--t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/bin/useless-whatis3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/useless-whatis.144
-rw-r--r--t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/orig/example.man11
-rw-r--r--t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho-data.manpages1
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho.install1
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/Makefile7
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/pecho25
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-dependencies/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/install7
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/links12
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/documentation/manual/manpages-general/build-spec/debian/rules37
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin-x/rstartd3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/binary-without-english-manpage3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary3
-rwxr-xr-xt/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary-alt3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-de/binary-without-english-manpage.10
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-x/rstartd.1x62
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/README.13
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/bad-so.11
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/include.330
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/included.310
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/program.162
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-latin1-chars.1p10
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-utf8-chars.1p10
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.1p24
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.3p16
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/true.144
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-bin-binary.13
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-games-binary.60
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/pod/simple.pod18
-rwxr-xr-xt/recipes/checks/documentation/manual/manpages-general/build-spec/orig/sbin/usr-sbin-binary3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/eval/hints32
-rw-r--r--t/recipes/checks/documentation/manual/manpages-general/eval/post-test3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/debian/install2
-rw-r--r--t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/Makefile14
-rw-r--r--t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/pecho25
-rw-r--r--t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/hints2
-rw-r--r--t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/Makefile8
-rw-r--r--t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/script11
-rw-r--r--t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bad-spelling.116
-rwxr-xr-xt/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bin/bad-spelling3
-rw-r--r--t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/desc3
-rw-r--r--t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/hints1
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/install3
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/bin/pwd3
-rwxr-xr-xt/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/libexec/private-executable3
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/addpart.840
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/lsmod.859
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/private-executable.810
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/pwd.148
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/statfs.128
-rwxr-xr-xt/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/sbin/addpart3
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/eval/desc2
-rw-r--r--t/recipes/checks/documentation/manual/surplus-manpage/eval/hints2
-rwxr-xr-xt/recipes/checks/documentation/texinfo/infofiles-general/build-spec/debian/rules27
-rw-r--r--t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/bar.info2
-rw-r--r--t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/foo.info6
-rw-r--r--t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/w-image.infobin0 -> 209 bytes
-rw-r--r--t/recipes/checks/documentation/texinfo/infofiles-general/eval/desc3
-rw-r--r--t/recipes/checks/documentation/texinfo/infofiles-general/eval/hints9
-rw-r--r--t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/control.in20
-rw-r--r--t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/install1
-rw-r--r--t/recipes/checks/documentation/udeb-with-doc/build-spec/fill-values4
-rw-r--r--t/recipes/checks/documentation/udeb-with-doc/build-spec/orig/some-doc1
-rw-r--r--t/recipes/checks/documentation/udeb-with-doc/eval/desc2
-rw-r--r--t/recipes/checks/documentation/udeb-with-doc/eval/hints1
-rw-r--r--t/recipes/checks/documentation/unpack-numerical-owner/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-control8
-rwxr-xr-xt/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-data7
-rw-r--r--t/recipes/checks/documentation/unpack-numerical-owner/eval/desc3
-rw-r--r--t/recipes/checks/documentation/unpack-numerical-owner/eval/hints0
-rw-r--r--t/recipes/checks/emacs/elpa/elpa/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/emacs/elpa/elpa/build-spec/debian/elpa-foo.elpa1
-rwxr-xr-xt/recipes/checks/emacs/elpa/elpa/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/emacs/elpa/elpa/build-spec/fill-values4
-rw-r--r--t/recipes/checks/emacs/elpa/elpa/build-spec/orig/foo.el16
-rw-r--r--t/recipes/checks/emacs/elpa/elpa/eval/desc4
-rw-r--r--t/recipes/checks/emacs/elpa/elpa/eval/hints0
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-compat1
-rwxr-xr-xt/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-install44
-rwxr-xr-xt/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-remove15
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-startup24
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/install1
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/build-spec/fill-values3
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/build-spec/orig/foo.el1
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/eval/desc2
-rw-r--r--t/recipes/checks/emacs/elpa/emacsen-common/eval/hints1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.docs3
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.init21
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.install9
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.manpages1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.install1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.manpages1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/rules31
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/fill-values3
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/README1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/read-only1
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/sample.ali1
-rwxr-xr-xt/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/script20
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/eval/desc2
-rw-r--r--t/recipes/checks/emacs/files-bad-perm-owner/eval/hints1
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/orig/examples/testsuite1
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/desc4
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/hints0
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/orig/examples/testsuite1
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/desc4
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/hints0
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/fill-values4
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/orig/examples/testsuite1
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/desc2
-rw-r--r--t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/hints1
-rw-r--r--t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/fill-values3
-rw-r--r--t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/desc2
-rw-r--r--t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/hints1
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/executable/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/executable/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/executable/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/executable/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/executable/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/executable/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/executable/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/executable/legacy-filenames/eval/hints2
-rw-r--r--t/recipes/checks/executable/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/debian/rules111
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpfoo7
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/orig/py3.Xfoo4
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/orig/py3foo4
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/executable/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/executable/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/executable/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/executable/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/executable/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/debian/install1
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/executable/scripts-exec/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/fill-values3
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/orig/01-normal-script3
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/orig/02-no-exec-script3
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/orig/03-hardlink-script1
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/orig/04-not-a-script2
-rw-r--r--t/recipes/checks/executable/scripts-exec/build-spec/orig/script.pod18
-rw-r--r--t/recipes/checks/executable/scripts-exec/eval/desc2
-rw-r--r--t/recipes/checks/executable/scripts-exec/eval/hints1
-rw-r--r--t/recipes/checks/fields/architecture/fields-architecture/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/architecture/fields-architecture/build-spec/orig/Makefile5
-rw-r--r--t/recipes/checks/fields/architecture/fields-architecture/eval/desc4
-rw-r--r--t/recipes/checks/fields/architecture/fields-architecture/eval/hints1
-rw-r--r--t/recipes/checks/fields/architecture/fields-aspell/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/architecture/fields-aspell/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/architecture/fields-aspell/eval/desc2
-rw-r--r--t/recipes/checks/fields/architecture/fields-aspell/eval/hints1
-rw-r--r--t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/orig/Makefile5
-rw-r--r--t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/desc2
-rw-r--r--t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/hints1
-rw-r--r--t/recipes/checks/fields/architecture/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/architecture/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/architecture/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/architecture/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/architecture/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/architecture/fields-general-bad/eval/hints2
-rw-r--r--t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/DEBIAN/control.in11
-rw-r--r--t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/hints1
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/control.in24
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/watch1
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/orig/README1
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/desc3
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/hints0
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/debian/watch1
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/dpkg-overrides1
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/orig/README1
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/desc2
-rw-r--r--t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/hints1
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/desc4
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/hints0
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/desc2
-rw-r--r--t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/hints1
-rw-r--r--t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fields/bugs/fields-redundant/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/bugs/fields-redundant/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/fields/bugs/fields-redundant/eval/desc2
-rw-r--r--t/recipes/checks/fields/bugs/fields-redundant/eval/hints1
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/eval/hints2
-rw-r--r--t/recipes/checks/fields/bugs/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/fields/built-using/fields-built-using/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/built-using/fields-built-using/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/built-using/fields-built-using/eval/desc2
-rw-r--r--t/recipes/checks/fields/built-using/fields-built-using/eval/hints1
-rw-r--r--t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/fill-values6
-rwxr-xr-xt/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/post-build7
-rw-r--r--t/recipes/checks/fields/checksums/no-sha256-checksum/eval/desc2
-rw-r--r--t/recipes/checks/fields/checksums/no-sha256-checksum/eval/hints1
-rw-r--r--t/recipes/checks/fields/deb822/native-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/deb822/native-source/eval/desc2
-rw-r--r--t/recipes/checks/fields/deb822/native-source/eval/hints1
-rw-r--r--t/recipes/checks/fields/deb822/native-source/eval/post-test2
-rw-r--r--t/recipes/checks/fields/description/description-empty-paragraph/build-spec/debian/control.in41
-rw-r--r--t/recipes/checks/fields/description/description-empty-paragraph/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-empty-paragraph/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/description-empty-paragraph/eval/hints2
-rw-r--r--t/recipes/checks/fields/description/description-general/build-spec/debian/control.in155
-rw-r--r--t/recipes/checks/fields/description/description-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-general/eval/desc4
-rw-r--r--t/recipes/checks/fields/description/description-general/eval/hints28
-rw-r--r--t/recipes/checks/fields/description/description-homepage/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/description/description-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/description-homepage/eval/hints1
-rw-r--r--t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/debian/control.in25
-rw-r--r--t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-mentions-planned-features/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/description-mentions-planned-features/eval/hints8
-rw-r--r--t/recipes/checks/fields/description/description-perl/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-perl.install1
-rw-r--r--t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-proper-perl.install1
-rw-r--r--t/recipes/checks/fields/description/description-perl/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description.pm5
-rw-r--r--t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description/Proper.pm5
-rw-r--r--t/recipes/checks/fields/description/description-perl/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/description-perl/eval/hints1
-rw-r--r--t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/debian/control.in117
-rw-r--r--t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/hints5
-rw-r--r--t/recipes/checks/fields/description/description-wording/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/description/description-wording/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/description-wording/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/description-wording/eval/hints1
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/fields/description/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/eval/hints2
-rw-r--r--t/recipes/checks/fields/description/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/fields/description/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/eval/hints4
-rw-r--r--t/recipes/checks/fields/description/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/fields/description/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/eval/hints1
-rw-r--r--t/recipes/checks/fields/description/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/fields/description/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/fields/description/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/fields/description/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/fields/description/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/eval/hints2
-rw-r--r--t/recipes/checks/fields/description/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/fields/description/spelling-multiword/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/fields/description/spelling-multiword/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/spelling-multiword/eval/desc2
-rw-r--r--t/recipes/checks/fields/description/spelling-multiword/eval/hints5
-rw-r--r--t/recipes/checks/fields/description/spelling-package-name/build-spec/debian/control.in20
-rw-r--r--t/recipes/checks/fields/description/spelling-package-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/spelling-package-name/eval/desc4
-rw-r--r--t/recipes/checks/fields/description/spelling-package-name/eval/hints0
-rw-r--r--t/recipes/checks/fields/description/squeezed-comma/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/description/squeezed-comma/eval/desc3
-rw-r--r--t/recipes/checks/fields/description/squeezed-comma/eval/hints1
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-backport/eval/desc8
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-backport/eval/hints2
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists23
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-stable/eval/desc3
-rw-r--r--t/recipes/checks/fields/distribution/changelog-file-stable/eval/hints0
-rw-r--r--t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/desc3
-rw-r--r--t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/hints1
-rw-r--r--t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/test.changes.in16
-rw-r--r--t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/hints1
-rw-r--r--t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/test.changes.in16
-rw-r--r--t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/hints1
-rw-r--r--t/recipes/checks/fields/distribution/changes-unreleased/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/distribution/changes-unreleased/build-spec/test.changes.in16
-rw-r--r--t/recipes/checks/fields/distribution/changes-unreleased/eval/desc2
-rw-r--r--t/recipes/checks/fields/distribution/changes-unreleased/eval/hints1
-rw-r--r--t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/desc2
-rw-r--r--t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/hints1
-rw-r--r--t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/desc3
-rw-r--r--t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/hints6
-rw-r--r--t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/desc5
-rw-r--r--t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/hints0
-rw-r--r--t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/desc5
-rw-r--r--t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/hints0
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/desc2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/hints2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/hints2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/hints2
-rw-r--r--t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/fields/empty/empty-section/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/empty/empty-section/eval/desc2
-rw-r--r--t/recipes/checks/fields/empty/empty-section/eval/hints1
-rw-r--r--t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/debian/control.in21
-rw-r--r--t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/essential/fields-essential-yes-source/eval/desc5
-rw-r--r--t/recipes/checks/fields/essential/fields-essential-yes-source/eval/hints0
-rw-r--r--t/recipes/checks/fields/essential/fields-essential/build-spec/debian/control.in28
-rwxr-xr-xt/recipes/checks/fields/essential/fields-essential/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/essential/fields-essential/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/essential/fields-essential/eval/desc2
-rw-r--r--t/recipes/checks/fields/essential/fields-essential/eval/hints4
-rw-r--r--t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/fields/essential/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/fields/essential/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/essential/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/essential/legacy-fields/eval/hints2
-rw-r--r--t/recipes/checks/fields/essential/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/fields/format/changes-missing-format/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/format/changes-missing-format/build-spec/test.changes.in11
-rw-r--r--t/recipes/checks/fields/format/changes-missing-format/eval/desc2
-rw-r--r--t/recipes/checks/fields/format/changes-missing-format/eval/hints1
-rw-r--r--t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/patches/wig-pen5
-rwxr-xr-xt/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/pre-build32
-rw-r--r--t/recipes/checks/fields/format/cruft-general-wig-pen/eval/desc2
-rw-r--r--t/recipes/checks/fields/format/cruft-general-wig-pen/eval/hints1
-rw-r--r--t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-cran-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-cran-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-general/build-spec/debian/control.in46
-rw-r--r--t/recipes/checks/fields/homepage/fields-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-general/eval/hints5
-rw-r--r--t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-github-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-github-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-homepage/eval/desc3
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-homepage/eval/hints1
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/hints2
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/eval/hints4
-rw-r--r--t/recipes/checks/fields/homepage/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/eval/hints3
-rw-r--r--t/recipes/checks/fields/homepage/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/desc2
-rw-r--r--t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/hints1
-rw-r--r--t/recipes/checks/fields/length/depends-field-too-long/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/length/depends-field-too-long/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/length/depends-field-too-long/eval/desc3
-rw-r--r--t/recipes/checks/fields/length/depends-field-too-long/eval/hints1
-rw-r--r--t/recipes/checks/fields/length/provides-field-too-long/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/length/provides-field-too-long/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/length/provides-field-too-long/eval/desc3
-rw-r--r--t/recipes/checks/fields/length/provides-field-too-long/eval/hints1
-rw-r--r--t/recipes/checks/fields/mail-address/alioth-list/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/alioth-list/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/alioth-list/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-localhost/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-localhost/eval/hints3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-malformed/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-malformed/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-no-name/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-no-name/eval/hints3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root-email/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root-email/eval/hints3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changed-by-root/eval/hints3
-rw-r--r--t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/debian/changelog.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/mail-address/changelog-file-backport/eval/desc6
-rw-r--r--t/recipes/checks/fields/mail-address/changelog-file-backport/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists23
-rw-r--r--t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/test.changes.in12
-rw-r--r--t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/desc3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/test.changes.in16
-rw-r--r--t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/test.changes.in16
-rw-r--r--t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/referenced-files/__some-file__1
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/test.changes.in18
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__1
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/test.changes.in18
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in36
-rw-r--r--t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints6
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/test.changes.in9
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-fields/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/test.changes.in11
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-format/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-missing-format/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/test.changes.in16
-rw-r--r--t/recipes/checks/fields/mail-address/changes-unreleased/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-unreleased/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/post-build.in3
-rw-r--r--t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/desc3
-rw-r--r--t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/desc5
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/hints10
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/debian/control.in22
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/hints16
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-maintainer/eval/hints8
-rw-r--r--t/recipes/checks/fields/mail-address/fields-no-human-maintainer/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/hints8
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/hints8
-rw-r--r--t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/hints10
-rw-r--r--t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/debian/control.in23
-rw-r--r--t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/mail-address/fields-uploaders/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/fields-uploaders/eval/hints10
-rw-r--r--t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/mail-address/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/fields/mail-address/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/fields/mail-address/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/generic-empty/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/java-team-fp/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/java-team-fp/eval/desc3
-rw-r--r--t/recipes/checks/fields/mail-address/java-team-fp/eval/hints2
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/eval/hints20
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/hints8
-rw-r--r--t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/post-build.in7
-rw-r--r--t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/hints5
-rw-r--r--t/recipes/checks/fields/mail-address/missing-closing-bracket/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/desc5
-rw-r--r--t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/hints3
-rw-r--r--t/recipes/checks/fields/mail-address/qa-group-fp/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/qa-group-fp/eval/desc4
-rw-r--r--t/recipes/checks/fields/mail-address/qa-group-fp/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/right-to-left-override/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/right-to-left-override/eval/desc3
-rw-r--r--t/recipes/checks/fields/mail-address/right-to-left-override/eval/hints4
-rw-r--r--t/recipes/checks/fields/mail-address/two-maintainers/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/two-maintainers/eval/desc2
-rw-r--r--t/recipes/checks/fields/mail-address/two-maintainers/eval/hints12
-rw-r--r--t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/watch5
-rw-r--r--t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/desc3
-rw-r--r--t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/hints4
-rw-r--r--t/recipes/checks/fields/maintainer/alioth-list/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/maintainer/alioth-list/eval/desc2
-rw-r--r--t/recipes/checks/fields/maintainer/alioth-list/eval/hints1
-rw-r--r--t/recipes/checks/fields/maintainer/fields-no-human-maintainer/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/desc2
-rw-r--r--t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/hints1
-rw-r--r--t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/desc2
-rw-r--r--t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/hints1
-rw-r--r--t/recipes/checks/fields/maintainer/java-team-fp/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/maintainer/java-team-fp/eval/desc3
-rw-r--r--t/recipes/checks/fields/maintainer/java-team-fp/eval/hints1
-rw-r--r--t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/post-build.in7
-rw-r--r--t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/desc2
-rw-r--r--t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/hints1
-rw-r--r--t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/desc4
-rw-r--r--t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/hints1
-rw-r--r--t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/post-build.in7
-rw-r--r--t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/desc5
-rw-r--r--t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/hints1
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/fonts-fields-font-not-multiarch-foreign.install2
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font-multiarch-test.ttf2
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font.ttf1
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/desc2
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/hints1
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/DEBIAN/control.in12
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/desc2
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/hints1
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in28
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd641
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd641
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc3
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints1
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/DEBIAN/control.in12
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/desc2
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/hints1
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/debian/control.in20
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/orig/Makefile5
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/desc5
-rw-r--r--t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/hints0
-rw-r--r--t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/post-build7
-rw-r--r--t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/desc3
-rw-r--r--t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/hints1
-rw-r--r--t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fields/origin/fields-redundant/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/origin/fields-redundant/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/fields/origin/fields-redundant/eval/desc2
-rw-r--r--t/recipes/checks/fields/origin/fields-redundant/eval/hints2
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/fields/origin/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/eval/hints3
-rw-r--r--t/recipes/checks/fields/origin/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/debian/control.in25
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/desc3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/hints18
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in33
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/desc3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/control.in81
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-general/eval/hints30
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/desc3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/orig/Makefile5
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/desc5
-rw-r--r--t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/hints0
-rw-r--r--t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general-bad/eval/hints4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general/build-spec/debian/control.in46
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-general/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/orig/Makefile5
-rw-r--r--t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/control.in37
-rw-r--r--t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-java/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-java/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-java/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-java/eval/hints9
-rw-r--r--t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/hints2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/control.in52
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/build-spec/orig/some-file.txt0
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-mua/eval/hints6
-rw-r--r--t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/debian/control.in22
-rw-r--r--t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/hints5
-rw-r--r--t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/DEBIAN/control.in12
-rw-r--r--t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/hints2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/debian/control.in14
-rw-r--r--t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/control.in32
-rw-r--r--t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/hints4
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-fields/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/control43
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/rules52
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/eval/hints39
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/fields/package-relations/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/eval/hints2
-rw-r--r--t/recipes/checks/fields/package-relations/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list12
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff7
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/README.source1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README.patches1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/series6
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-file11
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-other-file12
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/README1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-21
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/diff/README1
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/hints1
-rw-r--r--t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/package-type/explicit-type-deb/eval/desc3
-rw-r--r--t/recipes/checks/fields/package-type/explicit-type-deb/eval/hints1
-rw-r--r--t/recipes/checks/fields/package/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/package/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/package/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/package/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/package/fields-general-bad/eval/hints2
-rw-r--r--t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/desc2
-rw-r--r--t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/hints1
-rw-r--r--t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/control.in55
-rw-r--r--t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/desc2
-rw-r--r--t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/hints2
-rw-r--r--t/recipes/checks/fields/priority/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/priority/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/priority/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/priority/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/priority/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/priority/fields-general-bad/eval/hints1
-rw-r--r--t/recipes/checks/fields/priority/priority-extra/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/priority/priority-extra/eval/desc2
-rw-r--r--t/recipes/checks/fields/priority/priority-extra/eval/hints1
-rw-r--r--t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/test.changes.in9
-rw-r--r--t/recipes/checks/fields/recommended/changes-missing-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/recommended/changes-missing-fields/eval/hints1
-rw-r--r--t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/fields/recommended/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/recommended/control-file-general/eval/desc5
-rw-r--r--t/recipes/checks/fields/recommended/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/fields/recommended/fields-general-missing/build-spec/DEBIAN/control.in8
-rw-r--r--t/recipes/checks/fields/recommended/fields-general-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/recommended/fields-general-missing/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/recommended/fields-general-missing/eval/desc4
-rw-r--r--t/recipes/checks/fields/recommended/fields-general-missing/eval/hints1
-rw-r--r--t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/fields/recommended/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/recommended/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/recommended/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/fields/recommended/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/fields/recommended/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/fields/recommended/generic-empty/eval/hints4
-rw-r--r--t/recipes/checks/fields/required/changes-missing-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/required/changes-missing-fields/build-spec/test.changes.in9
-rw-r--r--t/recipes/checks/fields/required/changes-missing-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/required/changes-missing-fields/eval/hints4
-rw-r--r--t/recipes/checks/fields/required/fields-general-missing/build-spec/DEBIAN/control.in8
-rw-r--r--t/recipes/checks/fields/required/fields-general-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/required/fields-general-missing/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/required/fields-general-missing/eval/desc2
-rw-r--r--t/recipes/checks/fields/required/fields-general-missing/eval/hints4
-rw-r--r--t/recipes/checks/fields/required/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/fields/required/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/fields/required/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/required/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/required/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/fields/required/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/fields/required/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/fields/required/generic-empty/eval/hints4
-rw-r--r--t/recipes/checks/fields/section/fields-general/build-spec/debian/control.in46
-rw-r--r--t/recipes/checks/fields/section/fields-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/section/fields-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/fields-general/eval/hints1
-rw-r--r--t/recipes/checks/fields/section/fields-section-general/build-spec/debian/control.in31
-rw-r--r--t/recipes/checks/fields/section/fields-section-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/section/fields-section-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/fields-section-general/eval/hints1
-rw-r--r--t/recipes/checks/fields/section/fields-transitional/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/fields/section/fields-transitional/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fields/section/fields-transitional/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/section/fields-transitional/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/fields/section/fields-transitional/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/fields-transitional/eval/hints1
-rw-r--r--t/recipes/checks/fields/section/fields-udeb/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/section/fields-udeb/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/section/fields-udeb/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/fields-udeb/eval/hints1
-rw-r--r--t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/control.in254
-rw-r--r--t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/section/fields-wrong-section/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/section/fields-wrong-section/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/fields/section/fields-wrong-section/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/fields-wrong-section/eval/hints20
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/checks/fields/section/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/eval/desc4
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/eval/hints1
-rw-r--r--t/recipes/checks/fields/section/generic-dh-make-2008/eval/post-test1
-rw-r--r--t/recipes/checks/fields/section/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/fields/section/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/fields/section/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/fields/section/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/section/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/legacy-fields/eval/hints1
-rw-r--r--t/recipes/checks/fields/section/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/fields/section/legacy-libbaz/eval/hints3
-rwxr-xr-xt/recipes/checks/fields/section/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/fields/source/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/source/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/source/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/source/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/source/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/source/fields-general-bad/eval/hints1
-rw-r--r--t/recipes/checks/fields/source/fields-malformed-source/build-spec/DEBIAN/control.in12
-rw-r--r--t/recipes/checks/fields/source/fields-malformed-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/source/fields-malformed-source/eval/desc2
-rw-r--r--t/recipes/checks/fields/source/fields-malformed-source/eval/hints1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/eval/hints1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-fields/eval/hints1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/changelog.in33
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/control51
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/rules49
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/tmp/DEBIAN/control14
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-relations/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/fields/standards-version/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-classifications/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-classifications/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-classifications/eval/hints1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-classifications/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-invalid/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-invalid/eval/hints1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-newer/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-newer/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-newer/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/eval/desc6
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/profiles/lintian-test/main.profile2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date7
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-old/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/desc4
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/hints1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/post-test1
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/copyright32
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/desc2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/hints2
-rw-r--r--t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/post-test2
-rw-r--r--t/recipes/checks/fields/style/all-caps/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/style/all-caps/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/style/all-caps/eval/desc2
-rw-r--r--t/recipes/checks/fields/style/all-caps/eval/hints1
-rw-r--r--t/recipes/checks/fields/style/go-import-path/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/style/go-import-path/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/style/go-import-path/eval/desc5
-rw-r--r--t/recipes/checks/fields/style/go-import-path/eval/hints1
-rw-r--r--t/recipes/checks/fields/style/lower-case-component/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/style/lower-case-component/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/style/lower-case-component/eval/desc2
-rw-r--r--t/recipes/checks/fields/style/lower-case-component/eval/hints1
-rw-r--r--t/recipes/checks/fields/style/shy-prefix/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/style/shy-prefix/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/style/shy-prefix/eval/desc2
-rw-r--r--t/recipes/checks/fields/style/shy-prefix/eval/hints1
-rw-r--r--t/recipes/checks/fields/terminal-control/colorful/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/terminal-control/colorful/eval/desc3
-rw-r--r--t/recipes/checks/fields/terminal-control/colorful/eval/hints4
-rw-r--r--t/recipes/checks/fields/trimmed/native-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/trimmed/native-source/eval/desc2
-rw-r--r--t/recipes/checks/fields/trimmed/native-source/eval/hints1
-rw-r--r--t/recipes/checks/fields/trimmed/native-source/eval/post-test2
-rw-r--r--t/recipes/checks/fields/trimmed/native-upload/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/trimmed/native-upload/eval/desc2
-rw-r--r--t/recipes/checks/fields/trimmed/native-upload/eval/hints3
-rw-r--r--t/recipes/checks/fields/trimmed/native-upload/eval/post-test2
-rw-r--r--t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/desc4
-rw-r--r--t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/hints0
-rw-r--r--t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/control.in28
-rwxr-xr-xt/recipes/checks/fields/unknown/fields-essential/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/unknown/fields-essential/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/unknown/fields-essential/eval/desc2
-rw-r--r--t/recipes/checks/fields/unknown/fields-essential/eval/hints1
-rw-r--r--t/recipes/checks/fields/unknown/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/unknown/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/unknown/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/unknown/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/unknown/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/unknown/fields-general-bad/eval/hints1
-rw-r--r--t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/debian/control.in24
-rw-r--r--t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/unknown/fields-unknown-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/unknown/fields-unknown-fields/eval/hints1
-rw-r--r--t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/desc2
-rw-r--r--t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/hints2
-rw-r--r--t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/debian/control.in22
-rw-r--r--t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/desc2
-rw-r--r--t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/hints2
-rw-r--r--t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/fields/urgency/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/fields/urgency/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/urgency/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/fields/urgency/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/fields/urgency/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/fields/urgency/generic-empty/eval/hints1
-rw-r--r--t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/debian/control.in26
-rw-r--r--t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/control-has-empty-field/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/control-has-empty-field/eval/hints5
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/desc4
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/hints6
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/desc4
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/hints6
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/hints14
-rw-r--r--t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/hints7
-rw-r--r--t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/desc4
-rw-r--r--t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/hints7
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc3
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints6
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints7
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/hints8
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/debian/control.in23
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/hints33
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/hints8
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/debian/control.in21
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/hints13
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/debian/control.in23
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-fields/eval/desc8
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-fields/eval/hints27
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/desc5
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/hints6
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/hints9
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/eval/hints9
-rw-r--r--t/recipes/checks/fields/vcs/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/vcs/nmu-qa-upload/eval/desc3
-rw-r--r--t/recipes/checks/fields/vcs/nmu-qa-upload/eval/hints5
-rw-r--r--t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/hints4
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-alioth/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-alioth/eval/hints3
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/desc2
-rw-r--r--t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/hints3
-rw-r--r--t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/version/fields-binary-nmu-version/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/fields-binary-nmu-version/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/fields-general-bad/build-spec/DEBIAN/control.in17
-rw-r--r--t/recipes/checks/fields/version/fields-general-bad/build-spec/doc/changelog.in17
-rw-r--r--t/recipes/checks/fields/version/fields-general-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/version/fields-general-bad/build-spec/root/usr/lib/lintian/some-file1
-rw-r--r--t/recipes/checks/fields/version/fields-general-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/fields-general-bad/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/fields/version/fields-version-bad/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/version/fields-version-bad/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/fields-version-bad/eval/hints4
-rw-r--r--t/recipes/checks/fields/version/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/fields/version/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/fields/version/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/fields/version/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/fields/version/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/legacy-fields/eval/hints5
-rw-r--r--t/recipes/checks/fields/version/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/fields/version/repack/count/dfsg1/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/version/repack/count/dfsg1/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/repack/count/dfsg1/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/repack/count/extra-dot/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/version/repack/count/extra-dot/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/repack/count/extra-dot/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/build-spec/fill-values6
-rw-r--r--t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/hints1
-rw-r--r--t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/build-spec/fill-values4
-rw-r--r--t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/desc2
-rw-r--r--t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/hints1
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/Makefile26
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/desc3
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/hints1
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/post-test4
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/control.in21
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/libbasic2.symbols2
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/rules23
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/Makefile26
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/basic.c19
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/eval/desc4
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/eval/hints1
-rw-r--r--t/recipes/checks/files/architecture/binaries-multiarch/eval/post-test2
-rw-r--r--t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/orig/main.c8
-rwxr-xr-xt/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-build11
-rwxr-xr-xt/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-upstream11
-rw-r--r--t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/desc2
-rw-r--r--t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/hints1
-rw-r--r--t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/orig/__init__.py0
-rw-r--r--t/recipes/checks/files/architecture/empty-files-arch-any/eval/desc2
-rw-r--r--t/recipes/checks/files/architecture/empty-files-arch-any/eval/hints1
-rw-r--r--t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/desc2
-rw-r--r--t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/hints1
-rw-r--r--t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/orig/dependency_links.txt1
-rw-r--r--t/recipes/checks/files/architecture/very-short-files-arch-any/eval/desc2
-rw-r--r--t/recipes/checks/files/architecture/very-short-files-arch-any/eval/hints1
-rw-r--r--t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-empty-diff/build-spec/pre-upstream.in5
-rw-r--r--t/recipes/checks/files/artifact/cruft-empty-diff/eval/desc4
-rw-r--r--t/recipes/checks/files/artifact/cruft-empty-diff/eval/hints1
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/somepackage.substvars1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-diff/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-diff/build-spec/pre-build34
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-diff/eval/desc4
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-diff/eval/hints16
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-native/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-native/build-spec/pre-build32
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-native/eval/desc2
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-native/eval/hints15
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/README.source1
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/somepackage.substvars1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-quilt/build-spec/pre-build34
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-quilt/eval/desc4
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-quilt/eval/hints16
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/orig/hello.c8
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/pre-upstream35
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-test-suite/eval/desc16
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-test-suite/eval/hints1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/patches/wig-pen5
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/substvars1
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/pre-build32
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/desc2
-rw-r--r--t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/hints15
-rw-r--r--t/recipes/checks/files/banned/fake-banned-file/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/banned/fake-banned-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-forbidden-lintian-files5
-rw-r--r--t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-non-free-lintian-files5
-rw-r--r--t/recipes/checks/files/banned/fake-banned-file/eval/desc2
-rw-r--r--t/recipes/checks/files/banned/fake-banned-file/eval/hints1
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna-2.jpegbin0 -> 54038 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.bmpbin0 -> 14866 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.epsbin0 -> 5571 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.jpegbin0 -> 1582 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.matbin0 -> 14896 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.pdfbin0 -> 4773 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.pngbin0 -> 1495 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.psbin0 -> 5597 bytes
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/desc2
-rw-r--r--t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/hints7
-rw-r--r--t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/debian/rules73
-rw-r--r--t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/bugs/files-package-contains-foo/eval/desc2
-rw-r--r--t/recipes/checks/files/bugs/files-package-contains-foo/eval/hints1
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/eval/hints2
-rw-r--r--t/recipes/checks/files/bugs/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/eval/hints14
-rw-r--r--t/recipes/checks/files/build-path/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/orig/not-a.bz21
-rw-r--r--t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/compressed/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/compressed/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/compressed/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/compressed/files-general/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/control.in20
-rw-r--r--t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/orig/not-a.gz1
-rw-r--r--t/recipes/checks/files/compressed/gz/not-a-gz/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/gz/not-a-gz/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/desc3
-rw-r--r--t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/orig/not-an.lz1
-rw-r--r--t/recipes/checks/files/compressed/lz/not-an-lz/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/lz/not-an-lz/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/orig/not-an.lzma1
-rw-r--r--t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/orig/not-an.lzo1
-rw-r--r--t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/orig/not-an.xz1
-rw-r--r--t/recipes/checks/files/compressed/xz/not-an-xz/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/xz/not-an-xz/eval/hints1
-rw-r--r--t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/orig/not-a.zip1
-rw-r--r--t/recipes/checks/files/compressed/zip/not-a-zip/eval/desc2
-rw-r--r--t/recipes/checks/files/compressed/zip/not-a-zip/eval/hints1
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-all.install1
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-foreign.install1
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-no.install1
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/control.in40
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/Makefile18
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-all-config.in3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-all-config.in3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-foreign-config.in3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-foreign-config.in2
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-all-config.in2
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-all-config.in3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-foreign-config.in3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-no-config.in3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-foreign-config.in2
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-no-config.in2
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/eval/desc3
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/eval/hints16
-rw-r--r--t/recipes/checks/files/config-scripts/files-old-config-script/eval/post-test3
-rw-r--r--t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/debian/install2
-rw-r--r--t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/calls-sbin14
-rwxr-xr-xt/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/our-script3
-rw-r--r--t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/hints3
-rw-r--r--t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/post-test2
-rw-r--r--t/recipes/checks/files/contents/contains-build-path/build-spec/debian/docs1
-rwxr-xr-xt/recipes/checks/files/contents/contains-build-path/build-spec/debian/rules15
-rw-r--r--t/recipes/checks/files/contents/contains-build-path/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/contents/contains-build-path/build-spec/orig/Makefile2
-rw-r--r--t/recipes/checks/files/contents/contains-build-path/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/contains-build-path/eval/hints1
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/control.in51
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.install1
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.postinst7
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.install1
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.postinst7
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.install1
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.postinst7
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.docs1
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.install2
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.postinst7
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/orig/test-script8
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/hints4
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs2
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install6
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/Makefile11
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/README1
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/misc.txt1
-rwxr-xr-xt/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-19
-rwxr-xr-xt/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-23
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test.c13
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/hints7
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/hints2
-rw-r--r--t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/files/contents/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/files/contents/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/files/contents/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/files/contents/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/files/contents/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/eval/hints2
-rw-r--r--t/recipes/checks/files/contents/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi6
-rwxr-xr-xt/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/pre-build45
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/hints1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi12
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/empty.texi5
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf125
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.html56
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt25
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi12
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po16
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html12
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c15
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c15
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html13
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi13
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html13
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html15
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info14
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml15
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po42
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff102
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader20
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt19
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html28
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi13
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c13
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.89
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt5
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt4
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po15
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff18
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi19
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html11
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi9
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt21
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi6
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.112
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/hints2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/json.js529
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js0
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/README1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js19
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.js3
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js4
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js4
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js8
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js4
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js3
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js104
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js30
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js4
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html7
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js3
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js3
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js1
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js2
-rwxr-xr-xt/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/pre-build52
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/hints14
-rw-r--r--t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/post-test4
-rw-r--r--t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js529
-rw-r--r--t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/pre-build22
-rw-r--r--t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/desc2
-rw-r--r--t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/hints3
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/eval/desc4
-rw-r--r--t/recipes/checks/files/contents/scripts-maintainer-general/eval/hints1
-rw-r--r--t/recipes/checks/files/date/deb-format-ancient-file/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-control8
-rwxr-xr-xt/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-data9
-rw-r--r--t/recipes/checks/files/date/deb-format-ancient-file/build-spec/root/usr/share/cargo/registry/deb-format-ancient-file/.cargo_vcs_info.json1
-rw-r--r--t/recipes/checks/files/date/deb-format-ancient-file/eval/desc2
-rw-r--r--t/recipes/checks/files/date/deb-format-ancient-file/eval/hints1
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/date/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/files/date/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/control.in26
-rw-r--r--t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/non-debug-file-in-debug-package-dbgsym.install1
-rwxr-xr-xt/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/orig/foo0
-rw-r--r--t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/desc2
-rw-r--r--t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/hints3
-rw-r--r--t/recipes/checks/files/debug/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/files/debug/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/debug/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/files/debug/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/files/debug/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/files/debug/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/files/debug/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/files/debug/binaries-general/eval/hints1
-rwxr-xr-xt/recipes/checks/files/debug/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/files/debug/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/files/desktop/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/debian/docs7
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/Changes1
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/NEWS1
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file11
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file21
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file31
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file41
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy11
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy21
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/eval/desc2
-rw-r--r--t/recipes/checks/files/duplicates/duplicate-files/eval/hints3
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/empty-directories/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/empty-directories/files-general/eval/hints1
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/eval/hints8
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/files/empty-directories/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/files/empty-directories/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/orig/main.c8
-rwxr-xr-xt/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-build11
-rwxr-xr-xt/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-upstream11
-rw-r--r--t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/desc2
-rw-r--r--t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/hints1
-rw-r--r--t/recipes/checks/files/empty-package/declared-as-empty/build-spec/debian/control.in35
-rw-r--r--t/recipes/checks/files/empty-package/declared-as-empty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/empty-package/declared-as-empty/eval/desc4
-rw-r--r--t/recipes/checks/files/empty-package/declared-as-empty/eval/hints1
-rw-r--r--t/recipes/checks/files/empty-package/files-empty/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/files/empty-package/files-empty/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/files/empty-package/files-empty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/empty-package/files-empty/build-spec/orig/README1
-rw-r--r--t/recipes/checks/files/empty-package/files-empty/eval/desc2
-rw-r--r--t/recipes/checks/files/empty-package/files-empty/eval/hints2
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/files/empty-package/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/eval/hints2
-rw-r--r--t/recipes/checks/files/empty-package/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/pre-build8
-rw-r--r--t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/hints1
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/control.in243
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-crln.copyright36
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-agpl-3.copyright661
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-apache-2.copyright202
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gfdl.copyright397
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-1.copyright206
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-2.copyright344
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl.copyright674
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-lgpl.copyright171
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-iso-8859-1.copyright3
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-misc-errors.copyright22
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-apache2-license-pointer.copyright25
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-perl-license-pointer.copyright5
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-no-errors.copyright36
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-old-fsf.copyright19
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-php.copyright151
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-poor-common-licenses.copyright24
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-versionless.copyright2
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-w3c.copyright95
-rwxr-xr-xt/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/hints2
-rw-r--r--t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/debian/templates3
-rw-r--r--t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/hints2
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/hints5
-rw-r--r--t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/post-test3
-rw-r--r--t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/orig/docs/denmark.weather1
-rw-r--r--t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/hints1
-rw-r--r--t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/orig/man/motd-iso8859-1.575
-rw-r--r--t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/hints1
-rw-r--r--t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch14
-rw-r--r--t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/hints1
-rw-r--r--t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/debian/NEWS12
-rw-r--r--t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/news-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/news-in-western-encoding/eval/hints1
-rw-r--r--t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postinst4
-rw-r--r--t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postrm4
-rw-r--r--t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/preinst4
-rw-r--r--t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/hints3
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control50
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control.autodep81
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-12
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-22
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/under_score2
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/orig/subdir/test-in-subdir2
-rwxr-xr-xt/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/pre-build9
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/desc2
-rw-r--r--t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/hints1
-rw-r--r--t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch14
-rw-r--r--t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/desc4
-rw-r--r--t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/hints1
-rw-r--r--t/recipes/checks/files/generated/do-not-edit/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/generated/do-not-edit/build-spec/orig/generated/do-not-edit5
-rw-r--r--t/recipes/checks/files/generated/do-not-edit/eval/desc2
-rw-r--r--t/recipes/checks/files/generated/do-not-edit/eval/hints2
-rw-r--r--t/recipes/checks/files/generated/file-was-autogenerated/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/generated/file-was-autogenerated/build-spec/orig/generated/file-was-autogenerated5
-rw-r--r--t/recipes/checks/files/generated/file-was-autogenerated/eval/desc2
-rw-r--r--t/recipes/checks/files/generated/file-was-autogenerated/eval/hints1
-rwxr-xr-xt/recipes/checks/files/hard-links/files-hardlinks/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/files/hard-links/files-hardlinks/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hard-links/files-hardlinks/eval/desc2
-rw-r--r--t/recipes/checks/files/hard-links/files-hardlinks/eval/hints3
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/files/hard-links/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/eval/hints1
-rw-r--r--t/recipes/checks/files/hard-links/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/links1
-rwxr-xr-xt/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/desc3
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/links1
-rwxr-xr-xt/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-private/eval/desc7
-rw-r--r--t/recipes/checks/files/hierarchy/links/leaving-private/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/links1
-rwxr-xr-xt/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/desc3
-rw-r--r--t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/script3
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/script3
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/orig/share/worth-sharing.txt1
-rw-r--r--t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/desc3
-rw-r--r--t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/control.in243
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-crln.copyright36
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright661
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright202
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright397
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright206
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright344
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright674
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright171
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright22
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright25
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright5
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-no-errors.copyright36
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright19
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-php.copyright151
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright24
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-versionless.copyright2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-w3c.copyright95
-rwxr-xr-xt/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/hints44
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-general/eval/hints7
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/hints1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/dirs1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/pre-build28
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/hints8
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/hints4
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/hints20
-rw-r--r--t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/rules23
-rw-r--r--t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/orig/src/oui.txt1
-rw-r--r--t/recipes/checks/files/ieee-data/files-ieee-data/eval/desc2
-rw-r--r--t/recipes/checks/files/ieee-data/files-ieee-data/eval/hints4
-rw-r--r--t/recipes/checks/files/includes/util-h/build-spec/debian/install3
-rw-r--r--t/recipes/checks/files/includes/util-h/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/includes/util-h/build-spec/orig/util.h0
-rw-r--r--t/recipes/checks/files/includes/util-h/eval/desc4
-rw-r--r--t/recipes/checks/files/includes/util-h/eval/hints2
-rw-r--r--t/recipes/checks/files/includes/utils-h/build-spec/debian/install3
-rw-r--r--t/recipes/checks/files/includes/utils-h/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/includes/utils-h/build-spec/orig/utils.h0
-rw-r--r--t/recipes/checks/files/includes/utils-h/eval/desc4
-rw-r--r--t/recipes/checks/files/includes/utils-h/eval/hints2
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.docs3
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.init21
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.install9
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.manpages1
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.install1
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.manpages1
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/rules31
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/README1
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/read-only1
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/sample.ali1
-rwxr-xr-xt/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/script20
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/eval/desc2
-rw-r--r--t/recipes/checks/files/init/files-bad-perm-owner/eval/hints1
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/eval/hints3
-rw-r--r--t/recipes/checks/files/init/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/ld-so/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/ld-so/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/ld-so/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/ld-so/files-general/eval/hints1
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/debian/docs3
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/LICENSE.rst.txt1
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/license.txt1
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/bsd.yml1
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.txt1
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.ui2
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/eval/desc2
-rw-r--r--t/recipes/checks/files/licenses/files-extra-license/eval/hints1
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/eval/hints3
-rw-r--r--t/recipes/checks/files/licenses/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/locales/files-locales/build-spec/debian/install6
-rw-r--r--t/recipes/checks/files/locales/files-locales/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/locales/files-locales/build-spec/orig/dummy1
-rw-r--r--t/recipes/checks/files/locales/files-locales/eval/desc2
-rw-r--r--t/recipes/checks/files/locales/files-locales/eval/hints4
-rw-r--r--t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/tar-data7
-rw-r--r--t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/desc2
-rw-r--r--t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/hints3
-rw-r--r--t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/control.in18
-rwxr-xr-xt/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/desc3
-rw-r--r--t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/hints3
-rw-r--r--t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/post-test1
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/control.in29
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-all.install1
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-any.install1
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/Makefile21
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in6
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in6
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in9
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in6
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in7
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in6
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-good.pc6
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-really-bad.pc38
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/eval/desc3
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/eval/hints3
-rw-r--r--t/recipes/checks/files/multi-arch/files-pkgconfig/eval/post-test2
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/control.in33
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install1
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.install1
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols3
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/Makefile24
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/desc2
-rw-r--r--t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/hints1
-rw-r--r--t/recipes/checks/files/names/eslint-config-file/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/files/names/eslint-config-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/eslint-config-file/build-spec/orig/.eslintrc1
-rw-r--r--t/recipes/checks/files/names/eslint-config-file/eval/desc2
-rw-r--r--t/recipes/checks/files/names/eslint-config-file/eval/hints1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/debian/dirs14
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/names/files-general/build-spec/debian/rules68
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/names/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/names/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/names/files-general/eval/hints11
-rwxr-xr-xt/recipes/checks/files/names/files-hyphen-file/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/files/names/files-hyphen-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/files-hyphen-file/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-hyphen-file/eval/hints1
-rwxr-xr-xt/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/hints1
-rw-r--r--t/recipes/checks/files/names/files-python-coverage/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/names/files-python-coverage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/files-python-coverage/build-spec/orig/.coverage0
-rw-r--r--t/recipes/checks/files/names/files-python-coverage/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-python-coverage/eval/hints1
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/build-spec/debian/install2
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/bar0
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/foo0
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.filename0
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-python-dot-directory/eval/hints3
-rw-r--r--t/recipes/checks/files/names/files-tar-traps/build-spec/debian/dirs1
-rw-r--r--t/recipes/checks/files/names/files-tar-traps/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/names/files-tar-traps/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/names/files-tar-traps/build-spec/pre-build28
-rw-r--r--t/recipes/checks/files/names/files-tar-traps/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-tar-traps/eval/hints1
-rwxr-xr-xt/recipes/checks/files/names/files-wildcard-characters/build-spec/debian/rules11
-rw-r--r--t/recipes/checks/files/names/files-wildcard-characters/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/files-wildcard-characters/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-wildcard-characters/eval/hints2
-rw-r--r--t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/desc2
-rw-r--r--t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/hints1
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/files/names/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/files/names/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/files/names/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/files/names/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/files/names/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/names/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/eval/hints3
-rw-r--r--t/recipes/checks/files/names/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-native/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/names/national-encoding-in-native/build-spec/pre-build10
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-native/eval/desc2
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-native/eval/hints2
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-orig/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/names/national-encoding-in-orig/build-spec/pre-orig10
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-orig/eval/desc2
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-orig/eval/hints2
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/series1
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/unusual-filenames.patch4
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-patch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-patch/eval/desc2
-rw-r--r--t/recipes/checks/files/names/national-encoding-in-patch/eval/hints1
-rw-r--r--t/recipes/checks/files/names/npm-ignore-file/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/files/names/npm-ignore-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/npm-ignore-file/build-spec/orig/.npmignore1
-rw-r--r--t/recipes/checks/files/names/npm-ignore-file/eval/desc2
-rw-r--r--t/recipes/checks/files/names/npm-ignore-file/eval/hints1
-rw-r--r--t/recipes/checks/files/names/python-hypothesis-example/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/files/names/python-hypothesis-example/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/python-hypothesis-example/build-spec/orig/.hypothesis/examples/show/nothing1
-rw-r--r--t/recipes/checks/files/names/python-hypothesis-example/eval/desc2
-rw-r--r--t/recipes/checks/files/names/python-hypothesis-example/eval/hints2
-rw-r--r--t/recipes/checks/files/names/sass-cache-directory/build-spec/debian/docs1
-rw-r--r--t/recipes/checks/files/names/sass-cache-directory/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/names/sass-cache-directory/build-spec/orig/.sass-cache/nothing1
-rw-r--r--t/recipes/checks/files/names/sass-cache-directory/eval/desc2
-rw-r--r--t/recipes/checks/files/names/sass-cache-directory/eval/hints2
-rw-r--r--t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-forbidden-lintian-files5
-rw-r--r--t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-non-free-lintian-files5
-rw-r--r--t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/desc2
-rw-r--r--t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/hints1
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/control.in29
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free-non-free.install2
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free.install2
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer-slim.swf0
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer.swf0
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/flvplayer.swf0
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/mp3player.swf0
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/eval/desc2
-rw-r--r--t/recipes/checks/files/non-free/files-flash-non-free/eval/hints2
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/hints2
-rw-r--r--t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/debian/install2
-rw-r--r--t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/archive-keyring.gpgbin0 -> 2279 bytes
-rw-r--r--t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/pubring.pgpbin0 -> 2279 bytes
-rw-r--r--t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/desc2
-rw-r--r--t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/hints1
-rw-r--r--t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/debian/install2
-rw-r--r--t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module0
-rwxr-xr-xt/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly3
-rw-r--r--t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/desc2
-rw-r--r--t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/hints1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/pam/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/pam/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/pam/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/pam/files-general/eval/hints1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.docs3
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.init21
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.install9
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.manpages1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.install1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.manpages1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/rules31
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/README1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/read-only1
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/sample.ali1
-rwxr-xr-xt/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/script20
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/eval/desc2
-rw-r--r--t/recipes/checks/files/permissions/files-bad-perm-owner/eval/hints12
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/permissions/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/permissions/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/permissions/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/permissions/files-general/eval/hints1
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/files/permissions/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/eval/hints10
-rw-r--r--t/recipes/checks/files/permissions/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/orig/some-executable3
-rw-r--r--t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/desc2
-rw-r--r--t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/hints1
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/control.in29
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-all.install1
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-any.install1
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/Makefile21
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in6
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in6
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in9
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in6
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in7
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in6
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-good.pc6
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-really-bad.pc38
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/desc3
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/hints39
-rw-r--r--t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/post-test2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/bookmark.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/dublin-core.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/legal.xml5
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/rdf.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/apache.html5
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattr.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml4.xml9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml5.xml10
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrload.js9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrloadmanual.js3
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.html19
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.xml7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrenderonload.xml7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebook.xml2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2008.html5
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2013.html5
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5like20130810.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5likebody20130810.xml8
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookxfbmllike20130810.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/false-positives.html2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/applet.html6
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audio.html11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audiotrack.html11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/div.html13
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/embed.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/externalimg.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/frame.html12
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/genericwebsite.html11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/googlefontapi.html8
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/ieconditional.xml3
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/iframe.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/import.css2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/importcss.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/input.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-canonical.xml2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-generator.xml2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/mallard-falsepositive.xml64
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/object.html9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/old-falsepositive/rel-generator-home.html14
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/source.html10
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/track.html11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/typekit.html7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/video.html7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/videoposter.html7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsense.html20
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseimagemagick.xml7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyadds.html14
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyvar.js10
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2.js1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2ins.html1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/pagead2.html1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchin.js2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinconstructor.js7
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinfragment.xml2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinloader.js5
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.css1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.xml9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseform.xml20
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseformtracking.xml18
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseimagemagick.js9
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecsejs.xml2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/search.js14
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/asyncload.html21
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/explicitload.html17
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/simplebutton.xml2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/logosourceforge.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/mascot.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-flot.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-mobile.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-ui.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery.html11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery_beta.html11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-mathjax.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-modernizer.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-openlayers.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-prototype.html4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwik.html20
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwikvariant.html20
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/img.html5
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter.xml11
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter2.js4
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/awstat.xml3
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/commented.js10
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/logotwitter.xml1
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/official.js6
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/html5shiv.html19
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mocha.html23
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mochachai.html23
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-w3c-valid-html/htmlvalid.html15
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/eval/desc2
-rw-r--r--t/recipes/checks/files/privacy-breach/files-privacybreach/eval/hints86
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/files/scripts/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/files/scripts/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/files/sgml/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/files/sgml/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/orig/hello.c8
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/pre-upstream35
-rw-r--r--t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/desc2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/hints1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi12
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/empty.texi5
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf125
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.html56
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt25
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi12
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po16
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html12
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c15
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c15
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html13
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi13
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html13
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html15
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info14
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml15
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po42
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff102
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader20
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt19
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html28
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi13
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c13
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.89
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt5
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po15
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff18
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi19
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html11
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt21
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi6
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.112
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/desc2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/hints1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/json.js529
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js0
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/README1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js19
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.js3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js8
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js104
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js30
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html7
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js1
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js2
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-minified-js/build-spec/pre-build52
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/eval/desc2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/eval/hints34
-rw-r--r--t/recipes/checks/files/source-missing/cruft-minified-js/eval/post-test4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/orig/main.c8
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-build11
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-upstream11
-rw-r--r--t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/desc4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/hints3
-rw-r--r--t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/orig/hello.c8
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-build5
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-upstream9
-rw-r--r--t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/desc2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/hints5
-rw-r--r--t/recipes/checks/files/source-missing/cruft-wasm/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/source-missing/cruft-wasm/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/files/source-missing/cruft-wasm/build-spec/pre-upstream11
-rw-r--r--t/recipes/checks/files/source-missing/cruft-wasm/eval/desc2
-rw-r--r--t/recipes/checks/files/source-missing/cruft-wasm/eval/hints1
-rw-r--r--t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js529
-rw-r--r--t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/files/source-missing/min-js-with-sources/build-spec/pre-build22
-rw-r--r--t/recipes/checks/files/source-missing/min-js-with-sources/eval/desc4
-rw-r--r--t/recipes/checks/files/source-missing/min-js-with-sources/eval/hints4
-rw-r--r--t/recipes/checks/files/special/files-special-file/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/files/special/files-special-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/special/files-special-file/eval/desc2
-rw-r--r--t/recipes/checks/files/special/files-special-file/eval/hints1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/broken-links.links10
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/data-pkg.install2
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.conf1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.data1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/hints1
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/hints2
-rw-r--r--t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/pre-build12
-rw-r--r--t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/hints4
-rw-r--r--t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/pre-build5
-rw-r--r--t/recipes/checks/files/symbolic-links/dev-null-fp/eval/desc5
-rw-r--r--t/recipes/checks/files/symbolic-links/dev-null-fp/eval/hints1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/symbolic-links/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/symbolic-links/files-general/eval/hints1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/rules14
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/hints1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/install11
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/rules23
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/data-file1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/pkg.conf1
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/files-symlinks/eval/hints9
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/eval/hints3
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/eval/hints15
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/files/symbolic-links/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/pre-build9
-rw-r--r--t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/desc2
-rw-r--r--t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/hints1
-rw-r--r--t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/pre-build11
-rw-r--r--t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/desc2
-rw-r--r--t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/hints1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/files/unwanted/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/files/unwanted/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/files/unwanted/files-general/eval/desc3
-rw-r--r--t/recipes/checks/files/unwanted/files-general/eval/hints2
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/hints4
-rw-r--r--t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install1
-rw-r--r--t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr3
-rw-r--r--t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/desc2
-rw-r--r--t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/hints1
-rw-r--r--t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/debian/rules73
-rw-r--r--t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/files/vcs/files-package-contains-foo/eval/desc2
-rw-r--r--t/recipes/checks/files/vcs/files-package-contains-foo/eval/hints9
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/eval/hints13
-rw-r--r--t/recipes/checks/files/vcs/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/orig/Makefile8
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/orig/bad.raw16
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badnocredit.raw15
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badwithadobecode.raw17
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/build-spec/orig/good.raw15
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/eval/desc2
-rw-r--r--t/recipes/checks/fonts/files-adobe-font/eval/hints4
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/debian/control.in31
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/debian/files-fonts.install14
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.install4
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.links1
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/orig/4shadow.ttf2
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/orig/font.otf1
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/orig/font.ttf1
-rw-r--r--t/recipes/checks/fonts/files-fonts/build-spec/orig/foo.pcf1
-rw-r--r--t/recipes/checks/fonts/files-fonts/eval/desc2
-rw-r--r--t/recipes/checks/fonts/files-fonts/eval/hints5
-rw-r--r--t/recipes/checks/fonts/files-fonts/eval/post-test1
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Editable.otfbin0 -> 1724 bytes
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Installable.otfbin0 -> 1724 bytes
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/NeverEmbed.otfbin0 -> 1724 bytes
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Printable.otfbin0 -> 1724 bytes
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/eval/desc3
-rw-r--r--t/recipes/checks/fonts/opentype/use-restricted/eval/hints3
-rw-r--r--t/recipes/checks/fonts/opentype/wrong-filename/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fonts/opentype/wrong-filename/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/opentype/wrong-filename/build-spec/orig/fonts/IsOTF.ttfbin0 -> 1724 bytes
-rw-r--r--t/recipes/checks/fonts/opentype/wrong-filename/eval/desc2
-rw-r--r--t/recipes/checks/fonts/opentype/wrong-filename/eval/hints1
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/Makefile8
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/bad.raw16
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badnocredit.raw15
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badwithadobecode.raw17
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/good.raw15
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/desc2
-rw-r--r--t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/hints3
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Editable.ttfbin0 -> 1664 bytes
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Installable.ttfbin0 -> 1664 bytes
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/NeverEmbed.ttfbin0 -> 1664 bytes
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Printable.ttfbin0 -> 1664 bytes
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/eval/desc3
-rw-r--r--t/recipes/checks/fonts/truetype/use-restricted/eval/hints3
-rw-r--r--t/recipes/checks/fonts/truetype/wrong-filename/build-spec/debian/install1
-rw-r--r--t/recipes/checks/fonts/truetype/wrong-filename/build-spec/fill-values3
-rw-r--r--t/recipes/checks/fonts/truetype/wrong-filename/build-spec/orig/fonts/IsTTF.otfbin0 -> 1664 bytes
-rw-r--r--t/recipes/checks/fonts/truetype/wrong-filename/eval/desc2
-rw-r--r--t/recipes/checks/fonts/truetype/wrong-filename/eval/hints1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/eval/desc3
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-general/eval/hints1
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/debian/rules73
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/desc2
-rw-r--r--t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/hints3
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/hints3
-rw-r--r--t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/control.in50
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.install2
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.manpages2
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.install1
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.manpages1
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.install1
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.manpages1
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.install1
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.manpages1
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster2
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.18
-rw-r--r--t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.68
-rw-r--r--t/recipes/checks/games/files-games-section/eval/desc2
-rw-r--r--t/recipes/checks/games/files-games-section/eval/hints3
-rw-r--r--t/recipes/checks/games/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/games/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/games/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/games/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/games/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/games/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/games/files-general/eval/desc3
-rw-r--r--t/recipes/checks/games/files-general/eval/hints1
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/games/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/games/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/games/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/games/legacy-filenames/eval/hints2
-rw-r--r--t/recipes/checks/games/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/control.in99
-rw-r--r--t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/fill-values3
-rw-r--r--t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/orig/some-doc.txt1
-rw-r--r--t/recipes/checks/group-checks/group-checks-circular-deps/eval/desc2
-rw-r--r--t/recipes/checks/group-checks/group-checks-circular-deps/eval/hints2
-rw-r--r--t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/fill-values3
-rw-r--r--t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/orig/data-file1
-rw-r--r--t/recipes/checks/group-checks/group-checks-file-conflict/eval/desc2
-rw-r--r--t/recipes/checks/group-checks/group-checks-file-conflict/eval/hints1
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/control.in52
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-dbg.install1
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-foreign.docs1
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-same.install2
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/python3-pkg-dbg.install1
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/Makefile10
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/some-doc.txt1
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/eval/desc2
-rw-r--r--t/recipes/checks/group-checks/group-checks-multi-arch/eval/hints2
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/group-checks/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/group-checks/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/group-checks/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/group-checks/legacy-libbaz/eval/post-test4
-rwxr-xr-xt/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/fill-values4
-rw-r--r--t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/desc2
-rw-r--r--t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/hints1
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/eval/desc3
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/huge-usr-share/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/fill-values3
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/LICENSE8
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_gif.jpegbin0 -> 144 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_jpg.pngbin0 -> 734 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_pbm.tifbin0 -> 404 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_png.SVGbin0 -> 348 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_svg.xpm3
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_tiff.gifbin0 -> 715 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_xpm.ppm.gzbin0 -> 225 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg3
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.gifbin0 -> 144 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpgbin0 -> 734 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbmbin0 -> 404 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.pngbin0 -> 348 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiffbin0 -> 715 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gzbin0 -> 225 bytes
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/eval/desc2
-rw-r--r--t/recipes/checks/images/filenames/conflicting-image-names/eval/hints7
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/fill-values3
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/LICENSE8
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_gifbin0 -> 144 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_jpgbin0 -> 734 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_pbmbin0 -> 404 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_pngbin0 -> 348 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_svg3
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_tiffbin0 -> 715 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_xpm.gzbin0 -> 225 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg3
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.gifbin0 -> 144 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpgbin0 -> 734 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbmbin0 -> 404 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.pngbin0 -> 348 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiffbin0 -> 715 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gzbin0 -> 225 bytes
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/eval/desc2
-rw-r--r--t/recipes/checks/images/filenames/unrelated-image-names/eval/hints7
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/images/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/images/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/hints2
-rw-r--r--t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/includes/config-h/package-name-srtp/build-spec/debian/install1
-rw-r--r--t/recipes/checks/includes/config-h/package-name-srtp/build-spec/fill-values3
-rw-r--r--t/recipes/checks/includes/config-h/package-name-srtp/build-spec/orig/include/config.h1
-rw-r--r--t/recipes/checks/includes/config-h/package-name-srtp/eval/desc2
-rw-r--r--t/recipes/checks/includes/config-h/package-name-srtp/eval/hints1
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service0
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install3
-rwxr-xr-xt/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run0
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values3
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc2
-rw-r--r--t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints1
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in61
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init17
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst17
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init14
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init31
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init52
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default17
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init21
-rw-r--r--t/recipes/checks/init-d/init.d-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/init-d/init.d-general/eval/desc2
-rw-r--r--t/recipes/checks/init-d/init.d-general/eval/hints24
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in90
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init22
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init21
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init21
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init23
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init19
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init21
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init23
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init22
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init23
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values3
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/eval/desc2
-rw-r--r--t/recipes/checks/init-d/init.d-lsb-headers/eval/hints28
-rw-r--r--t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init27
-rw-r--r--t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values3
-rw-r--r--t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc2
-rw-r--r--t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints1
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install3
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links1
-rwxr-xr-xt/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values3
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README1
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in18
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton2
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/eval/desc2
-rw-r--r--t/recipes/checks/init-d/init.d-script-registration/eval/hints3
-rw-r--r--t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links2
-rwxr-xr-xt/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst4
-rwxr-xr-xt/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm6
-rw-r--r--t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values3
-rw-r--r--t/recipes/checks/init-d/init.d-symlink/eval/desc5
-rw-r--r--t/recipes/checks/init-d/init.d-symlink/eval/hints1
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc3
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints6
-rw-r--r--t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/init-d/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/eval/hints21
-rw-r--r--t/recipes/checks/init-d/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config3
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints1
-rw-r--r--t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install4
-rw-r--r--t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst7
-rw-r--r--t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm8
-rw-r--r--t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad2
-rwxr-xr-xt/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action3
-rwxr-xr-xt/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke30
-rwxr-xr-xt/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first6
-rw-r--r--t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc4
-rw-r--r--t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints1
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/orig/fortran/mpi.modbin0 -> 103 bytes
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/desc5
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/hints1
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/orig/fortran/mpi.modbin0 -> 106 bytes
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/desc5
-rw-r--r--t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/hints1
-rw-r--r--t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile16
-rw-r--r--t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/languages/golang/built-using/binaries-golang/eval/desc2
-rw-r--r--t/recipes/checks/languages/golang/built-using/binaries-golang/eval/hints1
-rw-r--r--t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile16
-rw-r--r--t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/languages/golang/import-path/binaries-golang/eval/desc2
-rw-r--r--t/recipes/checks/languages/golang/import-path/binaries-golang/eval/hints1
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install1
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control.in41
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/desc2
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/hints1
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install1
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control.in41
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/basic.c12
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/desc4
-rw-r--r--t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/hints1
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/libfoo-java.install3
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/mini.classbin0 -> 122 bytes
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/not-a-class-file.class1
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/desc2
-rw-r--r--t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/hints1
-rw-r--r--t/recipes/checks/languages/java/java-class-format/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/java/java-class-format/build-spec/debian/javabuild1
-rw-r--r--t/recipes/checks/languages/java/java-class-format/build-spec/debian/libtest-java.jlibs2
-rwxr-xr-xt/recipes/checks/languages/java/java-class-format/build-spec/debian/rules19
-rw-r--r--t/recipes/checks/languages/java/java-class-format/build-spec/fill-values6
-rw-r--r--t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestA.java8
-rw-r--r--t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestB.java8
-rw-r--r--t/recipes/checks/languages/java/java-class-format/eval/desc2
-rw-r--r--t/recipes/checks/languages/java/java-class-format/eval/hints2
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/debian/binary-using-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/debian/control.in38
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/debian/javabuild2
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-missing-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.manifest2
-rwxr-xr-xt/recipes/checks/languages/java/java-classpath/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/fill-values6
-rw-r--r--t/recipes/checks/languages/java/java-classpath/build-spec/orig/src/org/debian/lintian/TestA.java8
-rw-r--r--t/recipes/checks/languages/java/java-classpath/eval/desc2
-rw-r--r--t/recipes/checks/languages/java/java-classpath/eval/hints1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/control.in73
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/javabuild4
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libcodeless-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libcontains-source-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libmanifestless-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libtest-maven-plugin-java.install2
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.install4
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.jlibs1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/libtestc-java.install1
-rwxr-xr-xt/recipes/checks/languages/java/java-jars/build-spec/debian/rules20
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/debian/unparsable.install1
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/fill-values6
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl36
-rw-r--r--t/recipes/checks/languages/java/java-jars/build-spec/orig/src/org/debian/lintian/TestA.java8
-rw-r--r--t/recipes/checks/languages/java/java-jars/eval/desc4
-rw-r--r--t/recipes/checks/languages/java/java-jars/eval/hints11
-rw-r--r--t/recipes/checks/languages/java/prebuilt-java-object/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.classbin0 -> 413 bytes
-rw-r--r--t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.jarbin0 -> 745 bytes
-rw-r--r--t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.java7
-rw-r--r--t/recipes/checks/languages/java/prebuilt-java-object/eval/desc2
-rw-r--r--t/recipes/checks/languages/java/prebuilt-java-object/eval/hints1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/debian/install10
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap.js1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/doxygen.css1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.js1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.min.js1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.css1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.js1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/rss_parse.php1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/streams.php0
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/eval/desc3
-rw-r--r--t/recipes/checks/languages/javascript/embedded/files-embedded/eval/hints6
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/hints11
-rw-r--r--t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/package.json5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/hints3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/rules16
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.json1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/hints2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/install2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/tests/pkg-js/test3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/watch42
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/package.json1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/test/nestedTest/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/hints17
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/additional_components2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/root_modules1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/tests/pkg-js/test2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/hints8
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.json1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/hints2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.json1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/hints2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/additional_components2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/root_modules1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/tests/pkg-js/test2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/package.json1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/package.json4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/hints7
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/files5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/test3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/lib/a/file.js0
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/package.json5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/test/test.js0
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/hints2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/tests/pkg-js/test3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/package.json5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/hints1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/package.json5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/hints1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/tests/pkg-js/test3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/package.json5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/hints3
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/index.js1
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/package.json5
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/desc2
-rw-r--r--t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/hints3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/hints2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/hints5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/hints2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/hints1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/hints1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/hints1
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/hints1
-rwxr-xr-xt/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install12
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.install3
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/META1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmxs1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/baz.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cma1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cmo1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/boo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmi1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmxa1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol2.cmx1
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/symbol.c5
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/desc2
-rw-r--r--t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/hints1
-rw-r--r--t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/control.in27
-rwxr-xr-xt/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/desc2
-rw-r--r--t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/hints1
-rw-r--r--t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/post-test1
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/eval/hints5
-rw-r--r--t/recipes/checks/languages/perl/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/orig/Naughty.pm7
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/desc3
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/hints0
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/orig/Naughty.pm7
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/desc2
-rw-r--r--t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/hints1
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/eval/hints2
-rw-r--r--t/recipes/checks/languages/perl/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/Makefile7
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/naughty-script22
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/desc4
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/hints0
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/Makefile7
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/naughty-script22
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/desc2
-rw-r--r--t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/hints1
-rw-r--r--t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/pkg.install1
-rwxr-xr-xt/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/perl/perl5/cruft-perl/eval/desc2
-rw-r--r--t/recipes/checks/languages/perl/perl5/cruft-perl/eval/hints1
-rw-r--r--t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/orig/perl/Dot.pm14
-rw-r--r--t/recipes/checks/languages/perl/yapp/yapp-parser/eval/desc3
-rw-r--r--t/recipes/checks/languages/perl/yapp/yapp-parser/eval/hints1
-rw-r--r--t/recipes/checks/languages/php/composer/depends-composer/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/languages/php/composer/depends-composer/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/php/composer/depends-composer/eval/desc2
-rw-r--r--t/recipes/checks/languages/php/composer/depends-composer/eval/hints1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/debian/install10
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap.js1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/doxygen.css1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.js1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.min.js1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.css1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.js1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/rss_parse.php1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/streams.php0
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js1
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/eval/desc3
-rw-r--r--t/recipes/checks/languages/php/embedded/files-embedded/eval/hints2
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/languages/php/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/languages/php/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/languages/php/files-general/eval/desc3
-rw-r--r--t/recipes/checks/languages/php/files-general/eval/hints1
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composer/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/composer.json0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/foo.php0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composer/eval/desc4
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composer/eval/hints1
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/debian/control.in20
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/composer.json1
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/foo.php0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composerok/eval/desc4
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-composerok/eval/hints0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/channel.xml0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/foo.php0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/package.xml1
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-general/eval/desc4
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-general/eval/hints2
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/build-spec/debian/pkg-php-tools-overrides1
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/foo.php0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package.xml60
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package2.xml0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/eval/desc2
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pear/eval/hints10
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/control.in20
-rwxr-xr-xt/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/rules3
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/MyProject_Packages-0.0.1/empty.php0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/foo.php0
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/package.xml60
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/eval/desc8
-rw-r--r--t/recipes/checks/languages/php/pear/phppear-pearok/eval/hints0
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/desc3
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/desc3
-rw-r--r--t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/debian/py3dist-overrides2
-rw-r--r--t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/from.py7
-rw-r--r--t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/import.py3
-rw-r--r--t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/debian/install11
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap-1.1.js1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap.js1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/doxygen.css1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/feedparser.py1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.js1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.min.js1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.css1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.js1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/rss_parse.php1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/streams.php0
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/tiny_mce_popup.js1
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/eval/desc3
-rw-r--r--t/recipes/checks/languages/python/feedparser/files-embedded/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/feedparser.py16
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/eval/hints3
-rw-r--r--t/recipes/checks/languages/python/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/debian/control.in53
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/debian/python-kinterbasdb.install7
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/debian/rules19
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/orig/Makefile7
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/orig/lib.c4
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/orig/objects.inv199
-rw-r--r--t/recipes/checks/languages/python/files-python-general/build-spec/orig/python.egg1
-rw-r--r--t/recipes/checks/languages/python/files-python-general/eval/desc3
-rw-r--r--t/recipes/checks/languages/python/files-python-general/eval/hints7
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/install9
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/__init__.py0
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/site.py0
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/tests.py0
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/desc4
-rw-r--r--t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/hints9
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/build-spec/debian/install13
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/build-spec/orig/python-foo1
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/files-python-modules/eval/hints16
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/install4
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/bad0
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good0
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good.py0
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/homepage/pypi/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/python/homepage/pypi/eval/desc4
-rw-r--r--t/recipes/checks/languages/python/homepage/pypi/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/missing-sources/fake.py1
-rw-r--r--t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pycompat0
-rw-r--r--t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pyversions1
-rw-r--r--t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/languages/python/obsolete/cruft-python/build-spec/pre-build31
-rw-r--r--t/recipes/checks/languages/python/obsolete/cruft-python/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/obsolete/cruft-python/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/languages/python/python-ancient-python-version-field/eval/desc4
-rw-r--r--t/recipes/checks/languages/python/python-ancient-python-version-field/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/desc5
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/hints0
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/desc4
-rw-r--r--t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/orig/pyproject.toml7
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/orig/pyproject.toml17
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/debian/control.in61
-rw-r--r--t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/hints3
-rw-r--r--t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/python/python-malformed-py-version/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-malformed-py-version/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/languages/python/python-malformed-py-version/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-malformed-py-version/eval/hints4
-rw-r--r--t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/debian/control.in67
-rw-r--r--t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/desc4
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/hints0
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-new-python2-package/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/python/python-old-python-version-field/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-old-python-version-field/build-spec/orig/some-file2
-rw-r--r--t/recipes/checks/languages/python/python-old-python-version-field/eval/desc4
-rw-r--r--t/recipes/checks/languages/python/python-old-python-version-field/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/debian/control.in38
-rw-r--r--t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/hints6
-rw-r--r--t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/control.in16
-rwxr-xr-xt/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-python2-apps/build-spec/debian/control.in87
-rw-r--r--t/recipes/checks/languages/python/python-python2-apps/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-python2-apps/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-python2-apps/eval/hints6
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/debian/control.in84
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/desc3
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-python2-no-python3/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-source-package-encodes-python-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-valid-pdm/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-valid-pdm/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-valid-pdm/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-valid-pdm/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-valid-pdm/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-valid-poetry/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-valid-poetry/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-valid-poetry/build-spec/orig/pyproject.toml17
-rw-r--r--t/recipes/checks/languages/python/python-valid-poetry/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-valid-poetry/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/python-wrong-pdm/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/python/python-wrong-pdm/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/python-wrong-pdm/build-spec/orig/pyproject.toml3
-rw-r--r--t/recipes/checks/languages/python/python-wrong-pdm/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-wrong-pdm/eval/hints2
-rw-r--r--t/recipes/checks/languages/python/python-wrong-poetry/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/languages/python/python-wrong-poetry/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/python/python-wrong-poetry/build-spec/orig/pyproject.toml17
-rw-r--r--t/recipes/checks/languages/python/python-wrong-poetry/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/python-wrong-poetry/eval/hints1
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/install1
-rwxr-xr-xt/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad11
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad21
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good11
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good21
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/desc2
-rw-r--r--t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/hints2
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/control.in29
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-false-positive.install1
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-positive.install1
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/orig/DESCRIPTION19
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/desc2
-rw-r--r--t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/hints1
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rda1
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rdata1
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rda1
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rdata1
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/eval/desc4
-rw-r--r--t/recipes/checks/languages/r/files-r-data-unrel/eval/hints0
-rw-r--r--t/recipes/checks/languages/r/files-r-data/build-spec/debian/install1
-rw-r--r--t/recipes/checks/languages/r/files-r-data/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rdabin0 -> 2761 bytes
-rw-r--r--t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rdatabin0 -> 2761 bytes
-rw-r--r--t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rdabin0 -> 2761 bytes
-rw-r--r--t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rdatabin0 -> 2761 bytes
-rw-r--r--t/recipes/checks/languages/r/files-r-data/eval/desc2
-rw-r--r--t/recipes/checks/languages/r/files-r-data/eval/hints4
-rw-r--r--t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/rules4
-rw-r--r--t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/fill-values5
-rw-r--r--t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/orig/DESCRIPTION21
-rw-r--r--t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/desc4
-rw-r--r--t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/hints2
-rw-r--r--t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/desc2
-rw-r--r--t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/hints1
-rw-r--r--t/recipes/checks/languages/ruby/gem-homepage/build-spec/fill-values4
-rw-r--r--t/recipes/checks/languages/ruby/gem-homepage/eval/desc4
-rw-r--r--t/recipes/checks/languages/ruby/gem-homepage/eval/hints1
-rw-r--r--t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/fill-values3
-rw-r--r--t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/desc4
-rw-r--r--t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/hints1
-rw-r--r--t/recipes/checks/languages/rust/template-description/build-spec/fill-values6
-rw-r--r--t/recipes/checks/languages/rust/template-description/eval/desc2
-rw-r--r--t/recipes/checks/languages/rust/template-description/eval/hints1
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/Makefile64
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/basic.c12
-rwxr-xr-xt/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/getbuildid30
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/ocaml.c11
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/eval/desc2
-rw-r--r--t/recipes/checks/libraries/debug-symbols/binaries-general/eval/hints1
-rwxr-xr-xt/recipes/checks/libraries/debug-symbols/binaries-general/eval/post-test1
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/Makefile26
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/gmp.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h6
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data1.c10
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data2.c10
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data3.c17
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libbz2.c11
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libexpat.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libjpeg.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libm.c11
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libmagic.c11
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libopenjpeg.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpcre3.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpng.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libsqlite.c14
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libtiff.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libxml2.c11
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/mpfr.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/template.124
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/zlib.c15
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/desc2
-rw-r--r--t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/hints17
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/code.c12
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/desc4
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/libexecbit1.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/hints2
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/hints5
-rwxr-xr-xt/recipes/checks/libraries/shared/links/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols7
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install3
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/fill-values5
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/Makefile27
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.c16
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/desc4
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.install1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/fill-values5
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/Makefile24
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.c16
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile20
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile19
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c10
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/Makefile21
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/code.c10
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/cblas.h1
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/consumer.c11
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/libcblas.c9
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/obsolete/cblas/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/Makefile.in110
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/symbols3
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/Makefile26
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/non-pic.c11
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/desc3
-rw-r--r--t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/hints1
-rwxr-xr-xt/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/post-test1
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/control.in48
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install1
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install1
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install1
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install1
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/code.c9
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/_symbols23
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/control85
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/copyright4
-rwxr-xr-xt/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/rules99
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/hello.c9
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.c7
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.h1
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/post-test2
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/Makefile19
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/code.c10
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/main.c4
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/Makefile22
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/foo.c9
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/get.c6
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/desc3
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols2
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/Makefile23
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/code.c10
-rwxr-xr-xt/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack9
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/hints1
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install2
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst6
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm6
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers1
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in47
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install1
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst6
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm6
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install1
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst8
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm8
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install1
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm8
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols3
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules21
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values5
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile22
-rwxr-xr-xt/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app2
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/desc2
-rw-r--r--t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/hints2
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/Makefile31
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/other.c6
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/eval/desc2
-rw-r--r--t/recipes/checks/libraries/static/binaries-static-lib/eval/hints2
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/desc4
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/hints1
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/desc4
-rw-r--r--t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/hints1
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/other.c6
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/desc4
-rw-r--r--t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/hints1
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/desc6
-rw-r--r--t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/hints1
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/rules7
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/fill-values4
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/Makefile17
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.c13
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.h8
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/desc4
-rw-r--r--t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/hints1
-rw-r--r--t/recipes/checks/linda/files-package-contains-foo/build-spec/debian/rules73
-rw-r--r--t/recipes/checks/linda/files-package-contains-foo/build-spec/fill-values3
-rw-r--r--t/recipes/checks/linda/files-package-contains-foo/eval/desc2
-rw-r--r--t/recipes/checks/linda/files-package-contains-foo/eval/hints1
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/linda/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/linda/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/linda/legacy-filenames/eval/hints1
-rw-r--r--t/recipes/checks/linda/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/source/lintian-overrides1
-rw-r--r--t/recipes/checks/lintian/override-context-mismatch/build-spec/fill-values3
-rw-r--r--t/recipes/checks/lintian/override-context-mismatch/eval/desc3
-rw-r--r--t/recipes/checks/lintian/override-context-mismatch/eval/hints2
-rw-r--r--t/recipes/checks/lintian/override-not-used/build-spec/debian/source/lintian-overrides1
-rw-r--r--t/recipes/checks/lintian/override-not-used/build-spec/fill-values3
-rw-r--r--t/recipes/checks/lintian/override-not-used/eval/desc3
-rw-r--r--t/recipes/checks/lintian/override-not-used/eval/hints1
-rw-r--r--t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/debian/install1
-rw-r--r--t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/fill-values3
-rw-r--r--t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/orig/mailcap/imagemagick-6.q161
-rw-r--r--t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/desc2
-rw-r--r--t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/hints1
-rw-r--r--t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/debian/install1
-rw-r--r--t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/fill-values3
-rw-r--r--t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/orig/mailcap/less1
-rw-r--r--t/recipes/checks/mailcap/single-quoted-placeholder/eval/desc2
-rw-r--r--t/recipes/checks/mailcap/single-quoted-placeholder/eval/hints1
-rw-r--r--t/recipes/checks/mailcap/unquoted-placeholder/build-spec/debian/install1
-rw-r--r--t/recipes/checks/mailcap/unquoted-placeholder/build-spec/fill-values3
-rw-r--r--t/recipes/checks/mailcap/unquoted-placeholder/build-spec/orig/mailcap/lynx-common1
-rw-r--r--t/recipes/checks/mailcap/unquoted-placeholder/eval/desc4
-rw-r--r--t/recipes/checks/mailcap/unquoted-placeholder/eval/hints1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/changelog.in20
-rw-r--r--t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/postinst20
-rw-r--r--t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/hints6
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/install4
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/postrm26
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/preinst38
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/orphan1
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/hints8
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/install5
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postinst11
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postrm34
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/preinst53
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/file.11
-rwxr-xr-xt/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo2
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo.1p3
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/orphan1
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/hints8
-rw-r--r--t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst10
-rw-r--r--t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst13
-rw-r--r--t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/config3
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/rules111
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpfoo7
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3.Xfoo4
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3foo4
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postinst41
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postrm39
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/preinst37
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/prerm40
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/hints4
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/control.in63
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/de.po13
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/templates.pot23
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates3
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst5
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst5
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm6
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst6
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/desc3
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/desc4
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/hints2
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/debian/postinst33
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/hints4
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm0
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/install1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm0
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/desc5
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/hints2
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst9
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/control52
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/copyright10
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst10
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm7
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.templates3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm7
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst13
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.templates3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.config24
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.postinst10
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates101
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.de3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.in0
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.postinst9
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.templates3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/POTFILES.in2
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/de.po66
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/fr.po60
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/lang.po15
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/nds.po15
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/output1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/pt_BR.po15
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/sample-file.po1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/templates.pot61
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pycompat1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pyversions1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/fill-values6
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install2
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst6
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm6
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in47
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst6
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm6
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst8
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm8
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols3
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm8
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols3
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules21
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values5
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile22
-rwxr-xr-xt/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app2
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c15
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/hints5
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/desc5
-rw-r--r--t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/hints1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/bootmisc.sh59
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/init153
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/install3
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/postrm10
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/rules30
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.masked.init22
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.service9
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.sh.init22
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init152
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.test.service13
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/test.conf2
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/hints1
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/config3
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/hints8
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/desc5
-rw-r--r--t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/hints6
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/md5sums/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/md5sums/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles5
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles.only2
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/control20
-rwxr-xr-xt/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/rules64
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/fill-values5
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/improper2
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/proper2
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/eval/hints5
-rw-r--r--t/recipes/checks/md5sums/legacy-etcfiles/eval/post-test1
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/md5sums/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/eval/hints3
-rw-r--r--t/recipes/checks/md5sums/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/README.Debian7
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/changelog.in31
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/control30
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/copyright7
-rwxr-xr-xt/recipes/checks/md5sums/legacy-foo++/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/watch6
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/build-spec/fill-values5
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/eval/hints1
-rw-r--r--t/recipes/checks/md5sums/legacy-foo++/eval/post-test1
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-libbaz/eval/hints5
-rwxr-xr-xt/recipes/checks/md5sums/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/hints1
-rw-r--r--t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/md5sums/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/md5sums/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/md5sums/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/md5sums/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/md5sums/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/md5sums/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/debian/install1
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file11
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file21
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file31
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file41
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/md5sums-general/eval/hints4
-rw-r--r--t/recipes/checks/md5sums/md5sums-missing/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/md5sums/md5sums-missing/build-spec/fill-values3
-rw-r--r--t/recipes/checks/md5sums/md5sums-missing/eval/desc2
-rw-r--r--t/recipes/checks/md5sums/md5sums-missing/eval/hints1
-rw-r--r--t/recipes/checks/md5sums/md5sums-traversal/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/md5sums/md5sums-traversal/build-spec/pre-control8
-rw-r--r--t/recipes/checks/md5sums/md5sums-traversal/eval/desc5
-rw-r--r--t/recipes/checks/md5sums/md5sums-traversal/eval/hints0
-rw-r--r--t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/debian/install1
-rw-r--r--t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/orig/unknown-type.desktop4
-rw-r--r--t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/desc2
-rw-r--r--t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/hints1
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/install1
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postinst11
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postrm7
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/orig/test-menu5
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/eval/desc2
-rw-r--r--t/recipes/checks/menu-format/item-has-needs-dwww/eval/hints2
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/menu-format/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/eval/hints63
-rw-r--r--t/recipes/checks/menu-format/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/install8
-rwxr-xr-xt/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/crlf.desktop7
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/directory.desktop5
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/environments.desktop9
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/general.desktop13
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/link.desktop6
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/missing.desktop5
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved-bad.desktop8
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved.desktop9
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/eval/desc3
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-general/eval/hints16
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.install2
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.manpages1
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/fill-values4
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/Makefile6
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/bar.desktop10
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/foo.desktop9
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/pargs22
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/desc3
-rw-r--r--t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/hints1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/control.in51
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.install1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.manpages1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.menu12
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.install2
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.menu4
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.install1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.manpages1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.menu16
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.install2
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.manpages1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.menu15
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/orig/Makefile11
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/orig/broken.xpm1
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs22
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.desktop8
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.png0
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/build-spec/orig/too-large.xpm10
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/eval/desc2
-rw-r--r--t/recipes/checks/menu-format/menu-format-general/eval/hints30
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/install1
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postinst11
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postrm7
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/build-spec/orig/test-menu6
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/eval/desc2
-rw-r--r--t/recipes/checks/menu-format/unknown-menu-tag/eval/hints2
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/install1
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postinst11
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postrm7
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/orig/test-menu5
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/desc2
-rw-r--r--t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/hints3
-rwxr-xr-xt/recipes/checks/menus/executable-in-docbase/build-spec/debian/doc-base.doc18
-rw-r--r--t/recipes/checks/menus/executable-in-docbase/build-spec/debian/docs1
-rwxr-xr-xt/recipes/checks/menus/executable-in-docbase/build-spec/debian/rules19
-rw-r--r--t/recipes/checks/menus/executable-in-docbase/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menus/executable-in-docbase/build-spec/orig/doc1.txt1
-rw-r--r--t/recipes/checks/menus/executable-in-docbase/eval/desc2
-rw-r--r--t/recipes/checks/menus/executable-in-docbase/eval/hints1
-rw-r--r--t/recipes/checks/menus/executable-menu-file/build-spec/debian/install1
-rw-r--r--t/recipes/checks/menus/executable-menu-file/build-spec/debian/postinst11
-rw-r--r--t/recipes/checks/menus/executable-menu-file/build-spec/debian/postrm7
-rw-r--r--t/recipes/checks/menus/executable-menu-file/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/menus/executable-menu-file/build-spec/orig/test-menu5
-rw-r--r--t/recipes/checks/menus/executable-menu-file/eval/desc2
-rw-r--r--t/recipes/checks/menus/executable-menu-file/eval/hints1
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/menus/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/menus/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/menus/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/menus/legacy-binary/eval/hints26
-rw-r--r--t/recipes/checks/menus/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/debian/changelog.in78
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/debian/control42
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/debian/doc-base11
-rwxr-xr-xt/recipes/checks/menus/legacy-filenames/build-spec/debian/rules231
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/ .tif2
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/".tif1
-rw-r--r--t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/Maelstrom Sound1
-rw-r--r--t/recipes/checks/menus/legacy-filenames/eval/desc2
-rw-r--r--t/recipes/checks/menus/legacy-filenames/eval/hints4
-rw-r--r--t/recipes/checks/menus/legacy-filenames/eval/post-test3
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/control.in38
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/doc-base13
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/orig/documentation.txt1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/desc2
-rw-r--r--t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/hints3
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc18
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc218
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/docs2
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc1.txt1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc2.txt1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/eval/desc4
-rw-r--r--t/recipes/checks/menus/menus-doc-base-general/eval/hints8
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/control.in23
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-html.docs1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-pdf.install1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc1.html1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc2.pdf1
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/eval/desc2
-rw-r--r--t/recipes/checks/menus/menus-doc-base-registration/eval/hints2
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postinst7
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postrm12
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/preinst12
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/prerm12
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/eval/desc2
-rw-r--r--t/recipes/checks/menus/menus-foo-calls-bar/eval/hints10
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/install5
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postinst15
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postrm7
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/prerm7
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc8
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc.txt1
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-menu5
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script2
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script.17
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/build-spec/fill-values3
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/eval/desc5
-rw-r--r--t/recipes/checks/menus/menus-script-check-ok/eval/hints2
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/control42
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/menus/national-encoding/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/fill-values5
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/menus/national-encoding/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/menus/national-encoding/eval/desc2
-rw-r--r--t/recipes/checks/menus/national-encoding/eval/hints5
-rw-r--r--t/recipes/checks/menus/national-encoding/eval/post-test3
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/changelog.in13
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/copyright21
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/doc-base9
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/patches/add-readme8
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/patches/nonrel6
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/patches/series3
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/debian/patches/spelling6
-rw-r--r--t/recipes/checks/menus/spelling-general/build-spec/fill-values6
-rw-r--r--t/recipes/checks/menus/spelling-general/eval/desc2
-rw-r--r--t/recipes/checks/menus/spelling-general/eval/hints3
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/eval/hints2
-rw-r--r--t/recipes/checks/mimeinfo/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/mimeinfo/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/mimeinfo/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/mimeinfo/files-general/eval/desc3
-rw-r--r--t/recipes/checks/mimeinfo/files-general/eval/hints2
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/debian/dirs13
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/debian/examples1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/debian/install18
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/debian/manpages2
-rwxr-xr-xt/recipes/checks/modprobe/files-general/build-spec/debian/rules67
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/--lzma2
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/dir18
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/file-in-new-top-level-dir2
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/foo.55
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/foo.vcproj1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-16x16.pngbin0 -> 355 bytes
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-22x22.pngbin0 -> 1505 bytes
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/lintian.conf1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/mimeinfo.cache2
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/php-foo.ini1
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/sudotest0
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/tnu.15
-rw-r--r--t/recipes/checks/modprobe/files-general/build-spec/orig/types0
-rw-r--r--t/recipes/checks/modprobe/files-general/eval/desc3
-rw-r--r--t/recipes/checks/modprobe/files-general/eval/hints1
-rw-r--r--t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/debian/install2
-rw-r--r--t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/fill-values3
-rw-r--r--t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-install.conf2
-rw-r--r--t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-lib.conf1
-rw-r--r--t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/desc2
-rw-r--r--t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/hints4
-rw-r--r--t/recipes/checks/nmu/changelog-file-symlink/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/nmu/changelog-file-symlink/build-spec/pre-build6
-rw-r--r--t/recipes/checks/nmu/changelog-file-symlink/eval/desc2
-rw-r--r--t/recipes/checks/nmu/changelog-file-symlink/eval/hints1
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc3
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints0
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in7
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc3
-rw-r--r--t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints1
-rw-r--r--t/recipes/checks/nmu/generic-empty/build-spec/debian/changelog.in2
-rw-r--r--t/recipes/checks/nmu/generic-empty/build-spec/debian/control.in5
-rwxr-xr-xt/recipes/checks/nmu/generic-empty/build-spec/debian/rules9
-rw-r--r--t/recipes/checks/nmu/generic-empty/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/generic-empty/build-spec/orig/README4
-rwxr-xr-xt/recipes/checks/nmu/generic-empty/build-spec/pre-build6
-rw-r--r--t/recipes/checks/nmu/generic-empty/eval/desc2
-rw-r--r--t/recipes/checks/nmu/generic-empty/eval/hints2
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/nmu/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/nmu/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/nmu/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/nmu/legacy-binary/eval/hints1
-rw-r--r--t/recipes/checks/nmu/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/nmu/legacy-fields/build-spec/debian/changelog.in10
-rw-r--r--t/recipes/checks/nmu/legacy-fields/build-spec/debian/control28
-rwxr-xr-xt/recipes/checks/nmu/legacy-fields/build-spec/debian/rules33
-rw-r--r--t/recipes/checks/nmu/legacy-fields/build-spec/fill-values5
-rw-r--r--t/recipes/checks/nmu/legacy-fields/eval/desc2
-rw-r--r--t/recipes/checks/nmu/legacy-fields/eval/hints2
-rw-r--r--t/recipes/checks/nmu/legacy-fields/eval/post-test1
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/nmu/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/nmu/legacy-libbaz/eval/hints2
-rwxr-xr-xt/recipes/checks/nmu/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/eval/hints3
-rw-r--r--t/recipes/checks/nmu/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/nmu/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/nmu/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/nmu/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/nmu/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/nmu/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/eval/hints2
-rw-r--r--t/recipes/checks/nmu/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/nmu/nmu-case-insensitive/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/nmu/nmu-case-insensitive/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/nmu-case-insensitive/eval/desc6
-rw-r--r--t/recipes/checks/nmu/nmu-case-insensitive/eval/hints0
-rw-r--r--t/recipes/checks/nmu/nmu-local-changelog/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/nmu/nmu-local-changelog/build-spec/fill-values3
-rw-r--r--t/recipes/checks/nmu/nmu-local-changelog/eval/desc6
-rw-r--r--t/recipes/checks/nmu/nmu-local-changelog/eval/hints0
-rw-r--r--t/recipes/checks/nmu/nmu-local-version/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/nmu/nmu-local-version/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/nmu-local-version/eval/desc6
-rw-r--r--t/recipes/checks/nmu/nmu-local-version/eval/hints0
-rw-r--r--t/recipes/checks/nmu/nmu-multi-author/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/nmu/nmu-multi-author/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/nmu-multi-author/eval/desc3
-rw-r--r--t/recipes/checks/nmu/nmu-multi-author/eval/hints0
-rw-r--r--t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/nmu-not-a-nmu/eval/desc2
-rw-r--r--t/recipes/checks/nmu/nmu-not-a-nmu/eval/hints1
-rw-r--r--t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/nmu/nmu-qa-upload/build-spec/fill-values5
-rw-r--r--t/recipes/checks/nmu/nmu-qa-upload/eval/desc2
-rw-r--r--t/recipes/checks/nmu/nmu-qa-upload/eval/hints3
-rw-r--r--t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/debian/changelog.in8
-rw-r--r--t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/fill-values3
-rw-r--r--t/recipes/checks/nmu/nmu-space-around-maintainer/eval/desc2
-rw-r--r--t/recipes/checks/nmu/nmu-space-around-maintainer/eval/hints1
-rw-r--r--t/recipes/checks/nmu/nmu-team-upload/build-spec/debian/changelog.in9
-rw-r--r--t/recipes/checks/nmu/nmu-team-upload/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/nmu-team-upload/eval/desc2
-rw-r--r--t/recipes/checks/nmu/nmu-team-upload/eval/hints1
-rw-r--r--t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/nmu/nmu-ubuntu-native/eval/desc5
-rw-r--r--t/recipes/checks/nmu/nmu-ubuntu-native/eval/hints2
-rw-r--r--t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/fill-values3
-rw-r--r--t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/desc2
-rw-r--r--t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/hints1
-rw-r--r--t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/debian/changelog.in15
-rw-r--r--t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/fill-values4
-rw-r--r--t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/desc3
-rw-r--r--t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/hints0
-rw-r--r--t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/fill-values3
-rw-r--r--t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/desc2
-rw-r--r--t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/hints1
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/copyright14
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/upstream/metadata8
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/watch7
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/fill-values3
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/eval/desc2
-rw-r--r--t/recipes/checks/obsolete-sites/obsolete-sites/eval/hints7
-rw-r--r--t/recipes/checks/origtar/empty-orig-tarball/build-spec/fill-values3
-rw-r--r--t/recipes/checks/origtar/empty-orig-tarball/eval/desc2
-rw-r--r--t/recipes/checks/origtar/empty-orig-tarball/eval/hints1
-rw-r--r--t/recipes/checks/pe/missing-security-features-32-bit/build-spec/debian/install1
-rw-r--r--t/recipes/checks/pe/missing-security-features-32-bit/build-spec/fill-values4
-rw-r--r--t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/Makefile33
-rw-r--r--t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/hello.c26
-rw-r--r--t/recipes/checks/pe/missing-security-features-32-bit/eval/desc2
-rw-r--r--t/recipes/checks/pe/missing-security-features-32-bit/eval/hints3
-rw-r--r--t/recipes/checks/pe/missing-security-features-64-bit/build-spec/debian/install1
-rw-r--r--t/recipes/checks/pe/missing-security-features-64-bit/build-spec/fill-values4
-rw-r--r--t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/Makefile33
-rw-r--r--t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/hello.c26
-rw-r--r--t/recipes/checks/pe/missing-security-features-64-bit/eval/desc2
-rw-r--r--t/recipes/checks/pe/missing-security-features-64-bit/eval/hints3
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/build-spec/debian/install1
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/build-spec/fill-values3
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/.coverage0
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32+.exebin0 -> 628741 bytes
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32.exebin0 -> 592899 bytes
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/eval/desc4
-rw-r--r--t/recipes/checks/pe/missing-security-features-fp/eval/hints1
-rw-r--r--t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/debian/install1
-rw-r--r--t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/orig/bin/deprecated-usage3
-rw-r--r--t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/desc2
-rw-r--r--t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/hints1
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/script/syntax/legacy-libbaz/eval/hints1
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/config3
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/hints2
-rw-r--r--t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/rules111
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpfoo7
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3.Xfoo4
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3foo4
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/script/syntax/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/eval/hints1
-rw-r--r--t/recipes/checks/script/syntax/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/postinst87
-rw-r--r--t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/prerm186
-rw-r--r--t/recipes/checks/script/syntax/scripts-bashisms/build-spec/fill-values4
-rw-r--r--t/recipes/checks/script/syntax/scripts-bashisms/eval/desc2
-rw-r--r--t/recipes/checks/script/syntax/scripts-bashisms/eval/hints2
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/examples9
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/install14
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/links14
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/fill-values3
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/bin-env2
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/csh-shell1
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/cwl-runner1
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/interpreters.15
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/no-interpreter3
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/not-absolute2
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/python2.73
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/syntax4
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unusual2
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unversioned-pike4
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-bin-env-perl3
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local2
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local-bin-perl3
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/versioned-pike4
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/wrong-perl-path2
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/eval/desc4
-rw-r--r--t/recipes/checks/script/syntax/scripts-interpreters/eval/hints2
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/eval/desc5
-rw-r--r--t/recipes/checks/script/syntax/scripts-maintainer-general/eval/hints1
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/NEWS.Debian12
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/README.Debian5
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/changelog.in47
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/conffiles1
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/control42
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/copyright15
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/doc-base41
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/goodbye.desktop13
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/hello.desktop14
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu26
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu-method22
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/postinst6
-rwxr-xr-xt/recipes/checks/scripts/legacy-binary/build-spec/debian/rules92
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/debian/templates16
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/fill-values5
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/orig/INSTALL176
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/orig/Makefile12
-rw-r--r--t/recipes/checks/scripts/legacy-binary/build-spec/orig/hello.c8
-rw-r--r--t/recipes/checks/scripts/legacy-binary/eval/desc2
-rw-r--r--t/recipes/checks/scripts/legacy-binary/eval/hints2
-rw-r--r--t/recipes/checks/scripts/legacy-binary/eval/post-test3
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/control58
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/copyright8
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.postinst4
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.prerm4
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.postinst10
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.prerm7
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.shlibs8
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.symbols3
-rwxr-xr-xt/recipes/checks/scripts/legacy-libbaz/build-spec/debian/rules121
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/fill-values6
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/Makefile55
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/baz.c6
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/extra.c0
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/eval/desc2
-rw-r--r--t/recipes/checks/scripts/legacy-libbaz/eval/hints9
-rwxr-xr-xt/recipes/checks/scripts/legacy-libbaz/eval/post-test4
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/config3
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/eval/hints45
-rw-r--r--t/recipes/checks/scripts/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/debian/rules111
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpfoo7
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3.Xfoo4
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3foo4
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/scripts/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/eval/hints20
-rw-r--r--t/recipes/checks/scripts/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst87
-rw-r--r--t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/prerm186
-rw-r--r--t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values4
-rw-r--r--t/recipes/checks/scripts/scripts-bashisms/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-bashisms/eval/hints14
-rw-r--r--t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/install4
-rw-r--r--t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postinst7
-rw-r--r--t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postrm8
-rw-r--r--t/recipes/checks/scripts/scripts-calls-init-script/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/bad2
-rwxr-xr-xt/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/other-action3
-rwxr-xr-xt/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/self-invoke30
-rwxr-xr-xt/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/test-first6
-rw-r--r--t/recipes/checks/scripts/scripts-calls-init-script/eval/desc3
-rw-r--r--t/recipes/checks/scripts/scripts-calls-init-script/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/control.in63
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/POTFILES.in1
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/de.po13
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/templates.pot23
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.config8
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postinst10
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postrm10
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates3
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst5
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst5
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm6
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.postinst6
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.preinst6
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.postinst6
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.preinst6
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst6
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/eval/desc3
-rw-r--r--t/recipes/checks/scripts/scripts-control-interpreters/eval/hints26
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/install4
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/postrm26
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/preinst38
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/orphan1
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-diversions-variables/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/debian/install5
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postinst11
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postrm34
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/debian/preinst53
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/orig/file.11
-rwxr-xr-xt/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo2
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo.1p3
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/orig/orphan1
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-diversions/eval/hints3
-rw-r--r--t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postrm7
-rwxr-xr-xt/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/orig/true.c5
-rw-r--r--t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/hints3
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/debian/install1
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/scripts/scripts-exec/build-spec/debian/rules22
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/orig/01-normal-script3
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/orig/02-no-exec-script3
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/orig/03-hardlink-script1
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/orig/04-not-a-script2
-rw-r--r--t/recipes/checks/scripts/scripts-exec/build-spec/orig/script.pod18
-rw-r--r--t/recipes/checks/scripts/scripts-exec/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-exec/eval/hints1
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/examples2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/install2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/links2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/interpreters.15
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-node3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-nodejs3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/hints4
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/examples9
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/install14
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/links14
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/bin-env2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/csh-shell1
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/cwl-runner1
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/interpreters.15
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/no-interpreter3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/not-absolute2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/python2.73
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/syntax4
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unusual2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unversioned-pike4
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-bin-env-perl3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local-bin-perl3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/versioned-pike4
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/wrong-perl-path2
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/eval/desc3
-rw-r--r--t/recipes/checks/scripts/scripts-interpreters/eval/hints19
-rw-r--r--t/recipes/checks/scripts/scripts-killall/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/scripts/scripts-killall/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-killall/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-killall/eval/hints1
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/maintscript1
-rwxr-xr-xt/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postinst255
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/prerm11
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/build-spec/fill-values4
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/eval/desc5
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-general/eval/hints83
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postinst41
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postrm39
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/preinst37
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/prerm40
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/hints4
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/debian/postinst18
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/hints10
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst9
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints4
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm0
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/install1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm0
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/install1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/manpages1
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python2-script4
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python3-script4
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/script.pod18
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/eval/desc5
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep-fp/eval/hints0
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/clean1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/install1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/postinst14
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/rules12
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/gawk-script3
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/mawk-script3
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/php-script4
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python2-script4
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python3-script4
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/ruby-script3
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/script.pod18
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/tclsh-script3
-rwxr-xr-xt/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/wish-script3
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-dep/eval/hints14
-rw-r--r--t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/control.in29
-rw-r--r--t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-with.postinst10
-rw-r--r--t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-without.postinst10
-rw-r--r--t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/postinst8
-rw-r--r--t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/fill-values4
-rw-r--r--t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/hints3
-rw-r--r--t/recipes/checks/scripts/scripts-ocamlrun/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/scripts/scripts-ocamlrun/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/Makefile8
-rw-r--r--t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/script11
-rw-r--r--t/recipes/checks/scripts/scripts-ocamlrun/eval/desc4
-rw-r--r--t/recipes/checks/scripts/scripts-ocamlrun/eval/hints1
-rw-r--r--t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst10
-rw-r--r--t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst10
-rw-r--r--t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-skip-systemd-native/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-skip-systemd-native/eval/hints2
-rw-r--r--t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/changelog.in20
-rw-r--r--t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/postinst20
-rw-r--r--t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/hints1
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/postinst9
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/desc4
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/hints1
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postinst20
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postrm14
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/prerm14
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/hints8
-rw-r--r--t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst10
-rw-r--r--t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst13
-rw-r--r--t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values3
-rw-r--r--t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/desc2
-rw-r--r--t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/hints2
-rw-r--r--t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/debian/install1
-rw-r--r--t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/fill-values3
-rw-r--r--t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/orig/has-hashbang4
-rw-r--r--t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/desc4
-rw-r--r--t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/hints1
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/examples9
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/install14
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/links14
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/manpages1
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/fill-values3
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/bin-env2
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/csh-shell1
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/cwl-runner1
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/interpreters.15
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/no-interpreter3
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/not-absolute2
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/python2.73
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/syntax4
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unusual2
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unversioned-pike4
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-bin-env-perl3
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local2
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local-bin-perl3
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/versioned-pike4
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/wrong-perl-path2
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/eval/desc4
-rw-r--r--t/recipes/checks/shell/csh/scripts-interpreters/eval/hints1
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/config3
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/rules36
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/hints97
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/debian/install1
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/fill-values4
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/one87
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/two186
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/desc2
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/hints97
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/postinst87
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/prerm186
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/fill-values4
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/desc2
-rw-r--r--t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/hints97
-rw-r--r--t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/fill-values3
-rw-r--r--t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/desc4
-rw-r--r--t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/hints4
-rw-r--r--t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/fill-values3
-rw-r--r--t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/desc2
-rw-r--r--t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/hints1
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/control.in61
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.init17
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.postinst10
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init14
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-new-style.init31
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init52
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.default17
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.init21
-rw-r--r--t/recipes/checks/systemd/init.d-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/init.d-general/eval/desc2
-rw-r--r--t/recipes/checks/systemd/init.d-general/eval/hints6
-rw-r--r--t/recipes/checks/systemd/kill-mode-none/build-spec/debian/service13
-rw-r--r--t/recipes/checks/systemd/kill-mode-none/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/kill-mode-none/eval/desc2
-rw-r--r--t/recipes/checks/systemd/kill-mode-none/eval/hints2
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/changelog.in41
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/control.in16
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/copyright5
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list11
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list.sparc1
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00options1
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch7
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch5
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch7
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postinst14
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postrm9
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/preinst15
-rwxr-xr-xt/recipes/checks/systemd/legacy-scripts/build-spec/debian/rules105
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/scripts.conffiles6
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/debian/watch8
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/csh-foo2
-rwxr-xr-xt/recipes/checks/systemd/legacy-scripts/build-spec/orig/envfoo4
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/fish-foo2
-rwxr-xr-xt/recipes/checks/systemd/legacy-scripts/build-spec/orig/gccbug.dpatch39
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/guile-bizarre6
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-broken34
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-other22
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-no-lsb17
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-skeleton150
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/jruby-broken2
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/lefty-foo2
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/make-foo3
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-111
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-27
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-36
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perlfoo3
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpenvfoo7
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpfoo7
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/rubyfoo4
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/sh-broken2
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/suidperlfoo3
-rwxr-xr-xt/recipes/checks/systemd/legacy-scripts/build-spec/orig/tkfoo31
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/wishfoo4
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/build-spec/orig/xsession-test3
-rwxr-xr-xt/recipes/checks/systemd/legacy-scripts/build-spec/pre-build5
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/eval/desc2
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/eval/hints6
-rw-r--r--t/recipes/checks/systemd/legacy-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/control.in30
-rw-r--r--t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst10
-rw-r--r--t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst10
-rw-r--r--t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/desc2
-rw-r--r--t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/hints1
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/init21
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.other.init21
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.service9
-rwxr-xr-xt/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/rules17
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/desc2
-rw-r--r--t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/hints2
-rwxr-xr-xt/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/debian/rules10
-rw-r--r--t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/desc2
-rw-r--r--t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/hints4
-rw-r--r--t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/install1
-rw-r--r--t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/no-install.service8
-rw-r--r--t/recipes/checks/systemd/service-file-no-install-key/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/service-file-no-install-key/eval/desc2
-rw-r--r--t/recipes/checks/systemd/service-file-no-install-key/eval/hints1
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/install6
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test.service9
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test2.service4
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test3.service6
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test4.service8
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test5.service11
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test@.service5
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/build-spec/fill-values4
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/eval/desc2
-rw-r--r--t/recipes/checks/systemd/systemd-complex-service-file/eval/hints15
-rwxr-xr-xt/recipes/checks/systemd/systemd-general/build-spec/debian/bootmisc.sh59
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/init153
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/install3
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/links1
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/postrm10
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/rules30
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.masked.init22
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.service9
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.sh.init22
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init152
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.test.service13
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/debian/test.conf2
-rw-r--r--t/recipes/checks/systemd/systemd-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/systemd-general/eval/desc4
-rw-r--r--t/recipes/checks/systemd/systemd-general/eval/hints19
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/control.in55
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template.init21
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template@.service11
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.init21
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.service9
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without-rcs.init21
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without.init21
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/eval/desc4
-rw-r--r--t/recipes/checks/systemd/systemd-missing-services/eval/hints4
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-bad.service10
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-good.service10
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/desc2
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/hints3
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-bad.service12
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-good.service11
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/desc2
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/hints3
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-bad.service12
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-good.service12
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/desc2
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/hints4
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/control.in27
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-bad.service12
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-good.service12
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/desc2
-rw-r--r--t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/hints4
-rw-r--r--t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/install1
-rw-r--r--t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/test.conf2
-rw-r--r--t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/fill-values3
-rw-r--r--t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/desc2
-rw-r--r--t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/hints1
-rw-r--r--t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/install1
-rw-r--r--t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/test.conf2
-rw-r--r--t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/fill-values5
-rw-r--r--t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/desc2
-rw-r--r--t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/debian/install1
-rw-r--r--t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/fill-values4
-rw-r--r--t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/orig/nodejs/buffer.js3
-rw-r--r--t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/pre-build7
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/pre-build7
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/fill-values4
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/personal-github/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/personal-github/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/svn/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/svn/build-spec/fill-values4
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/svn/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-js/vcs/svn/eval/hints2
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/pre-build7
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/pre-build7
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/fill-values4
-rwxr-xr-xt/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/pre-build7
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/fill-values4
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/hints1
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/fill-values4
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/svn/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-perl/vcs/svn/eval/hints2
-rw-r--r--t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/install1
-rw-r--r--t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/fill-values6
-rw-r--r--t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/orig/perl5/Legacy/Module.pm1
-rw-r--r--t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/desc2
-rw-r--r--t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/hints1
-rw-r--r--t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/control.in118
-rw-r--r--t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/rules8
-rw-r--r--t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/desc11
-rw-r--r--t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/control7
-rw-r--r--t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-12
-rw-r--r--t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-22
-rw-r--r--t/recipes/checks/testsuite/all-superficial/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/all-superficial/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/all-superficial/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/command-with-ampersand/build-spec/debian/tests/control2
-rw-r--r--t/recipes/checks/testsuite/command-with-ampersand/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/command-with-ampersand/eval/desc4
-rw-r--r--t/recipes/checks/testsuite/command-with-ampersand/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/control.in20
-rw-r--r--t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/control2
-rw-r--r--t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/script14
-rw-r--r--t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/empty-tests-control/build-spec/debian/tests/control2
-rw-r--r--t/recipes/checks/testsuite/empty-tests-control/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/empty-tests-control/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/empty-tests-control/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/missing-tests-control/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/testsuite/missing-tests-control/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/testsuite/missing-tests-control/build-spec/pre-build7
-rw-r--r--t/recipes/checks/testsuite/missing-tests-control/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/missing-tests-control/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control50
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control.autodep81
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-12
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-22
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/under_score2
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/national-encoding/build-spec/orig/subdir/test-in-subdir2
-rwxr-xr-xt/recipes/checks/testsuite/national-encoding/build-spec/pre-build9
-rw-r--r--t/recipes/checks/testsuite/national-encoding/eval/desc4
-rw-r--r--t/recipes/checks/testsuite/national-encoding/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/control2
-rw-r--r--t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/script13
-rw-r--r--t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/hints4
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/control3
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/test-113
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/fill-values4
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/hints4
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/control1
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/test-113
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/hints8
-rw-r--r--t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/control2
-rw-r--r--t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/some-python7
-rw-r--r--t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/should-query-all-python-versions/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/should-query-all-python-versions/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control53
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control.autodep81
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-12
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-22
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/under_score2
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/build-spec/orig/subdir/test-in-subdir2
-rwxr-xr-xt/recipes/checks/testsuite/testsuite-general/build-spec/pre-build9
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/eval/desc4
-rw-r--r--t/recipes/checks/testsuite/testsuite-general/eval/hints16
-rw-r--r--t/recipes/checks/testsuite/testsuite-no-op/build-spec/debian/tests/control2
-rw-r--r--t/recipes/checks/testsuite/testsuite-no-op/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/testsuite-no-op/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/testsuite-no-op/eval/hints1
-rw-r--r--t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/control.in17
-rw-r--r--t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/control1
-rw-r--r--t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/test-12
-rw-r--r--t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/testsuite-unknown-suite/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/testsuite-unknown-suite/eval/hints2
-rw-r--r--t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/fill-values3
-rw-r--r--t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/desc2
-rw-r--r--t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/hints1
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/changelog.in57
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/control.in18
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postinst181
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postrm47
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/preinst18
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/prerm188
-rwxr-xr-xt/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/rules35
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/triggers4
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/watch11
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/fill-values6
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/eval/desc2
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/eval/hints2
-rw-r--r--t/recipes/checks/triggers/legacy-maintainer-scripts/eval/post-test1
-rw-r--r--t/recipes/checks/triggers/triggers-general/build-spec/debian/triggers15
-rw-r--r--t/recipes/checks/triggers/triggers-general/build-spec/fill-values3
-rw-r--r--t/recipes/checks/triggers/triggers-general/eval/desc2
-rw-r--r--t/recipes/checks/triggers/triggers-general/eval/hints3
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/udev/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/eval/hints1
-rw-r--r--t/recipes/checks/udev/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/checks/udev/udev-rules/build-spec/debian/rules13
-rw-r--r--t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.dirs2
-rw-r--r--t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.metadata.xml22
-rw-r--r--t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.udev25
-rw-r--r--t/recipes/checks/udev/udev-rules/build-spec/fill-values3
-rw-r--r--t/recipes/checks/udev/udev-rules/eval/desc2
-rw-r--r--t/recipes/checks/udev/udev-rules/eval/hints5
-rw-r--r--t/recipes/checks/unpack/ancient-source/build-spec/debian/watch1
-rw-r--r--t/recipes/checks/unpack/ancient-source/build-spec/fill-values3
-rw-r--r--t/recipes/checks/unpack/ancient-source/build-spec/orig/README1
-rwxr-xr-xt/recipes/checks/unpack/ancient-source/build-spec/pre-orig7
-rw-r--r--t/recipes/checks/unpack/ancient-source/eval/desc2
-rw-r--r--t/recipes/checks/unpack/ancient-source/eval/hints1
-rw-r--r--t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/fill-values3
-rwxr-xr-xt/recipes/checks/unpack/tar-removing-leading-slash/build-spec/tar-data7
-rw-r--r--t/recipes/checks/unpack/tar-removing-leading-slash/eval/desc2
-rw-r--r--t/recipes/checks/unpack/tar-removing-leading-slash/eval/hints1
-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
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/install2
-rwxr-xr-xt/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/script2
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-bin/build-spec/fill-values3
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-bin/eval/desc2
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-bin/eval/hints1
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/compat.in1
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/control.in15
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/rules5
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/build-spec/fill-values6
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/Makefile14
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/basic.c3
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/eval/desc2
-rw-r--r--t/recipes/checks/usrmerge/usrmerge-lib/eval/hints1
-rw-r--r--t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/debian/control.in19
-rw-r--r--t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/fill-values2
-rw-r--r--t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/desc2
-rw-r--r--t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/hints1
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/clean5
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/dirs15
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/install61
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/manpages0
-rwxr-xr-xt/recipes/checks/vim/files-foo-in-bar/build-spec/debian/rules18
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/fill-values3
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar1
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar.pod18
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/eval/desc2
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/eval/hints2
-rw-r--r--t/recipes/checks/vim/files-foo-in-bar/eval/post-test2
-rw-r--r--t/recipes/general-false-positives/basic-native-1.0/build-spec/fill-values5
-rw-r--r--t/recipes/general-false-positives/basic-native-1.0/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-native-1.0/eval/hints2
-rw-r--r--t/recipes/general-false-positives/basic-native-3.0-with-epoch/build-spec/fill-values7
-rw-r--r--t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/hints1
-rw-r--r--t/recipes/general-false-positives/basic-native-3.0/build-spec/fill-values5
-rw-r--r--t/recipes/general-false-positives/basic-native-3.0/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-native-3.0/eval/hints1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-1.0/build-spec/fill-values5
-rw-r--r--t/recipes/general-false-positives/basic-non-native-1.0/build-spec/orig/some-file1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-1.0/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-non-native-1.0/eval/hints6
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/extra-readme9
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/series1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/diff/README1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/fill-values5
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/README1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/basic-quilt-updeb.doc-base.EX0
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/postinst.ex0
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/hints5
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/fill-values7
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/orig/some-file1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/hints5
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/extra-readme9
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/series1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0/build-spec/fill-values5
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0/build-spec/orig/README1
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0/eval/desc2
-rw-r--r--t/recipes/general-false-positives/basic-non-native-3.0/eval/hints5
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/debian/patches/series1
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/fill-values4
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/desc5
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/literal2
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error/build-spec/debian/patches/series1
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error/build-spec/fill-values4
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error/eval/desc6
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-error/eval/literal2
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-info/build-spec/debian/manpages1
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-info/build-spec/fill-values3
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-info/build-spec/orig/man/lsmod.859
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-info/eval/desc6
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-info/eval/hints14
-rw-r--r--t/recipes/lintian-features/exit-status/fail-on-info/eval/literal1
-rw-r--r--t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/debian/manpages1
-rw-r--r--t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/fill-values3
-rw-r--r--t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/orig/man/lsmod.859
-rw-r--r--t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/desc5
-rw-r--r--t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/literal5
-rw-r--r--t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/install1
-rw-r--r--t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/lintian-overrides2
-rw-r--r--t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/fill-values3
-rwxr-xr-xt/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/orig/file4
-rw-r--r--t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/desc6
-rw-r--r--t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/literal2
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/debian/control.in20
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/debian/dirs2
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/debian/examples1
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/debian/install2
-rwxr-xr-xt/recipes/lintian-features/html-output/build-spec/debian/rules5
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/diff/Changes1
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/fill-values5
-rwxr-xr-xt/recipes/lintian-features/html-output/build-spec/orig/example2
-rwxr-xr-xt/recipes/lintian-features/html-output/build-spec/orig/script3
-rw-r--r--t/recipes/lintian-features/html-output/build-spec/orig/script.desktop9
-rw-r--r--t/recipes/lintian-features/html-output/eval/desc5
-rw-r--r--t/recipes/lintian-features/html-output/eval/literal800
-rw-r--r--t/recipes/lintian-features/html-output/eval/post-test3
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/debian/control.in20
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/debian/dirs2
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/debian/examples1
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/debian/install2
-rwxr-xr-xt/recipes/lintian-features/json-output/build-spec/debian/rules5
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/debian/source.lintian-overrides1
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/diff/Changes1
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/fill-values5
-rwxr-xr-xt/recipes/lintian-features/json-output/build-spec/orig/example2
-rwxr-xr-xt/recipes/lintian-features/json-output/build-spec/orig/script3
-rw-r--r--t/recipes/lintian-features/json-output/build-spec/orig/script.desktop9
-rw-r--r--t/recipes/lintian-features/json-output/eval/desc5
-rw-r--r--t/recipes/lintian-features/json-output/eval/literal297
-rw-r--r--t/recipes/lintian-features/json-output/eval/post-test2
-rw-r--r--t/recipes/lintian-features/lintian-check-tags-file/build-spec/debian/control.in12
-rw-r--r--t/recipes/lintian-features/lintian-check-tags-file/build-spec/fill-values3
-rw-r--r--t/recipes/lintian-features/lintian-check-tags-file/eval/desc5
-rw-r--r--t/recipes/lintian-features/lintian-check-tags-file/eval/literal2
-rw-r--r--t/recipes/lintian-features/lintian-check-tags-file/eval/tag-list7
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/debian/control.in19
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/debian/dirs2
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/debian/examples1
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/debian/install2
-rwxr-xr-xt/recipes/lintian-features/lintian-display-level/build-spec/debian/rules5
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/diff/Changes1
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/fill-values4
-rwxr-xr-xt/recipes/lintian-features/lintian-display-level/build-spec/orig/example2
-rwxr-xr-xt/recipes/lintian-features/lintian-display-level/build-spec/orig/script3
-rw-r--r--t/recipes/lintian-features/lintian-display-level/build-spec/orig/script.desktop7
-rw-r--r--t/recipes/lintian-features/lintian-display-level/eval/desc5
-rw-r--r--t/recipes/lintian-features/lintian-display-level/eval/literal9
-rw-r--r--t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/control.in19
-rw-r--r--t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/dirs3
-rwxr-xr-xt/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/rules5
-rw-r--r--t/recipes/lintian-features/lintian-ftp-rejects/build-spec/fill-values3
-rw-r--r--t/recipes/lintian-features/lintian-ftp-rejects/eval/desc4
-rw-r--r--t/recipes/lintian-features/lintian-ftp-rejects/eval/literal3
-rw-r--r--t/recipes/lintian-features/lintian-no-override/build-spec/debian/dirs1
-rw-r--r--t/recipes/lintian-features/lintian-no-override/build-spec/debian/lintian-no-override.lintian-overrides1
-rw-r--r--t/recipes/lintian-features/lintian-no-override/build-spec/fill-values3
-rw-r--r--t/recipes/lintian-features/lintian-no-override/eval/desc5
-rw-r--r--t/recipes/lintian-features/lintian-no-override/eval/literal3
-rw-r--r--t/recipes/lintian-features/lintian-suppress-tags/build-spec/debian/control.in12
-rw-r--r--t/recipes/lintian-features/lintian-suppress-tags/build-spec/fill-values3
-rw-r--r--t/recipes/lintian-features/lintian-suppress-tags/eval/desc6
-rw-r--r--t/recipes/lintian-features/lintian-suppress-tags/eval/literal1
-rw-r--r--t/recipes/lintian-features/lintian-suppress-tags/eval/suppress7
-rw-r--r--t/recipes/odd-inputs/file-info-errors/build-spec/fill-values3
-rw-r--r--t/recipes/odd-inputs/file-info-errors/build-spec/orig/README1
-rw-r--r--t/recipes/odd-inputs/file-info-errors/build-spec/orig/split.clam.ole.docaabin0 -> 8192 bytes
-rw-r--r--t/recipes/odd-inputs/file-info-errors/eval/desc4
-rw-r--r--t/recipes/odd-inputs/file-info-errors/eval/literal2
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/dpkg-overrides1
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/fill-values4
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-1/eval/desc4
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-1/eval/literal1
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/dpkg-overrides1
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/fill-values4
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-2/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-2/eval/hints1
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/dpkg-overrides1
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/fill-values4
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-3/eval/desc4
-rw-r--r--t/recipes/odd-inputs/source/control-field-traversal-3/eval/literal1
-rw-r--r--t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/README.source1
-rw-r--r--t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/patches/series0
-rw-r--r--t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/fill-values5
-rwxr-xr-xt/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/pre-build10
-rw-r--r--t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/hints1
-rw-r--r--t/recipes/odd-inputs/source/debian-symlink/build-spec/fill-values4
-rwxr-xr-xt/recipes/odd-inputs/source/debian-symlink/build-spec/post-clean7
-rw-r--r--t/recipes/odd-inputs/source/debian-symlink/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/debian-symlink/eval/hints1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/debian/watch1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/fill-values3
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/README1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.c1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.h1
-rwxr-xr-xt/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/tar-orig10
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/hints3
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/README1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/debian/watch1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/fill-values3
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.c1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.h1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/orig/some-file1
-rwxr-xr-xt/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/tar-orig8
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/hints3
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/debian/watch1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/fill-values3
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/README1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.c1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.h1
-rwxr-xr-xt/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/tar-orig8
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/hints3
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/README.source1
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/watch0
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/fill-values4
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/orig/README1
-rwxr-xr-xt/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/tar-orig8
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/desc2
-rw-r--r--t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/hints2
-rw-r--r--t/recipes/runner-features/runtests-arch-amd64/build-spec/debian/install1
-rw-r--r--t/recipes/runner-features/runtests-arch-amd64/build-spec/fill-values3
-rw-r--r--t/recipes/runner-features/runtests-arch-amd64/build-spec/orig/dummy1
-rw-r--r--t/recipes/runner-features/runtests-arch-amd64/eval/desc5
-rw-r--r--t/recipes/runner-features/runtests-arch-amd64/eval/literal0
-rw-r--r--t/recipes/runner-features/runtests-arch-i386/build-spec/debian/install1
-rw-r--r--t/recipes/runner-features/runtests-arch-i386/build-spec/fill-values3
-rw-r--r--t/recipes/runner-features/runtests-arch-i386/build-spec/orig/dummy1
-rw-r--r--t/recipes/runner-features/runtests-arch-i386/eval/desc5
-rw-r--r--t/recipes/runner-features/runtests-arch-i386/eval/literal0
-rw-r--r--t/recipes/runner-features/runtests-calibration/build-spec/fill-values3
-rw-r--r--t/recipes/runner-features/runtests-calibration/eval/desc2
-rw-r--r--t/recipes/runner-features/runtests-calibration/eval/hints1
-rwxr-xr-xt/recipes/runner-features/runtests-calibration/eval/test-calibration7
-rw-r--r--t/recipes/runner-features/runtests-options/build-spec/debian/compat.in1
-rw-r--r--t/recipes/runner-features/runtests-options/build-spec/debian/control.in16
-rw-r--r--t/recipes/runner-features/runtests-options/build-spec/fill-values3
-rw-r--r--t/recipes/runner-features/runtests-options/eval/desc5
-rw-r--r--t/recipes/runner-features/runtests-options/eval/literal5
-rw-r--r--t/recipes/runner-features/runtests-todo/build-spec/debian/install1
-rw-r--r--t/recipes/runner-features/runtests-todo/build-spec/fill-values3
-rw-r--r--t/recipes/runner-features/runtests-todo/build-spec/orig/dummy1
-rw-r--r--t/recipes/runner-features/runtests-todo/eval/desc5
-rw-r--r--t/recipes/runner-features/runtests-todo/eval/literal1
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/debian/changelog.in6
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/debian/compat.in1
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/debian/control.in12
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/debian/copyright10
-rwxr-xr-xt/recipes/tracking/generic-dh-make-2005/build-spec/debian/rules100
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/fill-values8
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/build-spec/orig/README9
-rwxr-xr-xt/recipes/tracking/generic-dh-make-2005/build-spec/pre-build.in5
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/eval/desc2
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/eval/hints31
-rw-r--r--t/recipes/tracking/generic-dh-make-2005/eval/post-test1
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/README.Debian6
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/changelog.in5
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/compat.in1
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/control.in13
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/copyright24
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/cron.d.ex4
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/dirs2
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/docs1
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-install.ex45
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex15
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex25
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex10
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX22
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.ex157
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex296
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.1.ex59
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex156
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.xml.ex291
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/menu.ex2
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postinst.ex41
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postrm.ex39
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/preinst.ex37
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/prerm.ex40
-rwxr-xr-xt/recipes/tracking/generic-dh-make-2008/build-spec/debian/rules91
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/debian/watch.ex23
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/fill-values7
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/orig/Makefile4
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/build-spec/orig/README13
-rwxr-xr-xt/recipes/tracking/generic-dh-make-2008/build-spec/pre-build.in5
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/eval/desc3
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/eval/hints54
-rw-r--r--t/recipes/tracking/generic-dh-make-2008/eval/post-test1
l---------t/scripts/01-critic/bin.t1
l---------t/scripts/01-critic/lib.t1
l---------t/scripts/01-critic/private.t1
-rwxr-xr-xt/scripts/01-critic/runner.pl83
l---------t/scripts/01-critic/test-scripts.t1
l---------t/scripts/02-minimum-version/bin.t1
l---------t/scripts/02-minimum-version/lib.t1
l---------t/scripts/02-minimum-version/private.t1
-rwxr-xr-xt/scripts/02-minimum-version/runner.pl31
l---------t/scripts/02-minimum-version/test-scripts.t1
l---------t/scripts/03-strict/bin.t1
l---------t/scripts/03-strict/lib.t1
l---------t/scripts/03-strict/private.t1
-rwxr-xr-xt/scripts/03-strict/runner.pl47
l---------t/scripts/03-strict/test-scripts.t1
-rw-r--r--t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_amd64.changes98
-rw-r--r--t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_source.changes94
-rw-r--r--t/scripts/Lintian/Lab/data/changes/lintian_2.5.11_amd64.changes272
-rw-r--r--t/scripts/Lintian/Lab/data/changes/lintian_2.5.7_amd64.changes264
-rw-r--r--t/scripts/Lintian/Lab/data/changes/lintian_2.5.8_amd64.changes106
-rw-r--r--t/scripts/Lintian/Lab/data/changes/lintian_2.5.9_amd64.changes101
-rwxr-xr-xt/scripts/Lintian/Relation/01-basic.t19
-rwxr-xr-xt/scripts/Lintian/Relation/02-architecture.t19
-rwxr-xr-xt/scripts/Lintian/Relation/03-duplicates.t29
-rwxr-xr-xt/scripts/Lintian/Relation/04-multiarch.t64
-rwxr-xr-xt/scripts/Lintian/Relation/05-invalid.t66
-rwxr-xr-xt/scripts/Lintian/Relation/06-build-profiles.t24
-rw-r--r--t/scripts/Lintian/Relation/07-implies.t46
-rw-r--r--t/scripts/Lintian/Util/data/pgp-eof-missing-sign5
-rw-r--r--t/scripts/Lintian/Util/data/pgp-leading-unsigned14
-rw-r--r--t/scripts/Lintian/Util/data/pgp-malformed-header11
-rw-r--r--t/scripts/Lintian/Util/data/pgp-no-end-pgp-header7
-rw-r--r--t/scripts/Lintian/Util/data/pgp-sig-before-start7
-rw-r--r--t/scripts/Lintian/Util/data/pgp-trailing-unsigned14
-rw-r--r--t/scripts/Lintian/Util/data/pgp-two-signatures16
-rw-r--r--t/scripts/Lintian/Util/data/pgp-two-signed-msgs19
-rw-r--r--t/scripts/Lintian/Util/data/pgp-unexpected-header6
-rwxr-xr-xt/scripts/Lintian/Util/dctrl-parser.t64
-rwxr-xr-xt/scripts/Lintian/Util/path.t69
-rwxr-xr-xt/scripts/check-load.t50
-rw-r--r--t/scripts/harness/calibrated.t54
-rw-r--r--t/scripts/harness/check-result.t117
-rw-r--r--t/scripts/harness/desc-fields.t172
-rw-r--r--t/scripts/harness/diagnostic-value.t102
-rw-r--r--t/scripts/harness/get-tagnames.t63
-rw-r--r--t/scripts/harness/hintdiff.t207
-rw-r--r--t/scripts/harness/hintextract.t98
-rw-r--r--t/scripts/harness/match-glob.t67
-rw-r--r--t/scripts/harness/no-watch-file-in-native.t70
-rw-r--r--t/scripts/harness/prepare.t159
-rw-r--r--t/scripts/harness/sort-order.t89
-rw-r--r--t/scripts/harness/tag-coverage.t171
-rw-r--r--t/scripts/harness/watch-file-in-non-native.t70
-rwxr-xr-xt/scripts/pod-coverage.t30
-rwxr-xr-xt/scripts/pod-spelling.t140
-rwxr-xr-xt/scripts/pod-synopsis.t32
-rwxr-xr-xt/scripts/pod.t37
-rwxr-xr-xt/scripts/profile-load.t27
-rwxr-xr-xt/scripts/profiles-coverage.t81
-rw-r--r--t/scripts/run-private-scripts.t79
-rw-r--r--t/scripts/spellintian-textual-content.t74
-rwxr-xr-xt/scripts/spellintian.t169
-rw-r--r--t/scripts/tags/fields.t180
-rwxr-xr-xt/scripts/version.t38
-rw-r--r--t/skeletons/changes6
-rw-r--r--t/skeletons/deb12
-rw-r--r--t/skeletons/source-native9
-rw-r--r--t/skeletons/source-non-native11
-rw-r--r--t/skeletons/testing3
-rw-r--r--t/skeletons/upload-builder-only8
-rw-r--r--t/skeletons/upload-native9
-rw-r--r--t/skeletons/upload-non-native12
-rw-r--r--t/templates/binary-control/control.in12
-rw-r--r--t/templates/changes-simple-filler/Makefile.in17
-rw-r--r--t/templates/changes-simple-filler/fill-values.d/changes-simple-filler.values2
-rw-r--r--t/templates/deb-make-builder/Makefile.in121
-rw-r--r--t/templates/deb-make-builder/control-members2
-rw-r--r--t/templates/deb-make-builder/deb-members3
-rw-r--r--t/templates/deb-make-builder/fill-values.d/deb-make-builder.values2
-rw-r--r--t/templates/deb-make-builder/members/debian-binary1
-rwxr-xr-xt/templates/deb-make-builder/tar-control13
-rwxr-xr-xt/templates/deb-make-builder/tar-data7
-rw-r--r--t/templates/debian-extra-non-native/upstream/metadata2
-rw-r--r--t/templates/debian-extra-non-native/watch2
-rw-r--r--t/templates/debian-native/changelog.in17
-rw-r--r--t/templates/debian-native/control.in19
-rw-r--r--t/templates/debian-native/copyright29
-rwxr-xr-xt/templates/debian-native/rules13
-rw-r--r--t/templates/debian-native/source/format.in1
-rw-r--r--t/templates/debian-native/tests/control1
-rwxr-xr-xt/templates/debian-native/tests/test2
-rw-r--r--t/templates/lintian-invocation/fill-values.d/lintian-invocation.values1
-rw-r--r--t/templates/mandatory-docs/changelog.in17
-rw-r--r--t/templates/mandatory-docs/copyright29
-rw-r--r--t/templates/source-make-builder/Makefile.in86
-rw-r--r--t/templates/source-make-builder/fill-values.d/source-make-builder.values3
-rwxr-xr-xt/templates/source-make-builder/tar-orig8
-rw-r--r--t/templates/test-runner-tags/generic.t42
-rw-r--r--t/templates/upload-make-builder/Makefile.in90
-rw-r--r--t/templates/upload-make-builder/fill-values.d/upload-make-builder.values4
-rw-r--r--t/whitelists/binary-control2
-rw-r--r--t/whitelists/debian-packaging8
-rw-r--r--t/whitelists/make-builder4
-rw-r--r--t/whitelists/mandatory-docs2
12925 files changed, 212518 insertions, 0 deletions
diff --git a/t/COVERAGE b/t/COVERAGE
new file mode 100644
index 0000000..0f5f3d1
--- /dev/null
+++ b/t/COVERAGE
@@ -0,0 +1,162 @@
+Last generated 2016-10-22
+Coverage (Tags): 1106/1170 (94.53%), w. legacy tests: 1161/1170 (99.23%)
+Coverage (Checks): 41/50 (82.00%), w. legacy tests: 45/50 (90.00%)
+
+The following tags are not tested by the test suite:
+
+deb-format tar-errors-from-control
+
+debhelper debhelper-compatibility-level-not-a-number
+
+files udeb-contains-documentation-file
+
+menu-format menu-item-contains-unknown-tag
+menu-format menu-item-needs-dwww
+menu-format old-format-menu-file
+menu-format whitespace-after-continuation-character
+
+menus executable-in-usr-share-docbase
+menus executable-menu-file
+
+The following tags are only tested by the legacy test suite:
+
+binaries binary-has-unneeded-section
+binaries binary-with-bad-dynamic-table
+
+files desktop-file-in-wrong-dir
+files package-contains-devhelp-file-without-symlink
+files package-contains-upstream-installation-documentation
+files script-in-usr-share-doc
+files script-with-language-extension
+files use-of-compat-symlink
+
+init.d duplicate-updaterc.d-calls-in-postrm
+init.d init.d-script-has-bad-lsb-line
+init.d init.d-script-has-duplicate-lsb-section
+init.d init.d-script-has-unknown-lsb-keyword
+init.d init.d-script-has-unterminated-lsb-section
+init.d init.d-script-missing-lsb-keyword
+init.d init.d-script-not-included-in-package
+init.d init.d-script-not-marked-as-conffile
+init.d output-of-updaterc.d-not-redirected-to-dev-null
+init.d postrm-contains-additional-updaterc.d-calls
+init.d postrm-does-not-call-updaterc.d-for-init.d-script
+init.d preinst-calls-updaterc.d
+init.d prerm-calls-updaterc.d
+
+menu-format desktop-contains-deprecated-key
+menu-format desktop-entry-missing-required-key
+menu-format menu-item-missing-required-tag
+menu-format menu-item-needs-tag-has-unknown-value
+menu-format non-wm-module-in-wm-modules-menu-section
+menu-format su-to-root-with-usr-sbin
+menu-format su-wrapper-not-su-to-root
+menu-format su-wrapper-without--c
+menu-format unquoted-string-in-menu-item
+
+menus bad-menu-file-name
+menus doc-base-document-field-ends-in-whitespace
+menus doc-base-file-duplicated-format
+menus doc-base-file-lacks-required-field
+menus doc-base-file-no-format
+menus doc-base-file-no-format-section
+menus doc-base-file-no-index
+menus doc-base-file-references-missing-file
+menus doc-base-file-unknown-field
+menus doc-base-file-unknown-format
+menus doc-base-file-uses-obsolete-national-encoding
+menus doc-base-index-references-multiple-files
+menus doc-base-invalid-document-field
+menus doc-base-unknown-section
+menus menu-file-in-usr-lib
+menus menu-method-should-include-menu-h
+menus postinst-does-not-call-updatemenus
+menus postrm-does-not-call-updatemenus
+
+po-debconf newer-debconf-templates
+po-debconf unknown-encoding-in-po-file
+
+shared-libs symbols-declared-but-not-shlib
+shared-libs symbols-declares-dependency-on-other-package
+shared-libs udeb-postinst-must-not-call-ldconfig
+shared-libs unknown-meta-field-in-symbols-file
+shared-libs unused-shlib-entry-in-symbols-control-file
+
+Breakdown of remaining tags in legacy test suite by test case:
+
+binary
+ binary-has-unneeded-section
+ desktop-contains-deprecated-key
+ desktop-entry-missing-required-key
+ doc-base-document-field-ends-in-whitespace
+ doc-base-file-duplicated-format
+ doc-base-file-lacks-required-field
+ doc-base-file-no-format
+ doc-base-file-no-format-section
+ doc-base-file-no-index
+ doc-base-file-references-missing-file
+ doc-base-file-unknown-field
+ doc-base-file-unknown-format
+ doc-base-file-uses-obsolete-national-encoding
+ doc-base-index-references-multiple-files
+ doc-base-invalid-document-field
+ doc-base-unknown-section
+ menu-file-in-usr-lib
+ menu-item-missing-required-tag
+ menu-item-needs-tag-has-unknown-value
+ menu-method-should-include-menu-h
+ non-wm-module-in-wm-modules-menu-section
+ package-contains-upstream-installation-documentation
+ postinst-does-not-call-updatemenus
+ postrm-does-not-call-updatemenus
+ su-to-root-with-usr-sbin
+ su-wrapper-not-su-to-root
+ su-wrapper-without--c
+ unquoted-string-in-menu-item
+
+debconf
+ newer-debconf-templates
+ udeb-postinst-must-not-call-ldconfig
+ unknown-encoding-in-po-file
+
+debug
+ binary-with-bad-dynamic-table
+ symbols-declared-but-not-shlib
+ symbols-declares-dependency-on-other-package
+ unknown-meta-field-in-symbols-file
+ unused-shlib-entry-in-symbols-control-file
+
+etcfiles
+
+fields
+
+filenames
+ bad-menu-file-name
+ desktop-file-in-wrong-dir
+ package-contains-devhelp-file-without-symlink
+ use-of-compat-symlink
+
+foo++
+
+libbaz
+
+maintainer-scripts
+ init.d-script-not-included-in-package
+ init.d-script-not-marked-as-conffile
+ output-of-updaterc.d-not-redirected-to-dev-null
+ postrm-contains-additional-updaterc.d-calls
+ postrm-does-not-call-updaterc.d-for-init.d-script
+ preinst-calls-updaterc.d
+ prerm-calls-updaterc.d
+
+relations
+
+scripts
+ duplicate-updaterc.d-calls-in-postrm
+ init.d-script-has-bad-lsb-line
+ init.d-script-has-duplicate-lsb-section
+ init.d-script-has-unknown-lsb-keyword
+ init.d-script-has-unterminated-lsb-section
+ init.d-script-missing-lsb-keyword
+ script-in-usr-share-doc
+ script-with-language-extension
diff --git a/t/defaults/desc b/t/defaults/desc
new file mode 100644
index 0000000..87cd740
--- /dev/null
+++ b/t/defaults/desc
@@ -0,0 +1,9 @@
+Check: all
+Fill-Values-Folder: fill-values.d
+Runner: generic.t
+Profile: debian
+Output-Format: universal
+Skeleton: testing
+Match-Strategy: hints
+Default-Lintian-Options: --pedantic --display-info --display-experimental --display-level +classification --show-overrides --check-part [% $check %]
+Test-Architectures: any
diff --git a/t/defaults/files b/t/defaults/files
new file mode 100644
index 0000000..f526e54
--- /dev/null
+++ b/t/defaults/files
@@ -0,0 +1,6 @@
+Test-Specification: desc
+Test-Constraints: constraints
+Test-Options: test-options
+Fill-Values: fill-values
+Builder: builder
+Log: log
diff --git a/t/defaults/fill-values b/t/defaults/fill-values
new file mode 100644
index 0000000..58590ca
--- /dev/null
+++ b/t/defaults/fill-values
@@ -0,0 +1,11 @@
+Description: No Description Available
+Author: Debian Lintian Maintainers <lintian-maint@debian.org>
+Check: all
+Section: devel
+Priority: optional
+Distribution: unstable
+Package-Architecture: all
+Fill-Values-Folder: fill-values.d
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Prev-Date: Mon, 01 Jan 1990 00:00:00 +0100
diff --git a/t/recipes/README b/t/recipes/README
new file mode 100644
index 0000000..196953c
--- /dev/null
+++ b/t/recipes/README
@@ -0,0 +1,359 @@
+WRITING A TEST
+==============
+
+A test in this framework is a directory containing a desc file, providing
+metadata about the test, and other files used to build the test package.
+
+Naming conventions
+------------------
+
+Each test name should begin with the name of the part tested, e.g.
+
+<checkname>-...
+<unpackname>-...
+lintian-...
+lintian-info-...
+
+Use generic- as a prefix for test cases that don't cover a specific
+portion of Lintian but instead test Lintian's behavior on a useful special
+case of package (such as a generic dh-make template).
+
+The desc file
+-------------
+
+The desc file is formatted like a Debian control file. The required
+fields are:
+
+ Testname: <should match the directory name>
+ Version: <version number of package>
+ Description: <description of the purpose of the test>
+
+In addition, the tags (if any) that the test case is testing for should be
+listed in a Test-For key. If the test case is expecting some tags to not
+be issued (checking against false positives), those tags should be listed in a
+Test-Against key. In both cases, the tags should be separated by
+whitespace. The following format is suggested for multiple tags:
+
+ Test-For:
+ lintian-tag-1
+ lintian-tag-2
+
+with the tags listed in alphabetical order.
+
+The default lintian command-line options are -I -E. You can change these
+options with an Options field specifying the lintian options to use. This
+overrides the default, so add -I -E if you want to include those options.
+For example, to test --show-overrides with the -T option, use:
+
+ Options: --show-overrides -T no-copyright-file
+
+Lintian is run in the test's directory. Please use a local, relative
+reference to the file or list the tags explicitly with '--suppress-tags'.
+
+By default, the Lintian output is sorted before comparing it to the 'hints'
+file. To suppress the sort (when, for instance, checking non-standard
+output formats), use:
+
+ Sort: no
+
+By default, all tests are built as native Debian packages. To build
+the test case as a non-native package, add:
+
+ Type: non-native
+
+to the 'desc' file. You will also want to change the version number to
+be non-native unless you're testing a mismatch.
+
+By default all tests are run with the default Lintian profile. If a
+different profile is needed it can be specified via:
+
+ Profile: test/profile
+
+The value will be passed to Lintian via the --profile parameter.
+
+There are times when one wants to add a test for something that needs
+to be done. To mark it as such, preventing the test suite from
+failing, use:
+
+ Todo: yes
+
+Test cases marked as 'Todo: yes' will succeed if they fail _the testing step_
+and fail if they succeed. Although this option can be very useful to
+document what needs to be done, the ideal situation is to have none of
+them :)
+
+Unless you're writing a test case just to improve Lintian's test coverage,
+you will normally want to add a References field giving the source of the
+test or the bug that you're testing for. This should be one of "Debian
+Bug#nnnn" for a bug report, a URL into the debian-lint-maint mailing list
+archives, or a message ID for the message to the list.
+
+The meaning of skeleton has changed in newer versions of the test runner.
+Previously a skeleton indicated a template set, but now it refers to a
+complete layout of the test working directory. It also defines the
+builder. Please look in t/skeletons for examples.
+
+There are currently two fields available when defining skeletons:
+
+ Template-Sets: DEST_DIR (TEMPLATE_SET)
+
+populates DEST_DIR with the files from TEMPLATE_SET. Please use only
+relative paths. To install into the root of the test working directory
+(which you can find somewhere in ./debian/test-out/) please use a dot.
+multiple declarations must be separated by commas. Continuation lines
+are okay.
+
+ Fill-Targets: DEST_FILE
+ Fill-Targets: DEST_DIR (WHITE_LIST)
+
+In the file form, the declaration allows the filling of the file
+DEST_FILE through the use of DEST_FILE.in. This does not mean that the
+template is always filled. The algorithm considers other factors. No
+filling takes place, for example, when the fill data and the file
+modification time of the template are older than the generated file.
+
+In the directory form, the declaration requires a named template
+whitelist in parentheses. In that case, the template whitelist will
+give the filenames to fill. Please separate multiple declaration with
+a comma. It it okay to use indented continuation lines.
+
+The general order is:
+
+1. Copy template sets to the destinations in the working directory.
+2. Copy the original test details into the working directory.
+3. Delete templates for which originals are present.
+4. Fill whitelisted templates if the generated files are dated.
+
+To use a skeleton, please use:
+
+ Skeleton: <skeleton to start from>
+
+Whitelists only have one field, 'May-Generate:'. It permits the
+generation of the listed file through template completion. Please list
+the generated file and not the template. Multiple files must be
+separated by spaces.
+
+Sometimes tests require the presence of certain packages. Please use
+Extra-Build-Depends in most cases. The specified packages will be
+added to Build-Depends when building the package.
+
+Please use Test-Depends only in cases when packages must not (or do
+not need to) be added to Build-Depends. That can be helpful when
+testing for missing build dependencies, or when the standard builder
+is overridden and requires other software. The field Test-Depends
+should probably be renamed.
+
+Sometimes tests fail if certain non-required packages are installed.
+If you notice such a case, you can use:
+
+ Test-Conflicts: <dpkg conflicts field>
+
+If any of the dependencies are unavailable or conflicts are present,
+the test will be skipped.
+
+All other fields in the desc file are optional and control the values
+filled into the template control and changelog files by the test suite
+harness. The following additional fields are currently supported:
+
+ Date: <date for changelog entry>
+ Author: <maintainer for control and changelog>
+ Section: <section for package>
+ Standards-Version: <standard version for control>
+
+The Architecture: field cannot be overridden. It is automatically set
+to equal the host architecture. If you require packages built with
+Architecture: all, please make a copy of the particular template and
+set Architecture: all manually.
+
+See t/runtests and t/templates/default/{control,changelog}.in for how
+they're used.
+
+The test directory
+------------------
+
+The test directory should contain the following files and directories:
+
+debian
+ The Debian packaging files. This directory will form the ./debian
+ subdirectory in the completed package. During the build process, it
+ will be filled with heavily parameterized templates that are best
+ controlled via settings in 'desc'. You can override both the
+ templates (*.in) and the plain files (but using templates is
+ probably better) by placing files directly into this directory.
+
+diff
+ Files that override those in 'orig' if necessary. This directory
+ should normally not have a debian subdirectory. It is mostly
+ useful when testing patch systems. Very few tests need to use
+ this directory.
+
+orig
+ For a non-native package, this is the file tree that goes into the
+ upstream tarball. The files here should also be present with the
+ same contents in the debian directory unless you're intentionally
+ creating a diff. However, as normal with a Debian package, you
+ can omit files entirely from the debian directory and the
+ deletions will be ignored by dpkg-buildpackage.
+
+tags
+ The expected output of Lintian when run on the package, including
+ info and experimental tags. The Lintian output will be
+ lexicographically sorted before comparing it with tags. This file
+ may be empty if the test case should produce no Lintian output.
+
+pre_upstream
+ If present and executable, this script is run for a non-native test
+ type after preparing the upstream directory but before creating the
+ tarball. It receives the path to the package directory as its first
+ argument and can make any modifications that can't easily be
+ represented in the template system (such as creating files that
+ shouldn't be stored in a revision control system).
+
+pre_build
+ If present and executable, this script is run after preparing the
+ upstream tarball (if any) and the package directory, but before
+ running dpkg-buildpackage or lintian. It receives the path to the
+ package directory as its first argument and can make any
+ modifications that can't otherwise be represented in the template
+ system (such as deleting files from the template that aren't
+ desired).
+
+post_test
+ If present, assumed to be a sed script that is run on the output
+ of Lintian before comparing it to the tags file. The most common
+ use for this script is to remove the architecture from tags
+ produced on the .changes file with a line like:
+
+ s/_[^ _]* changes/_arch changes/
+
+ but it may be useful for other cases where the output of Lintian
+ may change on different systems.
+
+test_calibration
+ If present and executable, this script is run after the Lintian
+ output has been generated and after post_test (if present). The
+ script can be used to calibrate the expected output or actual
+ output.
+
+ It is useful for cases the expected output is architecture
+ dependent beyond what the post_test script can handle.
+
+ The script will be passed 3 arguments, the "expected output" file,
+ the "actual output" file and file name to write the "calibrated
+ expected output". The script may modify the "actual output" file
+ and create the calibration file, which (if it is created) will
+ be used instead of the original "expected output" file.
+
+
+Be aware that Git doesn't track directories, only files, so any
+directory must contain at least one file to exist in a fresh Git
+checkout.
+
+
+RUNNING THE TEST SUITE
+======================
+
+The complete test suite will be run with private/runtests, but
+this can take quite a lot of time. Normally this is only necessary
+after significant structural changes or before a release as a final
+check.
+
+To run a specific test case, run:
+
+ private/runtests onlyrun=test:<path>
+
+You can also run groups of tests defined by selectors such as:
+
+ suite: runs all tests in the named suite
+ tag: runs all tests that relate to the named tag
+ check: runs all tests that relate to the named Lintian check
+ script: runs the named code quality script
+ minimal: runs only required internal tests
+
+The internal tests cannot be disabled. They make sure that essential
+components behave as expected.
+
+The runner provides a detailed log for each test. For details
+please look at ./debian/test-out/${testpath}/log.
+
+
+TEST WRITING TIPS
+=================
+
+Please keep each test case focused. One of the problems that
+developed with the old test suite is that each test was serving many
+separate purposes and testing large swaths of Lintian, which made it
+difficult to know what could be changed and what would destroy some
+other useful test. Test cases should only test a set of closely
+related tags and new tests should be added for new issues that aren't
+part of that closely-related set.
+
+Test cases should be as Lintian-clean as possible except for the tags
+that they're testing for. The template is intended to help with this.
+It generates a Lintian-clean basic package for you to start with. You
+should override only the minimal required to trigger your test, and
+try to fix any unrelated problems. Sometimes this won't be possible
+and the only way to trigger a tag is to also trigger another tag, and
+that's fine, but it shouldn't be the normal case.
+
+Test cases should only be listed in Test-For or Test-Against if
+they're a target of that test case. Tags that are triggered as a side
+effect of setting up the desired test case should not be listed, since
+later changes or reworkings may cause those tags to no longer be
+issued.
+
+Be sure to use Test-For and Test-Against for tags that are targets of
+a particular test case. The test harness will ensure that the test
+case behaves correctly, and that metadata is used for the runtests
+target (when called with the onlyrun=tag:<tag> filter) and when checking test
+coverage.
+
+The test template uses debhelper 7. Use debhelper 7 features whenever
+possible rather than replacing the rules file with a more verbose one.
+In other words, if you want to skip a particular debhelper program, do
+something like:
+
+ %:
+ dh $@
+
+ override_dh_install:
+ # Skip dh_install
+
+rather than adding in all of the traditional targets. All you have to
+do is make dpkg-buildpackage happy (which means that in practice you
+could just override binary, not binary-arch and binary-indep, but
+doing it this way may provide some future-proofing).
+
+Tests will generally fall into one of four basic types:
+
+1. Tests for a specific tag. To keep the overall size (and therefore
+ run time) of the test suite down, consider combining a test for a
+ new tag into a general test (see below) if it's just another simple
+ addition that's very similar to what's being checked by another
+ test. However, be sure to keep all test cases tightly focused and
+ err on the side of creating new tests.
+
+2. Tests against a specific tag, generally as regression tests for
+ false positives.
+
+3. General tests of a set of closely-related tags. For example,
+ there's no need to create a test case for every weird file in a
+ Debian package that files checks for; one test case that installs a
+ lot of weird files can easily test multiple tags at once without
+ any confusion. Similarly, there's no need to create a separate
+ test case for every type of cruft that could exist in a source
+ package; one test case could contain, for instance, metadata files
+ for every major VCS. Conventionally, these test case names often
+ end in -general.
+
+4. Generic test cases that provide an interesting representative of a
+ type of package and thereby test a lot of tags (possibly from
+ multiple checks scripts) that trigger on that type of package. For
+ example, see generic-dh-make-2008 (the results of running dh_make
+ on an empty source package) or generic-empty (a package missing
+ everything that dpkg-buildpackage will let one get away with
+ missing).
+
+If you by any reason need to write an architecture-specific test case,
+make sure the target architectures are properly listed _in the desc
+file_. runtests will in then handle this special test correctly.
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/control.in b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/control.in
new file mode 100644
index 0000000..bebecc3
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/control.in
@@ -0,0 +1,45 @@
+Source: [% $source %]
+Section: httpd
+Priority: optional
+Maintainer: Big Kahuna <kahuna@example.com>
+Uploaders: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libapache2-mod-foo
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ apache2-api-19700101
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libapache2-modbaz
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ apache2.2-common,
+Description: [% $description %] don't care
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ To avoid duplicate description warnings this line differs. Ignore me.
+
+Package: libapache2-mod-foo2
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ apache2-api-19700101,
+Description: [% $description %] still don't care
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ To avoid duplicate description warnings this line differs. Still ignore me.
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.dirs b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.dirs
new file mode 100644
index 0000000..871a471
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.dirs
@@ -0,0 +1,2 @@
+etc/apache2/mods-available
+usr/lib/apache2/modules
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.install b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.install
new file mode 100644
index 0000000..ac8f7f1
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo.install
@@ -0,0 +1,4 @@
+foo.load /etc/apache2/mods-available
+foo /etc/apache2/mods-available
+foo.conf /etc/apache2/mods-available
+mod_foo.so /usr/lib/apache2/modules/
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.dirs b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.dirs
new file mode 100644
index 0000000..aec19ee
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.dirs
@@ -0,0 +1,2 @@
+etc/apache2/mods-enabled
+usr/lib/apache2/modules
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.install b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.install
new file mode 100644
index 0000000..8aab3d1
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.install
@@ -0,0 +1,2 @@
+foo.conf /etc/apache2/mods-enabled
+mod_foo2.so /usr/lib/apache2/modules/
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postinst b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postinst
new file mode 100644
index 0000000..8f6847d
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postinst
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = 'configure' ] ; then
+ a2enmod -q foo2
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postrm b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postrm
new file mode 100644
index 0000000..a4c83a6
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-mod-foo2.postrm
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = 'remove' ] ; then
+ a2dismod -q foo2
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.dirs b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.dirs
new file mode 100644
index 0000000..871a471
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.dirs
@@ -0,0 +1,2 @@
+etc/apache2/mods-available
+usr/lib/apache2/modules
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.install b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.install
new file mode 100644
index 0000000..5f2e1f9
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/debian/libapache2-modbaz.install
@@ -0,0 +1,2 @@
+baz.load /etc/apache2/mods-available
+mod_baz.so /usr/lib/apache2/modules/
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/fill-values b/t/recipes/checks/apache2/apache2-modules-general/build-spec/fill-values
new file mode 100644
index 0000000..608adaa
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: apache2-modules-general
+Description: Several tests related to Apache2 module packages
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/Makefile b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..4ce37c0
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/Makefile
@@ -0,0 +1,5 @@
+all:
+ touch mod_baz.so mod_foo2.so mod_foo.so
+
+clean:
+ rm -f *.so
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/baz.load b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/baz.load
new file mode 100644
index 0000000..cb28fab
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/baz.load
@@ -0,0 +1 @@
+LoadModule baz_module /usr/lib/apache2/modules/mod_baz.so
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo
new file mode 100644
index 0000000..2cc691e
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo
@@ -0,0 +1 @@
+<irrelevant>
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.conf b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.conf
new file mode 100644
index 0000000..bcbc503
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.conf
@@ -0,0 +1,5 @@
+# Depends: notsupportedhere
+
+<Conf>
+ WithDirectives
+</Conf>
diff --git a/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.load b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.load
new file mode 100644
index 0000000..7f1659f
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/build-spec/orig/foo.load
@@ -0,0 +1,5 @@
+# Depends: baz
+# Depends: baz baz2 mod_baz3 baz4.load
+# Conflicts: baz baz2
+
+LoadModule foo_module /usr/lib/apache2/modules/mod_foo.so
diff --git a/t/recipes/checks/apache2/apache2-modules-general/eval/desc b/t/recipes/checks/apache2/apache2-modules-general/eval/desc
new file mode 100644
index 0000000..673e5a3
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: apache2-modules-general
+Check: apache2
diff --git a/t/recipes/checks/apache2/apache2-modules-general/eval/hints b/t/recipes/checks/apache2/apache2-modules-general/eval/hints
new file mode 100644
index 0000000..42c6401
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-modules-general/eval/hints
@@ -0,0 +1,9 @@
+libapache2-modbaz (binary): non-standard-apache2-module-package-name libapache2-modbaz != libapache2-mod-baz [usr/lib/apache2/modules/mod_baz.so]
+libapache2-modbaz (binary): apache2-module-does-not-depend-on-apache2-api [usr/lib/apache2/modules/mod_baz.so]
+libapache2-mod-foo2 (binary): apache2-reverse-dependency-ships-file-in-not-allowed-directory [etc/apache2/mods-enabled/foo.conf]
+libapache2-mod-foo2 (binary): apache2-reverse-dependency-calls-wrapper-script a2enmod [postinst:6]
+libapache2-mod-foo2 (binary): apache2-reverse-dependency-calls-wrapper-script a2dismod [postrm:6]
+libapache2-mod-foo2 (binary): apache2-module-does-not-ship-load-file etc/apache2/mods-available/foo2.load [usr/lib/apache2/modules/mod_foo2.so]
+libapache2-mod-foo (binary): apache2-unparsable-dependency mod_baz3 [etc/apache2/mods-available/foo.load:2]
+libapache2-mod-foo (binary): apache2-unparsable-dependency baz4.load [etc/apache2/mods-available/foo.load:2]
+libapache2-mod-foo (binary): apache2-configuration-files-need-conf-suffix [etc/apache2/mods-available/foo]
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/control.in b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/control.in
new file mode 100644
index 0000000..35a5386
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/control.in
@@ -0,0 +1,48 @@
+Source: [% $source %]
+Section: web
+Priority: optional
+Maintainer: Big Kahuna <kahuna@example.com>
+Uploaders: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: phpmyfoo
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ apache2,
+ apache2-bin
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: phpmyfoo2
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ apache2 | httpd
+Description: [% $description %] - ignore me
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Ignore me.
+
+Package: phpmyfoo3
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ apache2 | lighttpd | httpd
+Description: [% $description %] - another ignore me
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Yet another ignore me.
+
+
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.dirs b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.dirs
new file mode 100644
index 0000000..31e10a9
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.dirs
@@ -0,0 +1 @@
+etc/apache2/conf-available
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.install b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.install
new file mode 100644
index 0000000..2789400
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.install
@@ -0,0 +1 @@
+phpmyfoo.conf /etc/apache2/conf-available
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postinst b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postinst
new file mode 100644
index 0000000..c4a1988
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postinst
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = 'configure' ] ; then
+ a2enconf -q phpmyfoo
+fi
+
+invoke-rc.d apache2 reload
+
+#DEBHELPER#
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postrm b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postrm
new file mode 100644
index 0000000..d0db12e
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo.postrm
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = 'configure' ] ; then
+ a2disconf -q phpmyfoo
+fi
+
+invoke-rc.d apache2 reload
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.dirs b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.dirs
new file mode 100644
index 0000000..31e10a9
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.dirs
@@ -0,0 +1 @@
+etc/apache2/conf-available
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.install b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.install
new file mode 100644
index 0000000..b2da1d6
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo2.install
@@ -0,0 +1,3 @@
+phpmyfoo2 /etc/apache2/conf-available
+local-phpmyfoo2.conf /etc/apache2/conf-available
+false-positives.conf /etc/apache2/conf-available
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.dirs b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.dirs
new file mode 100644
index 0000000..e9286b0
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.dirs
@@ -0,0 +1 @@
+etc/apache2/conf.d/
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.install b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.install
new file mode 100644
index 0000000..30fb624
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/debian/phpmyfoo3.install
@@ -0,0 +1 @@
+phpmyfoo.conf /etc/apache2/conf.d/
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/fill-values b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/fill-values
new file mode 100644
index 0000000..4bff8b5
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: apache2-webapplications-general
+Description: Several tests related to Apache2 web application packages
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/false-positives.conf b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/false-positives.conf
new file mode 100644
index 0000000..e54f470
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/false-positives.conf
@@ -0,0 +1,12 @@
+Alias /foo /usr/share/foo
+
+<Directory /usr/share/foo>
+ <IfModule !mod_authz_core.c>
+ Order deny, allow
+ Require valid-user
+ </IfModule>
+ <IfVersion < 2.3>
+ Order deny, allow
+ Require valid-user
+ </IfVersion>
+</Directory>
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/local-phpmyfoo2.conf b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/local-phpmyfoo2.conf
new file mode 100644
index 0000000..2cc691e
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/local-phpmyfoo2.conf
@@ -0,0 +1 @@
+<irrelevant>
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo.conf b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo.conf
new file mode 100644
index 0000000..1e3c4e3
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo.conf
@@ -0,0 +1,14 @@
+# Depends: bar bar2.conf php7.0
+# Conflicts: notsupportedhere
+
+Alias /foo /usr/share/foo
+
+<Directory /usr/share/foo>
+ WebAppConf
+ <Limit POST PUT DELETE>
+ Order deny, allow
+ Require valid-user
+ </Limit>
+ AllowOverride None
+</Directory>
+
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo2 b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo2
new file mode 100644
index 0000000..2cc691e
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/build-spec/orig/phpmyfoo2
@@ -0,0 +1 @@
+<irrelevant>
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/eval/desc b/t/recipes/checks/apache2/apache2-webapplications-general/eval/desc
new file mode 100644
index 0000000..5769247
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: apache2-webapplications-general
+Check: apache2
diff --git a/t/recipes/checks/apache2/apache2-webapplications-general/eval/hints b/t/recipes/checks/apache2/apache2-webapplications-general/eval/hints
new file mode 100644
index 0000000..6c17227
--- /dev/null
+++ b/t/recipes/checks/apache2/apache2-webapplications-general/eval/hints
@@ -0,0 +1,22 @@
+phpmyfoo3 (binary): non-standard-apache2-configuration-name phpmyfoo.conf != phpmyfoo3.conf [etc/apache2/conf.d/phpmyfoo.conf]
+phpmyfoo3 (binary): apache2-unsupported-dependency Conflicts [etc/apache2/conf.d/phpmyfoo.conf:2]
+phpmyfoo3 (binary): apache2-unparsable-dependency bar2.conf [etc/apache2/conf.d/phpmyfoo.conf:1]
+phpmyfoo3 (binary): apache2-reverse-dependency-uses-obsolete-directory [etc/apache2/conf.d/phpmyfoo.conf]
+phpmyfoo3 (binary): apache2-deprecated-auth-config Order [etc/apache2/conf.d/phpmyfoo.conf:9]
+phpmyfoo3 (binary): apache2-deprecated-auth-config <Limit POST PUT DELETE> [etc/apache2/conf.d/phpmyfoo.conf:8]
+phpmyfoo3 (binary): apache2-deprecated-auth-config </Limit> [etc/apache2/conf.d/phpmyfoo.conf:11]
+phpmyfoo2 (binary): non-standard-apache2-configuration-name phpmyfoo2 != phpmyfoo2.conf [etc/apache2/conf-available/phpmyfoo2]
+phpmyfoo2 (binary): non-standard-apache2-configuration-name local-phpmyfoo2.conf != phpmyfoo2.conf [etc/apache2/conf-available/local-phpmyfoo2.conf]
+phpmyfoo2 (binary): non-standard-apache2-configuration-name false-positives.conf != phpmyfoo2.conf [etc/apache2/conf-available/false-positives.conf]
+phpmyfoo2 (binary): apache2-configuration-files-need-conf-suffix [etc/apache2/conf-available/phpmyfoo2]
+phpmyfoo (binary): web-application-works-only-with-apache phpmyfoo.conf [etc/apache2/conf-available/phpmyfoo.conf]
+phpmyfoo (binary): web-application-depends-on-apache2-data-package apache2-bin phpmyfoo.conf [etc/apache2/conf-available/phpmyfoo.conf]
+phpmyfoo (binary): apache2-unsupported-dependency Conflicts [etc/apache2/conf-available/phpmyfoo.conf:2]
+phpmyfoo (binary): apache2-unparsable-dependency bar2.conf [etc/apache2/conf-available/phpmyfoo.conf:1]
+phpmyfoo (binary): apache2-reverse-dependency-calls-wrapper-script a2enconf [postinst:6]
+phpmyfoo (binary): apache2-reverse-dependency-calls-wrapper-script a2disconf [postrm:6]
+phpmyfoo (binary): apache2-reverse-dependency-calls-invoke-rc.d [postrm:9]
+phpmyfoo (binary): apache2-reverse-dependency-calls-invoke-rc.d [postinst:9]
+phpmyfoo (binary): apache2-deprecated-auth-config Order [etc/apache2/conf-available/phpmyfoo.conf:9]
+phpmyfoo (binary): apache2-deprecated-auth-config <Limit POST PUT DELETE> [etc/apache2/conf-available/phpmyfoo.conf:8]
+phpmyfoo (binary): apache2-deprecated-auth-config </Limit> [etc/apache2/conf-available/phpmyfoo.conf:11]
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/control.in b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/control.in
new file mode 100644
index 0000000..977a45c
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/control.in
@@ -0,0 +1,87 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: libapp-something-perl
+Architecture: any
+Section: perl
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] libapp
+ This is an App:: test package designed to exercise some feature or
+ tag of Lintian. It is part of the Lintian test suite and may do very
+ odd things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: libapp-some-app-helper-module-perl
+Architecture: any
+Section: perl
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: libapp false positive test
+ This is an App:: test package designed to check if Lintian reports
+ false positives. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular package.
+ It may be an empty package.
+
+Package: libsomething-else-perl
+Architecture: any
+Section: perl
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] else
+ This is a perl test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python-something
+Architecture: any
+Section: python
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] py
+ This is a Python test package designed to exercise some feature or
+ tag of Lintian. It is part of the Lintian test suite and may do very
+ odd things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: ruby-something
+Architecture: any
+Section: ruby
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] rb
+ This is a ruby test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: unspecified-something-pl
+Architecture: any
+Section: perl
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] pl
+ This is a perl-ish test package designed to exercise some feature or
+ tag of Lintian. It is part of the Lintian test suite and may do very
+ odd things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: unspecified-something-py
+Architecture: any
+Section: python
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] py2
+ This is a python-ish test package designed to exercise some feature
+ or tag of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular package.
+ It may be an empty package.
+
+Package: unspecified-something-rb
+Architecture: any
+Section: ruby
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %] rb2
+ This is a ruby-ish (rubbish? ;-) test package designed to exercise
+ some feature or tag of Lintian. It is part of the Lintian test suite
+ and may do very odd things. It should not be installed like a
+ regular package. It may be an empty package.
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.install
new file mode 100644
index 0000000..388bdbd
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.install
@@ -0,0 +1 @@
+bin/libapp-something-perl usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.manpages
new file mode 100644
index 0000000..58d812c
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libapp-something-perl.manpages
@@ -0,0 +1 @@
+man/libapp-something-perl.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.install
new file mode 100644
index 0000000..2a4ae74
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.install
@@ -0,0 +1 @@
+bin/libsomething-else-perl usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.manpages
new file mode 100644
index 0000000..881b7a5
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/libsomething-else-perl.manpages
@@ -0,0 +1 @@
+man/libsomething-else-perl.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.install
new file mode 100644
index 0000000..ef65bd8
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.install
@@ -0,0 +1 @@
+bin/python-something usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.manpages
new file mode 100644
index 0000000..faae0d5
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/python-something.manpages
@@ -0,0 +1 @@
+man/python-something.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.install
new file mode 100644
index 0000000..b4178bb
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.install
@@ -0,0 +1 @@
+bin/ruby-something usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.manpages
new file mode 100644
index 0000000..ada2f8d
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/ruby-something.manpages
@@ -0,0 +1 @@
+man/ruby-something.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.install
new file mode 100644
index 0000000..bfbc4a0
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.install
@@ -0,0 +1 @@
+bin/unspecified-something-pl usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.manpages
new file mode 100644
index 0000000..01bebce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-pl.manpages
@@ -0,0 +1 @@
+man/unspecified-something-pl.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.install
new file mode 100644
index 0000000..9615ca0
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.install
@@ -0,0 +1 @@
+bin/unspecified-something-py usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.manpages
new file mode 100644
index 0000000..d8e6db5
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-py.manpages
@@ -0,0 +1 @@
+man/unspecified-something-py.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.install b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.install
new file mode 100644
index 0000000..9502f60
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.install
@@ -0,0 +1 @@
+bin/unspecified-something-rb usr/bin
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.manpages b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.manpages
new file mode 100644
index 0000000..3f89156
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/debian/unspecified-something-rb.manpages
@@ -0,0 +1 @@
+man/unspecified-something-rb.1
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/fill-values b/t/recipes/checks/application-not-library/application-not-library/build-spec/fill-values
new file mode 100644
index 0000000..cb8b119
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: application-not-library
+Description: Test cases where packages look like libraries but are applications
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libapp-something-perl b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libapp-something-perl
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libapp-something-perl
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libsomething-else-perl b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libsomething-else-perl
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/libsomething-else-perl
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/python-something b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/python-something
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/python-something
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/ruby-something b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/ruby-something
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/ruby-something
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-pl b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-pl
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-pl
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-py b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-py
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-py
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-rb b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-rb
new file mode 100755
index 0000000..733bbce
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/bin/unspecified-something-rb
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo Foobar
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libapp-something-perl.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libapp-something-perl.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libapp-something-perl.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libsomething-else-perl.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libsomething-else-perl.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/libsomething-else-perl.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/python-something.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/python-something.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/python-something.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/ruby-something.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/ruby-something.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/ruby-something.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-pl.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-pl.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-pl.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-py.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-py.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-py.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-rb.1 b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-rb.1
new file mode 100644
index 0000000..00d58c9
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/build-spec/orig/man/unspecified-something-rb.1
@@ -0,0 +1,6 @@
+.TH YES "1" "April 2015" "Foobar" "User Commands"
+.SH NAME
+foobar \- fnords something until killes
+.SH SYNOPSIS
+.B foobar
+[\fISOMETHING\fR]...
diff --git a/t/recipes/checks/application-not-library/application-not-library/eval/desc b/t/recipes/checks/application-not-library/application-not-library/eval/desc
new file mode 100644
index 0000000..58a9992
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/eval/desc
@@ -0,0 +1,2 @@
+Testname: application-not-library
+Check: application-not-library
diff --git a/t/recipes/checks/application-not-library/application-not-library/eval/hints b/t/recipes/checks/application-not-library/application-not-library/eval/hints
new file mode 100644
index 0000000..ebae992
--- /dev/null
+++ b/t/recipes/checks/application-not-library/application-not-library/eval/hints
@@ -0,0 +1,11 @@
+unspecified-something-rb (binary): application-in-library-section ruby [usr/bin/unspecified-something-rb]
+unspecified-something-py (binary): application-in-library-section python [usr/bin/unspecified-something-py]
+unspecified-something-pl (binary): application-in-library-section perl [usr/bin/unspecified-something-pl]
+ruby-something (binary): library-package-name-for-application [usr/bin/ruby-something]
+ruby-something (binary): application-in-library-section ruby [usr/bin/ruby-something]
+python-something (binary): library-package-name-for-application [usr/bin/python-something]
+python-something (binary): application-in-library-section python [usr/bin/python-something]
+libsomething-else-perl (binary): library-package-name-for-application [usr/bin/libsomething-else-perl]
+libsomething-else-perl (binary): application-in-library-section perl [usr/bin/libsomething-else-perl]
+libapp-something-perl (binary): libapp-perl-package-name [usr/bin/libapp-something-perl]
+libapp-something-perl (binary): application-in-library-section perl [usr/bin/libapp-something-perl]
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml
new file mode 100644
index 0000000..a823b8d
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml
@@ -0,0 +1 @@
+This is not a valid XML document.
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml
new file mode 100644
index 0000000..31d281e
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application/>
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.desktop b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.desktop
new file mode 100644
index 0000000..4c91430
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=appstream-udev-data
+Terminal=true
+Exec=true
+Categories=ConsoleOnly;Game;
+Keywords=Text;
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.dirs b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.dirs
new file mode 100644
index 0000000..402f5d5
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.dirs
@@ -0,0 +1,2 @@
+usr/share/metainfo
+usr/share/appdata
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml
new file mode 100644
index 0000000..82294c1
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component>
+ <id>appstream-udev-data</id>
+ <metadata_license>MIT</metadata_license>
+ <name>lintian appstream-udev-data</name>
+ <summary>Test AppStream and udev related checks in lintian</summary>
+ <description>
+ <p>
+ This is a test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular
+ package. It may be an empty package.
+ </p>
+ </description>
+ <provides>
+ <modalias>usb:v0000p0001d*</modalias>
+ <modalias>usb:v0000p0002d*</modalias>
+ <modalias>usb:v0000p0003d*</modalias>
+ <modalias>usb:v0000p0004d*</modalias>
+ <modalias>usb:v0000p000ad*</modalias>
+ </provides>
+</component>
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.udev b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.udev
new file mode 100644
index 0000000..e2f2841
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/appstream-metadata.udev
@@ -0,0 +1,14 @@
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0001", \
+ MODE="0666"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0002", \
+ MODE="0660", GROUP="plugdev"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0003", \
+ TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0004", \
+ MODE="0660", GROUP="plugdev", TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="000a", \
+ ID_TEST_DEVICE="1"
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/rules b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/rules
new file mode 100644
index 0000000..5fb0c35
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/debian/rules
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/$(shell dh_listpackages)
+APPSYNC_DIR=$(DESTDIR)/usr/share/metainfo/
+OBSOLETE_APPSYNC_DIR=$(DESTDIR)/usr/share/appdata/
+UDEV_DIR=$(DESTDIR)/lib/udev/rules.d/
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ install -m 0644 debian/appstream-metadata.metadata.xml $(APPSYNC_DIR)
+ install -m 0644 debian/appstream-metadata-invalid.metadata.xml $(APPSYNC_DIR)
+ install -m 0644 debian/appstream-metadata-obsolete.metadata.xml $(OBSOLETE_APPSYNC_DIR)
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/fill-values b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/fill-values
new file mode 100644
index 0000000..cfd5595
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: appstream-metadata
+Description: Test AppStream and udev metadata in binary package
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/eval/desc b/t/recipes/checks/appstream-metadata/appstream-metadata/eval/desc
new file mode 100644
index 0000000..0482336
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/eval/desc
@@ -0,0 +1,2 @@
+Testname: appstream-metadata
+Check: appstream-metadata
diff --git a/t/recipes/checks/appstream-metadata/appstream-metadata/eval/hints b/t/recipes/checks/appstream-metadata/appstream-metadata/eval/hints
new file mode 100644
index 0000000..530dfca
--- /dev/null
+++ b/t/recipes/checks/appstream-metadata/appstream-metadata/eval/hints
@@ -0,0 +1,5 @@
+appstream-metadata (binary): appstream-metadata-missing-modalias-provide match rule usb:v0000p000Ad* [usr/lib/udev/rules.d/60-appstream-metadata.rules:13]
+appstream-metadata (binary): appstream-metadata-malformed-modalias-provide include non-valid hex digit in USB matching rule 'usb:v0000p000ad*' [usr/share/metainfo/appstream-metadata.metadata.xml]
+appstream-metadata (binary): appstream-metadata-legacy-format [usr/share/appdata/appstream-metadata-obsolete.metadata.xml]
+appstream-metadata (binary): appstream-metadata-invalid [usr/share/metainfo/appstream-metadata-invalid.metadata.xml]
+appstream-metadata (binary): appstream-metadata-in-legacy-location [usr/share/appdata/appstream-metadata-obsolete.metadata.xml]
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/apt/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/apt/files-foo-in-bar/eval/desc b/t/recipes/checks/apt/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..50af70a
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: apt
diff --git a/t/recipes/checks/apt/files-foo-in-bar/eval/hints b/t/recipes/checks/apt/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..f3d213b
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/eval/hints
@@ -0,0 +1,4 @@
+files-foo-in-bar (binary): package-installs-apt-sources [etc/apt/sources.list.d/bar]
+files-foo-in-bar (binary): package-installs-apt-preferences [etc/apt/preferences]
+files-foo-in-bar (binary): package-installs-apt-preferences [etc/apt/preferences.d/bar]
+files-foo-in-bar (binary): package-installs-apt-keyring [etc/apt/trusted.gpg.d/bar]
diff --git a/t/recipes/checks/apt/files-foo-in-bar/eval/post-test b/t/recipes/checks/apt/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/apt/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/build-spec/fill-values b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/build-spec/fill-values
new file mode 100644
index 0000000..7121e0b
--- /dev/null
+++ b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: filename-length-really-really-really-really-long-package-name
+Version: 1.0.and.a.really.long.version.too-1
+Skeleton: upload-non-native
+Description: General length of package file names
diff --git a/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/desc b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/desc
new file mode 100644
index 0000000..4bf733d
--- /dev/null
+++ b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: filename-length-really-really-really-really-long-package-name
+Check: archive/file/name/length
diff --git a/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/hints b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/hints
new file mode 100644
index 0000000..c1a0b80
--- /dev/null
+++ b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/hints
@@ -0,0 +1,6 @@
+filename-length-really-really-really-really-long-package-name (source): source-package-component-has-long-file-name filename-length-really-really-really-really-long-package-name_1.0.and.a.really.long.version.too.orig.tar.gz
+filename-length-really-really-really-really-long-package-name (source): source-package-component-has-long-file-name filename-length-really-really-really-really-long-package-name_1.0.and.a.really.long.version.too-1.debian.tar.xz
+filename-length-really-really-really-really-long-package-name (source): package-has-long-file-name filename-length-really-really-really-really-long-package-name_1.0.and.a.really.long.version.too-1.dsc
+filename-length-really-really-really-really-long-package-name (changes): package-has-long-file-name filename-length-really-really-really-really-long-package-name_1.0.and.a.really.long.version.too-1_ARCHITECTURE.changes
+filename-length-really-really-really-really-long-package-name (buildinfo): package-has-long-file-name filename-length-really-really-really-really-long-package-name_1.0.and.a.really.long.version.too-1_ARCHITECTURE.buildinfo
+filename-length-really-really-really-really-long-package-name (binary): package-has-long-file-name filename-length-really-really-really-really-long-package-name_1.0.and.a.really.long.version.too-1_all.deb
diff --git a/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/post-test b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/post-test
new file mode 100644
index 0000000..52f65a6
--- /dev/null
+++ b/t/recipes/checks/archive/file/name/length/filename-length-really-really-really-really-long-package-name/eval/post-test
@@ -0,0 +1,2 @@
+s/_[[:alnum:]]*.changes$/_ARCHITECTURE.changes/
+s/_[[:alnum:]]*.buildinfo$/_ARCHITECTURE.buildinfo/
diff --git a/t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/debian/control.in b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/debian/control.in
new file mode 100644
index 0000000..25106b7
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/debian/control.in
@@ -0,0 +1,31 @@
+Source: [% $source %]
+Priority: optional
+Section: contrib/[% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Section: contrib/dveel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (typo)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a typo in its section fields.
+
+Package: [% $source %]-main
+Architecture: all
+Section: [% $section %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (main)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package can go to main.
diff --git a/t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/fill-values b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/fill-values
new file mode 100644
index 0000000..f8cf9f7
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-section-general
+Description: Test for general section/area issues
diff --git a/t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/desc b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/desc
new file mode 100644
index 0000000..b374791
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-section-general
+Check: archive/liberty/mismatch
diff --git a/t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/hints b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/hints
new file mode 100644
index 0000000..77d1d3e
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/fields-section-general/eval/hints
@@ -0,0 +1 @@
+fields-section-general (source): archive-liberty-mismatch (in section for fields-section-general-main) main vs contrib [debian/control:23]
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/control b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/rules b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/fill-values b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/desc b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/desc
new file mode 100644
index 0000000..f20046e
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: archive/liberty/mismatch
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/hints b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/hints
new file mode 100644
index 0000000..d6aba64
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/hints
@@ -0,0 +1 @@
+relations (source): archive-liberty-mismatch (in section for relations-multiple-libs) non-free vs main [debian/control:36]
diff --git a/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/post-test b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/archive/liberty/mismatch/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in
new file mode 100644
index 0000000..0d31cce
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: non-free/[% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+XS-Autobuild: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values
new file mode 100644
index 0000000..07d27d1
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-source-upload-to-non-free-without-autobuild
+Description: Check for source-only uploads to non-free without autobuild
diff --git a/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/desc b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/desc
new file mode 100644
index 0000000..50ada9d
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-file-source-upload-to-non-free-without-autobuild
+Check: archive/non-free/autobuild
+Test-Against:
+ source-only-upload-to-non-free-without-autobuild
diff --git a/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/hints b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/control-file-source-upload-to-non-free-without-autobuild/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/build-spec/fill-values b/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/build-spec/fill-values
new file mode 100644
index 0000000..909efef
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: source-only-upload-to-non-free-without-autobuild
+Skeleton: upload-native
+Section: non-free/devel
+Upload-Type: source
+Description: This source-only upload to non-free will never appear in the archive
diff --git a/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/desc b/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/desc
new file mode 100644
index 0000000..0e2a6b5
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-only-upload-to-non-free-without-autobuild
+Check: archive/non-free/autobuild
diff --git a/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/hints b/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/hints
new file mode 100644
index 0000000..6615c85
--- /dev/null
+++ b/t/recipes/checks/archive/non-free/autobuild/source-only-upload-to-non-free-without-autobuild/eval/hints
@@ -0,0 +1 @@
+source-only-upload-to-non-free-without-autobuild (source): source-only-upload-to-non-free-without-autobuild (in the source paragraph) XS-Autobuild [debian/control]
diff --git a/t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/debian/rules b/t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/debian/rules
new file mode 100755
index 0000000..a3ab46d
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+pkg=binaries-misplaced
+%:
+ dh $@
+
+override_dh_install:
+ mkdir -p debian/$(pkg)/etc/
+ cp -a /bin/true debian/$(pkg)/etc/foo
+ # explicitly call dh_shlibdeps since debhelper is being
+ # "smart" and not calling it in newer versions (8.9.something)
+ dh_shlibdeps
+ dh_install
diff --git a/t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/fill-values b/t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/fill-values
new file mode 100644
index 0000000..6f79eab
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/binaries-misplaced/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: binaries-misplaced
+Description: Test binaries in /etc
diff --git a/t/recipes/checks/binaries/architecture/binaries-misplaced/eval/desc b/t/recipes/checks/binaries/architecture/binaries-misplaced/eval/desc
new file mode 100644
index 0000000..4b25873
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/binaries-misplaced/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-misplaced
+Check: binaries/architecture
diff --git a/t/recipes/checks/binaries/architecture/binaries-misplaced/eval/hints b/t/recipes/checks/binaries/architecture/binaries-misplaced/eval/hints
new file mode 100644
index 0000000..e724861
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/binaries-misplaced/eval/hints
@@ -0,0 +1 @@
+binaries-misplaced (binary): arch-independent-package-contains-binary-or-object [etc/foo]
diff --git a/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/dumpobj b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/dumpobj
new file mode 100644
index 0000000..afdf68e
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/dumpobj
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+DEB_BUILD_GNU_TYPE="$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)"
+
+case $DEB_BUILD_GNU_TYPE in
+i486-linux-gnu|i586-linux-gnu|i686-linux-gnu|x86_64-linux-gnu)
+ base64 -d <<DATA
+f0VMRgEBAQAAAAAAAAAAAAIAKAABAAAAMIEAADQAAAA4bwkAAgAABDQAIAAGACgAGwAaAAEAAHDY
+WgkA2NoJANjaCQBQCgAAUAoAAAQAAAAEAAAAAQAAAAAAAAAAgAAAAIAAAKhlCQCoZQkABQAAAACA
+AAABAAAAqGUJAKhlCgCoZQoAIAgAAOwlAAAGAAAAAIAAAAQAAAD0AAAA9IAAAPSAAAAgAAAAIAAA
+AAQAAAAEAAAABwAAAKhlCQCoZQoAqGUKABgAAAAwAAAABAAAAAQAAABR5XRkAAAAAAAAAAAAAAAA
+AAAAAAAAAAAGAAAABAAAAAQAAAAQAAAAAQAAAEdOVQAAAAAAAgAAAAYAAAASAAAABOAt5QTQTeIR
+AADrBNCN4gTgneQe/y/hAAAAACTAn+UAsKDjBBCd5A0goOEEIC3lBAAt5RAAn+UQMJ/lBMAt5dwS
+DATA
+ ;;
+*)
+ base64 -d <<DATA
+f0VMRgEBMAAwMDAwMDAwMAIAAwABAAAA
+DATA
+ ;;
+esac
diff --git a/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/install b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/install
new file mode 100644
index 0000000..369fa72
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/install
@@ -0,0 +1,2 @@
+debian/elfobject usr/bin/
+debian/fake-guile-object.go usr/lib/foo/binaries-from-other-arch/guile/2.2/
diff --git a/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/rules b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/rules
new file mode 100755
index 0000000..60907d2
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+DEB_BUILD_OPTIONS := nostrip
+export DEB_BUILD_OPTIONS
+
+%:
+ dh $@
+
+binary:
+ sh debian/dumpobj > debian/elfobject
+ sh debian/dumpobj > debian/fake-guile-object.go
+ dh binary
diff --git a/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/fill-values b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/fill-values
new file mode 100644
index 0000000..d765ecd
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-from-other-arch
+Package-Architecture: any
+Dh-Compat-Level: 10
+Description: Test package with a pseudo binary from a different architecture
+# since debhelper 12.5.2, objdump no longer fails silently for compat > 10, need better binary
diff --git a/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/desc b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/desc
new file mode 100644
index 0000000..6f04e39
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/desc
@@ -0,0 +1,4 @@
+Testname: binaries-from-other-arch
+Test-Architectures: amd64 i386
+Check: binaries/architecture/other
+# since debhelper 12.5.2, objdump no longer fails silently for compat > 10, need better binary
diff --git a/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/hints b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/hints
new file mode 100644
index 0000000..fd7b1d8
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/binaries-from-other-arch/eval/hints
@@ -0,0 +1 @@
+binaries-from-other-arch (binary): binary-from-other-architecture [usr/bin/elfobject]
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/install b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/install
new file mode 100644
index 0000000..c10e578
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/install
@@ -0,0 +1 @@
+foreign-binary usr/bin
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/rules b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/rules
new file mode 100755
index 0000000..2ce6f53
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ # do not try to strip cross-compiled binaries with native tooling
+
+override_dh_shlibdeps:
+ # do not try to include missing libraries
+
+override_dh_dwz:
+ # cross-compiled binaries do not always seem to have a debug section
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/fill-values b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/fill-values
new file mode 100644
index 0000000..24f607a
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: wrong-binary-architecture
+Description: Binary architecture does not match package declaration
+Package-Architecture: any
+Extra-Build-Depends:
+ gcc-arm-linux-gnueabihf [amd64 i386], gcc-x86-64-linux-gnu [!amd64 !i386]
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/Makefile b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/Makefile
new file mode 100644
index 0000000..bf92eaf
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/Makefile
@@ -0,0 +1,37 @@
+# This test works on amd64 when the cross-compiler for armhf is installed.
+#
+# The build prerequisite was not added to Lintian, however, since it was
+# not clear how the architecture would be enabled in the Gitlab CI
+# runner.
+#
+# On amd64 or i386, please follow these steps to run the test:
+#
+# dpkg --add-architecture armhf
+# apt update
+# apt install gcc-arm-linux-gnueabihf
+#
+# On all other architectures this may work, but was not tested:
+#
+# dpkg --add-architecture amd64
+# apt update
+# apt install gcc-x86-64-linux-gnu
+#
+# (Taken from: https://wiki.debian.org/CrossToolchains)
+
+ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq ($(ARCH),amd64)
+CC := arm-linux-gnueabihf-gcc
+else
+CC := x86_64-linux-gnu-gcc
+endif
+
+foreign-binary: hello.c
+ $(CC) $^ -o $@
+
+.PHONY: clean
+clean:
+ rm -f foreign-binary
+
+.PHONY: clean
+distclean: clean
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/hello.c b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/desc b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/desc
new file mode 100644
index 0000000..8bd95a8
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/desc
@@ -0,0 +1,2 @@
+Testname: wrong-binary-architecture
+Check: binaries/architecture/other
diff --git a/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/hints b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/hints
new file mode 100644
index 0000000..e2251b3
--- /dev/null
+++ b/t/recipes/checks/binaries/architecture/other/wrong-binary-architecture/eval/hints
@@ -0,0 +1 @@
+wrong-binary-architecture (binary): binary-from-other-architecture [usr/bin/foreign-binary]
diff --git a/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/dumpobj b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/dumpobj
new file mode 100644
index 0000000..afdf68e
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/dumpobj
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+DEB_BUILD_GNU_TYPE="$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)"
+
+case $DEB_BUILD_GNU_TYPE in
+i486-linux-gnu|i586-linux-gnu|i686-linux-gnu|x86_64-linux-gnu)
+ base64 -d <<DATA
+f0VMRgEBAQAAAAAAAAAAAAIAKAABAAAAMIEAADQAAAA4bwkAAgAABDQAIAAGACgAGwAaAAEAAHDY
+WgkA2NoJANjaCQBQCgAAUAoAAAQAAAAEAAAAAQAAAAAAAAAAgAAAAIAAAKhlCQCoZQkABQAAAACA
+AAABAAAAqGUJAKhlCgCoZQoAIAgAAOwlAAAGAAAAAIAAAAQAAAD0AAAA9IAAAPSAAAAgAAAAIAAA
+AAQAAAAEAAAABwAAAKhlCQCoZQoAqGUKABgAAAAwAAAABAAAAAQAAABR5XRkAAAAAAAAAAAAAAAA
+AAAAAAAAAAAGAAAABAAAAAQAAAAQAAAAAQAAAEdOVQAAAAAAAgAAAAYAAAASAAAABOAt5QTQTeIR
+AADrBNCN4gTgneQe/y/hAAAAACTAn+UAsKDjBBCd5A0goOEEIC3lBAAt5RAAn+UQMJ/lBMAt5dwS
+DATA
+ ;;
+*)
+ base64 -d <<DATA
+f0VMRgEBMAAwMDAwMDAwMAIAAwABAAAA
+DATA
+ ;;
+esac
diff --git a/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/install b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/install
new file mode 100644
index 0000000..369fa72
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/install
@@ -0,0 +1,2 @@
+debian/elfobject usr/bin/
+debian/fake-guile-object.go usr/lib/foo/binaries-from-other-arch/guile/2.2/
diff --git a/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/rules b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/rules
new file mode 100755
index 0000000..60907d2
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+DEB_BUILD_OPTIONS := nostrip
+export DEB_BUILD_OPTIONS
+
+%:
+ dh $@
+
+binary:
+ sh debian/dumpobj > debian/elfobject
+ sh debian/dumpobj > debian/fake-guile-object.go
+ dh binary
diff --git a/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/fill-values b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/fill-values
new file mode 100644
index 0000000..d765ecd
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-from-other-arch
+Package-Architecture: any
+Dh-Compat-Level: 10
+Description: Test package with a pseudo binary from a different architecture
+# since debhelper 12.5.2, objdump no longer fails silently for compat > 10, need better binary
diff --git a/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/desc b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/desc
new file mode 100644
index 0000000..65502f9
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/desc
@@ -0,0 +1,4 @@
+Testname: binaries-from-other-arch
+Test-Architectures: amd64 i386
+Check: binaries/corrupted
+# since debhelper 12.5.2, objdump no longer fails silently for compat > 10, need better binary
diff --git a/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/hints b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/hints
new file mode 100644
index 0000000..54909bb
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/binaries-from-other-arch/eval/hints
@@ -0,0 +1,4 @@
+binaries-from-other-arch (binary): elf-error In ELF header: Section headers are not available! [usr/lib/foo/binaries-from-other-arch/guile/2.2/fake-guile-object.go]
+binaries-from-other-arch (binary): elf-error In ELF header: Section headers are not available! [usr/bin/elfobject]
+binaries-from-other-arch (binary): elf-error In ELF header: Reading 1080 bytes extends past end of file for section headers [usr/lib/foo/binaries-from-other-arch/guile/2.2/fake-guile-object.go]
+binaries-from-other-arch (binary): elf-error In ELF header: Reading 1080 bytes extends past end of file for section headers [usr/bin/elfobject]
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/control b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/rules b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/fill-values b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..e2f713c
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/fill-values
@@ -0,0 +1,8 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends:
+ debhelper (>= 9.20151004~),
+ binutils (>= 2.37.50.20211102)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/eval/desc b/t/recipes/checks/binaries/corrupted/legacy-debug/eval/desc
new file mode 100644
index 0000000..a55c905
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debug
+Check: binaries/corrupted
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/eval/hints b/t/recipes/checks/binaries/corrupted/legacy-debug/eval/hints
new file mode 100644
index 0000000..0b0b081
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/eval/hints
@@ -0,0 +1,3 @@
+libhello0-dbg (binary): binary-with-bad-dynamic-table [usr/lib/libhello.so.dbg]
+hello (binary): binary-with-bad-dynamic-table [usr/bin/hello.dbg]
+hello (binary): elf-error In program headers: Unable to find program interpreter name [usr/bin/hello.dbg]
diff --git a/t/recipes/checks/binaries/corrupted/legacy-debug/eval/post-test b/t/recipes/checks/binaries/corrupted/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/binaries/corrupted/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/desc b/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/desc
new file mode 100644
index 0000000..3ead276
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: binaries/debug-symbols
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/hints b/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/hints
new file mode 100644
index 0000000..5a3ede3
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/hints
@@ -0,0 +1 @@
+binaries-general (binary): unstripped-binary-or-object [usr/bin/unstripped]
diff --git a/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/post-test b/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/desc b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/desc
new file mode 100644
index 0000000..e94b7c0
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: binaries/debug-symbols/detached
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/hints b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/hints
new file mode 100644
index 0000000..849ff30
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/hints
@@ -0,0 +1,4 @@
+binaries-general (binary): debug-symbols-not-detached [usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug]
+binaries-general (binary): debug-symbols-directly-in-usr-lib-debug [usr/lib/debug/basic]
+binaries-general (binary): debug-symbols-directly-in-usr-lib-debug [usr/lib/debug/basic.static]
+binaries-general (binary): debug-file-with-no-debug-symbols [usr/lib/debug/usr/share/foo/basic]
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/post-test b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/control b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..79eebf1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/desc b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/desc
new file mode 100644
index 0000000..d606fde
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debug
+Check: binaries/debug-symbols/detached
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/hints b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/hints
new file mode 100644
index 0000000..d524d8e
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/hints
@@ -0,0 +1,5 @@
+libhello0-dbg (binary): debug-symbols-not-detached [usr/lib/debug/lib/libhello.so.0.0]
+libhello0-dbg (binary): debug-symbols-directly-in-usr-lib-debug [usr/lib/debug/libhello.so.0.0]
+libhello0-dbg (binary): debug-file-with-no-debug-symbols [usr/lib/debug/usr/lib/libhello.so.0.0]
+libhello0-dbg (binary): debug-file-with-no-debug-symbols [usr/lib/debug/lib/libhello.so.0.0]
+hello-dbg (binary): debug-file-with-no-debug-symbols [usr/lib/debug/usr/bin/hello]
diff --git a/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/post-test b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/detached/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/control b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/templates b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/desc b/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/desc
new file mode 100644
index 0000000..28e4772
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: binaries/debug-symbols
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/hints b/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/hints
new file mode 100644
index 0000000..19858fb
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): unstripped-binary-or-object [usr/bin/hello]
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/post-test b/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/control b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..79eebf1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/desc b/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/desc
new file mode 100644
index 0000000..2d3463a
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debug
+Check: binaries/debug-symbols
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/hints b/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/hints
new file mode 100644
index 0000000..44d7a55
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/hints
@@ -0,0 +1 @@
+hello (binary): unstripped-binary-or-object [usr/bin/hello.dbg]
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/post-test b/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/desc b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..27226a5
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: binaries/debug-symbols
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/hints b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..1215594
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/hints
@@ -0,0 +1,3 @@
+libbaz1 (binary): unstripped-binary-or-object [usr/lib/libfoo2.so.1.0.3b]
+libbaz1 (binary): unstripped-binary-or-object [usr/lib/libbaz3.so.1.0.3b]
+libbaz1 (binary): unstripped-binary-or-object [usr/lib/libbaz1.so.1.0.3b]
diff --git a/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/post-test b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/install b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/install
new file mode 100644
index 0000000..c10e578
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/install
@@ -0,0 +1 @@
+foreign-binary usr/bin
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/rules b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/rules
new file mode 100755
index 0000000..2ce6f53
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ # do not try to strip cross-compiled binaries with native tooling
+
+override_dh_shlibdeps:
+ # do not try to include missing libraries
+
+override_dh_dwz:
+ # cross-compiled binaries do not always seem to have a debug section
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/fill-values b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/fill-values
new file mode 100644
index 0000000..24f607a
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: wrong-binary-architecture
+Description: Binary architecture does not match package declaration
+Package-Architecture: any
+Extra-Build-Depends:
+ gcc-arm-linux-gnueabihf [amd64 i386], gcc-x86-64-linux-gnu [!amd64 !i386]
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/Makefile b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/Makefile
new file mode 100644
index 0000000..bf92eaf
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/Makefile
@@ -0,0 +1,37 @@
+# This test works on amd64 when the cross-compiler for armhf is installed.
+#
+# The build prerequisite was not added to Lintian, however, since it was
+# not clear how the architecture would be enabled in the Gitlab CI
+# runner.
+#
+# On amd64 or i386, please follow these steps to run the test:
+#
+# dpkg --add-architecture armhf
+# apt update
+# apt install gcc-arm-linux-gnueabihf
+#
+# On all other architectures this may work, but was not tested:
+#
+# dpkg --add-architecture amd64
+# apt update
+# apt install gcc-x86-64-linux-gnu
+#
+# (Taken from: https://wiki.debian.org/CrossToolchains)
+
+ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq ($(ARCH),amd64)
+CC := arm-linux-gnueabihf-gcc
+else
+CC := x86_64-linux-gnu-gcc
+endif
+
+foreign-binary: hello.c
+ $(CC) $^ -o $@
+
+.PHONY: clean
+clean:
+ rm -f foreign-binary
+
+.PHONY: clean
+distclean: clean
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/hello.c b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/desc b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/desc
new file mode 100644
index 0000000..382b802
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/desc
@@ -0,0 +1,2 @@
+Testname: wrong-binary-architecture
+Check: binaries/debug-symbols
diff --git a/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/hints b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/hints
new file mode 100644
index 0000000..1116da1
--- /dev/null
+++ b/t/recipes/checks/binaries/debug-symbols/wrong-binary-architecture/eval/hints
@@ -0,0 +1 @@
+wrong-binary-architecture (binary): unstripped-binary-or-object [usr/bin/foreign-binary]
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/fill-values b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/fill-values
new file mode 100644
index 0000000..96dea07
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-hardening
+Description: Check for missing hardening features
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/Makefile b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/Makefile
new file mode 100644
index 0000000..f1e06f8
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/Makefile
@@ -0,0 +1,35 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell ${CC} -no-pie 2>&1)),)
+ CCWEAK := ${CC}
+else
+ CCWEAK := ${CC} -fno-pie -no-pie
+endif
+
+all: weak.1 strong.1
+ # Build without dpkg-buildflags.
+ $(CCWEAK) -o weak -g \
+ -fno-stack-protector \
+ -Wl,-z,norelro \
+ -U_FORTIFY_SOURCE \
+ hello.c
+ $(CC) -o strong \
+ $(shell dpkg-buildflags --get CPPFLAGS) \
+ $(shell dpkg-buildflags --get CFLAGS) \
+ $(shell dpkg-buildflags --get LDFLAGS) \
+ hello.c
+%.1: base.pod
+ sed s/@NAME@/$(basename $@)/g < $< | \
+ pod2man --name $(basename $@) --section 1 > $@
+
+install:
+ install -d $(DESTDIR)/usr/bin/
+ install -d $(DESTDIR)/usr/share/man/man1
+ install -m 755 -c weak $(DESTDIR)/usr/bin/weak
+ install -m 755 -c strong $(DESTDIR)/usr/bin/strong
+ install -m 644 -c weak.1 $(DESTDIR)/usr/share/man/man1/weak.1
+ install -m 644 -c strong.1 $(DESTDIR)/usr/share/man/man1/strong.1
+
+clean distclean:
+ rm -f weak strong *.1
+
+check test:
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/base.pod b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/base.pod
new file mode 100644
index 0000000..1e900d7
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/base.pod
@@ -0,0 +1,12 @@
+=head1 NAME
+
+@NAME@ -- binary that does something
+
+=head1 SYNOPSIS
+
+ @NAME@ [options]
+
+=head1 DESCRIPTION
+
+@NAME@ does something very useful.
+
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c
new file mode 100644
index 0000000..7b87bd7
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+
+void
+report(char *string)
+{
+ char buf[80];
+ int len;
+
+ strcpy(buf, string);
+ fprintf(stdout, "Hello world from %s!\n%n", buf, &len);
+}
+
+int
+main(int argc, char *argv[])
+{
+ report(argv[0]);
+}
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/eval/desc b/t/recipes/checks/binaries/hardening/binaries-hardening/eval/desc
new file mode 100644
index 0000000..92ef00e
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/eval/desc
@@ -0,0 +1,3 @@
+Testname: binaries-hardening
+Test-Architectures: amd64 i386 armhf arm64
+Check: binaries/hardening
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/eval/hints b/t/recipes/checks/binaries/hardening/binaries-hardening/eval/hints
new file mode 100644
index 0000000..43f2544
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/eval/hints
@@ -0,0 +1,4 @@
+binaries-hardening (binary): hardening-no-relro [usr/bin/weak]
+binaries-hardening (binary): hardening-no-pie [usr/bin/weak]
+binaries-hardening (binary): hardening-no-fortify-functions [usr/bin/weak]
+binaries-hardening (binary): hardening-no-bindnow [usr/bin/weak]
diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/eval/test-calibration b/t/recipes/checks/binaries/hardening/binaries-hardening/eval/test-calibration
new file mode 100755
index 0000000..89c85ec
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/eval/test-calibration
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use lib "$ENV{LINTIAN_BASE}/lib";
+
+use Lintian::Profile;
+
+my $PROFILE = Lintian::Profile->new;
+$PROFILE->load('debian/main', [$ENV{'LINTIAN_BASE'}]);
+
+my %recommended_hardening_features
+ = %{$PROFILE->data->hardening_buildflags->recommended_features};
+
+my ($expected, undef, $calibrated) = @ARGV;
+
+my $arch = `dpkg-architecture -qDEB_HOST_ARCH`;
+chomp $arch;
+
+die "Unknown architecture: $arch"
+ unless exists $recommended_hardening_features{$arch};
+
+open my $cfd, '>', $calibrated or die "open $calibrated: $!";
+open my $efd, '<', $expected or die "open $expected: $!";
+
+while (my $line = <$efd>) {
+ my $dp = 0;
+ if ($line =~ m/^.: [^:]+: hardening-no-(\S+)/) {
+
+ # hardening flag, but maybe not for this architecture
+ my $feature = $1;
+
+ my %renames = ('fortify-functions' => 'fortify');
+ my $renamed_feature = $renames{$feature} // $feature;
+
+ $dp = 1 if $recommended_hardening_features{$arch}{$renamed_feature};
+ } else {
+ # only calibrate hardening flags.
+ $dp = 1;
+ }
+
+ print $cfd $line if $dp;
+}
+
+close $efd;
+close $cfd or die "close $expected: $!";
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/install b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/install
new file mode 100644
index 0000000..c10e578
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/install
@@ -0,0 +1 @@
+foreign-binary usr/bin
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/rules b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/rules
new file mode 100755
index 0000000..2ce6f53
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ # do not try to strip cross-compiled binaries with native tooling
+
+override_dh_shlibdeps:
+ # do not try to include missing libraries
+
+override_dh_dwz:
+ # cross-compiled binaries do not always seem to have a debug section
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/fill-values b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/fill-values
new file mode 100644
index 0000000..24f607a
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: wrong-binary-architecture
+Description: Binary architecture does not match package declaration
+Package-Architecture: any
+Extra-Build-Depends:
+ gcc-arm-linux-gnueabihf [amd64 i386], gcc-x86-64-linux-gnu [!amd64 !i386]
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/Makefile b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/Makefile
new file mode 100644
index 0000000..bf92eaf
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/Makefile
@@ -0,0 +1,37 @@
+# This test works on amd64 when the cross-compiler for armhf is installed.
+#
+# The build prerequisite was not added to Lintian, however, since it was
+# not clear how the architecture would be enabled in the Gitlab CI
+# runner.
+#
+# On amd64 or i386, please follow these steps to run the test:
+#
+# dpkg --add-architecture armhf
+# apt update
+# apt install gcc-arm-linux-gnueabihf
+#
+# On all other architectures this may work, but was not tested:
+#
+# dpkg --add-architecture amd64
+# apt update
+# apt install gcc-x86-64-linux-gnu
+#
+# (Taken from: https://wiki.debian.org/CrossToolchains)
+
+ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq ($(ARCH),amd64)
+CC := arm-linux-gnueabihf-gcc
+else
+CC := x86_64-linux-gnu-gcc
+endif
+
+foreign-binary: hello.c
+ $(CC) $^ -o $@
+
+.PHONY: clean
+clean:
+ rm -f foreign-binary
+
+.PHONY: clean
+distclean: clean
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/hello.c b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/desc b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/desc
new file mode 100644
index 0000000..b5d2db5
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/desc
@@ -0,0 +1,2 @@
+Testname: wrong-binary-architecture
+Check: binaries/hardening
diff --git a/t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/hints b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/hints
new file mode 100644
index 0000000..68d4010
--- /dev/null
+++ b/t/recipes/checks/binaries/hardening/wrong-binary-architecture/eval/hints
@@ -0,0 +1 @@
+wrong-binary-architecture (binary): hardening-no-bindnow [usr/bin/foreign-binary]
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/compat.in b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/control.in b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/control.in
new file mode 100644
index 0000000..1c522b3
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Section: libs
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/libbasic2.symbols b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c67f613
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,4 @@
+libbasic.so.2 libbasic2 #MINVER#
+ do_open@Base 1.0
+ lib_interface@Base 1.0
+ zz_open@Base 1.0
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/fill-values b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/fill-values
new file mode 100644
index 0000000..b6b9ca6
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-missing-lfs
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing lfs
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/Makefile b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/Makefile
new file mode 100644
index 0000000..637a9ca
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 lfs.c basic.c
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/basic.c b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/basic.c
new file mode 100644
index 0000000..3d12fde
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/basic.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
+
+int
+do_open (char *file) {
+ return open (file, O_RDONLY);
+}
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/lfs.c b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/lfs.c
new file mode 100644
index 0000000..04fe113
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/build-spec/orig/lfs.c
@@ -0,0 +1,10 @@
+#define _FILE_OFFSET_BITS 64
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int
+zz_open (char *file) {
+ return open (file, O_RDONLY);
+}
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/desc b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/desc
new file mode 100644
index 0000000..65404ca
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/desc
@@ -0,0 +1,3 @@
+Testname: binaries-missing-lfs
+Test-Architectures: i386 armhf
+Check: binaries/large-file-support
diff --git a/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/hints b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/hints
new file mode 100644
index 0000000..beba8ae
--- /dev/null
+++ b/t/recipes/checks/binaries/large-file-support/binaries-missing-lfs/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): binary-file-built-without-LFS-support [usr/lib/libbasic.so.2]
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/control b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/rules b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/debian/templates b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/fill-values b/t/recipes/checks/binaries/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/binaries/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/binaries/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/binaries/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/binaries/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/legacy-binary/eval/desc b/t/recipes/checks/binaries/legacy-binary/eval/desc
new file mode 100644
index 0000000..849f27d
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: binaries
diff --git a/t/recipes/checks/binaries/legacy-binary/eval/hints b/t/recipes/checks/binaries/legacy-binary/eval/hints
new file mode 100644
index 0000000..472a768
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): binary-has-unneeded-section .comment [usr/bin/hello-static]
diff --git a/t/recipes/checks/binaries/legacy-binary/eval/post-test b/t/recipes/checks/binaries/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/binaries/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/binaries/legacy-libbaz/eval/desc b/t/recipes/checks/binaries/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..4f8811d
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: binaries
diff --git a/t/recipes/checks/binaries/legacy-libbaz/eval/hints b/t/recipes/checks/binaries/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..7f3f70c
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz1-dev (binary): binary-has-unneeded-section .comment [usr/lib/ma-dir/perl/version/auto/Foo/Foo.so]
+libbaz1 (binary): binary-has-unneeded-section .comment [usr/lib/ma-dir/perl/version/auto/Foo/Foo.so]
diff --git a/t/recipes/checks/binaries/legacy-libbaz/eval/post-test b/t/recipes/checks/binaries/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/binaries/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/compat.in b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/control.in b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/control.in
new file mode 100644
index 0000000..91b453f
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/control.in
@@ -0,0 +1,53 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libmultiarch-none-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (M-A: none)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package does not specify a Multi-Arch field.
+
+Package: libmultiarch-foreign-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %] (M-A: foreign)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package specifies Multi-Arch: foreign.
+
+Package: libmultiarch-same-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
+Description: [% $description %] (M-A: same)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package specifies Multi-Arch: same.
+
+Package: libmultiarch-contrib-dev
+Architecture: any
+Section: contrib/libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (contrib)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package is in the contrib/libdevel section.
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/rules b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/rules
new file mode 100755
index 0000000..fe4db63
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+include /usr/share/dpkg/buildflags.mk
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ set -e; for X in none same foreign contrib; do \
+ install -d debian/libmultiarch-$$X-dev/usr/bin; \
+ install -d debian/libmultiarch-$$X-dev/var/lib/private; \
+ install -m 755 true debian/libmultiarch-$$X-dev/usr/bin/$$X; \
+ install -m 755 true debian/libmultiarch-$$X-dev/var/lib/private/$$X; \
+ install -m 755 script debian/libmultiarch-$$X-dev/usr/bin/$$X-script; \
+ install -m 755 script debian/libmultiarch-$$X-dev/var/lib/private/$$X-script; \
+ done
+
+override_dh_strip:
+ # Avoid symbol conflicts warnings
+ dh_strip --no-automatic-dbgsym
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/fill-values b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/fill-values
new file mode 100644
index 0000000..929c501
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-development-package-ships-elf-binary-in-path
+Description: Test for development packages shipping ELF binaries in $PATH
+Default-Build-Depends: debhelper (>= 9.20160114~)
+Dh-Compat-Level: 9
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/Makefile b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/Makefile
new file mode 100644
index 0000000..a877dfd
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o true true.c
+
+clean distclean:
+ rm -f true
+
+check test:
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/script b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/script
new file mode 100755
index 0000000..c52d3c2
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/script
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exit 0
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/true.c b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/true.c
new file mode 100644
index 0000000..8479e67
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/build-spec/orig/true.c
@@ -0,0 +1,5 @@
+int
+main(void)
+{
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/desc b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/desc
new file mode 100644
index 0000000..0d0db95
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-development-package-ships-elf-binary-in-path
+Check: binaries/location
diff --git a/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/hints b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/hints
new file mode 100644
index 0000000..ad80dad
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-development-package-ships-elf-binary-in-path/eval/hints
@@ -0,0 +1,5 @@
+libmultiarch-same-dev (binary): development-package-ships-elf-binary-in-path [usr/bin/same]
+libmultiarch-same-dev (binary): arch-dependent-file-not-in-arch-specific-directory [var/lib/private/same]
+libmultiarch-same-dev (binary): arch-dependent-file-not-in-arch-specific-directory [usr/bin/same]
+libmultiarch-none-dev (binary): development-package-ships-elf-binary-in-path [usr/bin/none]
+libmultiarch-contrib-dev (binary): development-package-ships-elf-binary-in-path [usr/bin/contrib]
diff --git a/t/recipes/checks/binaries/location/binaries-general/build-spec/debian/rules b/t/recipes/checks/binaries/location/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/location/binaries-general/build-spec/fill-values b/t/recipes/checks/binaries/location/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/location/binaries-general/eval/desc b/t/recipes/checks/binaries/location/binaries-general/eval/desc
new file mode 100644
index 0000000..74bbf38
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: binaries/location
diff --git a/t/recipes/checks/binaries/location/binaries-general/eval/hints b/t/recipes/checks/binaries/location/binaries-general/eval/hints
new file mode 100644
index 0000000..ae43fff
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/eval/hints
@@ -0,0 +1,2 @@
+binaries-general (binary): arch-dependent-file-in-usr-share [usr/share/foo/basicdebug]
+binaries-general (binary): arch-dependent-file-in-usr-share [usr/share/foo/basic]
diff --git a/t/recipes/checks/binaries/location/binaries-general/eval/post-test b/t/recipes/checks/binaries/location/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/location/binaries-misplaced/build-spec/debian/rules b/t/recipes/checks/binaries/location/binaries-misplaced/build-spec/debian/rules
new file mode 100755
index 0000000..a3ab46d
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-misplaced/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+pkg=binaries-misplaced
+%:
+ dh $@
+
+override_dh_install:
+ mkdir -p debian/$(pkg)/etc/
+ cp -a /bin/true debian/$(pkg)/etc/foo
+ # explicitly call dh_shlibdeps since debhelper is being
+ # "smart" and not calling it in newer versions (8.9.something)
+ dh_shlibdeps
+ dh_install
diff --git a/t/recipes/checks/binaries/location/binaries-misplaced/build-spec/fill-values b/t/recipes/checks/binaries/location/binaries-misplaced/build-spec/fill-values
new file mode 100644
index 0000000..6f79eab
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-misplaced/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: binaries-misplaced
+Description: Test binaries in /etc
diff --git a/t/recipes/checks/binaries/location/binaries-misplaced/eval/desc b/t/recipes/checks/binaries/location/binaries-misplaced/eval/desc
new file mode 100644
index 0000000..5e2795a
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-misplaced/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-misplaced
+Check: binaries/location
diff --git a/t/recipes/checks/binaries/location/binaries-misplaced/eval/hints b/t/recipes/checks/binaries/location/binaries-misplaced/eval/hints
new file mode 100644
index 0000000..91f0ef7
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-misplaced/eval/hints
@@ -0,0 +1 @@
+binaries-misplaced (binary): binary-in-etc [etc/foo]
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/compat.in b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/control.in b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/control.in
new file mode 100644
index 0000000..2efaa33
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/control.in
@@ -0,0 +1,25 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}, multiarch-support
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Multi-Arch: same
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Note there is an explicitly pre-depends on multiarch-support, since
+ older versions of debhelper might not use it yet. dpkg-dev will
+ remove the duplicate entry (if any).
+
+
+
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/libbasic2.symbols b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c2b8fb3
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,2 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/fill-values b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/fill-values
new file mode 100644
index 0000000..c508b75
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-multiarch-same
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test of multiarch same package with unsafe binaries
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/Makefile b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/Makefile
new file mode 100644
index 0000000..ad7783b
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/basic.c b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/eval/desc b/t/recipes/checks/binaries/location/binaries-multiarch-same/eval/desc
new file mode 100644
index 0000000..50a4f57
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-multiarch-same
+Check: binaries/location
diff --git a/t/recipes/checks/binaries/location/binaries-multiarch-same/eval/hints b/t/recipes/checks/binaries/location/binaries-multiarch-same/eval/hints
new file mode 100644
index 0000000..b482a07
--- /dev/null
+++ b/t/recipes/checks/binaries/location/binaries-multiarch-same/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): arch-dependent-file-not-in-arch-specific-directory [usr/lib/libbasic.so.2]
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/fill-values b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/fill-values
new file mode 100644
index 0000000..b7493a0
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-obsolete-des
+Description: Check detection of obsolete DES functions
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/Makefile b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/Makefile
new file mode 100644
index 0000000..99409d2
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/Makefile
@@ -0,0 +1,52 @@
+# Makefile for the obsolete-des tests.
+
+# glibc 2.28 and greater try to prevent new programs from being linked
+# against the obsolete functions we're testing for. This can be worked
+# around, but we have to know the exact "symbol version" associated with
+# the obsolete functions, which has to be dug out of libcrypt.so with nm.
+
+LIBCRYPT_FILE := $(shell $(CC) $(CFLAGS) $(LDFLAGS) -print-file-name=libcrypt.so)
+
+SYMVER := $(shell nm --dynamic --with-symbol-versions $(LIBCRYPT_FILE) | \
+ grep ' setkey@' | cut -d@ -f2)
+
+# The output of the above nm | grep | cut pipeline will be the empty string
+# if it is possible to link programs against 'setkey' without special magic,
+# and a nonempty string if special magic is required. All five of the
+# functions we are testing were introduced in the same release of glibc and
+# disabled for new programs as a group in a single release of glibc, so it
+# is only necessary to check how one of them is handled.
+ifneq "$(SYMVER)" ""
+SYMVER_DEFINE := -DSYMVER=\"$(SYMVER)\"
+else
+SYMVER_DEFINE := -USYMVER
+endif
+
+CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
+CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) $(SYMVER_DEFINE)
+LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+
+PROGRAMS := uses-fcrypt uses-encrypt uses-encrypt_r uses-setkey uses-setkey_r
+MANPAGES := $(PROGRAMS:=.1)
+
+all: $(PROGRAMS) $(MANPAGES)
+
+uses-%: uses-%.o
+ $(CC) $(CFLAGS) $(LDFLAGS) $< -o $@ -lcrypt
+
+%.1: dummy.pod
+ sed s/@NAME@/$(@F)/g < $< | \
+ pod2man --name $(@F) --section 1 > $@
+
+install: all
+ $(INSTALL) -d $(DESTDIR)/usr/bin
+ $(INSTALL) -d $(DESTDIR)/usr/share/man/man1
+ $(INSTALL) -m 755 $(PROGRAMS) $(DESTDIR)/usr/bin
+ $(INSTALL) -m 644 $(MANPAGES) $(DESTDIR)/usr/share/man/man1
+
+clean distclean:
+ -rm -f *.o $(PROGRAMS) $(MANPAGES)
+
+check test:
+
+.PRECIOUS: $(PROGRAMS:=.o)
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/dummy.pod b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/dummy.pod
new file mode 100644
index 0000000..224df4a
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/dummy.pod
@@ -0,0 +1,11 @@
+=head1 NAME
+
+@NAME@ -- binary that does something
+
+=head1 SYNOPSIS
+
+ @NAME@ [options]
+
+=head1 DESCRIPTION
+
+@NAME@ does something very useful.
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt.c b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt.c
new file mode 100644
index 0000000..b6ca062
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt.c
@@ -0,0 +1,30 @@
+/* This program uses the obsolete function 'encrypt', which performs
+ DES encryption. */
+
+#define _GNU_SOURCE 1
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+/* The prototype of 'encrypt' may already have been removed from
+ unistd.h. */
+extern void encrypt(char block[64], int edflag);
+
+/* It may already not be possible to link new programs that use
+ 'encrypt' without special magic. */
+#ifdef SYMVER
+__asm__ (".symver encrypt, encrypt@" SYMVER);
+#endif
+
+int
+main(void)
+{
+ char block[64];
+ memset(block, 0, sizeof block);
+ encrypt(block, 0);
+ for (size_t i = 0; i < sizeof block; i++) {
+ putchar(block[i] ? '1' : '0');
+ }
+ putchar('\n');
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt_r.c b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt_r.c
new file mode 100644
index 0000000..a382624
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-encrypt_r.c
@@ -0,0 +1,33 @@
+/* This program uses the obsolete function 'encrypt_r', which performs
+ DES encryption. */
+
+#define _GNU_SOURCE 1
+#include <crypt.h>
+#include <string.h>
+#include <stdio.h>
+
+/* The prototype of 'encrypt_r' may already have been removed from
+ crypt.h. */
+extern void encrypt_r(char block[64], int edflag, struct crypt_data *data);
+
+/* It may already not be possible to link new programs that use
+ 'encrypt_r' without special magic. */
+#ifdef SYMVER
+__asm__ (".symver encrypt_r, encrypt_r@" SYMVER);
+#endif
+
+int
+main(void)
+{
+ struct crypt_data data;
+ char block[64];
+
+ memset(&data, 0, sizeof data);
+ memset(block, 0, sizeof block);
+ encrypt_r(block, 0, &data);
+ for (size_t i = 0; i < sizeof block; i++) {
+ putchar(block[i] ? '1' : '0');
+ }
+ putchar('\n');
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-fcrypt.c b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-fcrypt.c
new file mode 100644
index 0000000..d71a837
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-fcrypt.c
@@ -0,0 +1,21 @@
+/* This program uses the obsolete function 'fcrypt',
+ which is an alias for 'crypt'. */
+
+#include <crypt.h>
+#include <stdio.h>
+
+/* The prototype may already have been removed from crypt.h. */
+extern char *fcrypt(const char *, const char *);
+
+/* It may already not be possible to link new programs that use
+ 'fcrypt' without special magic. */
+#ifdef SYMVER
+__asm__ (".symver fcrypt, fcrypt@" SYMVER);
+#endif
+
+int
+main(void)
+{
+ puts(fcrypt("password", "Dn"));
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey.c b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey.c
new file mode 100644
index 0000000..bdf70b0
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey.c
@@ -0,0 +1,45 @@
+/* This program uses the obsolete function 'setkey', which sets a key for
+ DES encryption. */
+
+#define _GNU_SOURCE 1
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+
+/* The prototype of 'setkey' may already have been removed from
+ stdlib.h. */
+extern void setkey(const char *);
+
+
+/* It may already not be possible to link new programs that use
+ 'setkey' without special magic. */
+#ifdef SYMVER
+__asm__ (".symver setkey, setkey@" SYMVER);
+#endif
+
+/* setkey uses a 1-bit-per-byte representation of a DES key.
+ Yes, really. */
+const char key[64] = {
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+};
+
+int
+main(void)
+{
+ /* The primary effects of calling 'setkey' are only visible by
+ calling 'encrypt', and we don't want to call 'encrypt' in this
+ program because we want to make sure Lintian detects programs
+ that call 'setkey' but not 'encrypt', even though that doesn't
+ make a whole lot of sense. So we just call it and then check
+ whether it changed errno, which is the documented way to check
+ whether it failed. */
+ errno = 0;
+ setkey(key);
+ if (errno) {
+ perror("setkey");
+ }
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey_r.c b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey_r.c
new file mode 100644
index 0000000..3ad3f35
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/build-spec/orig/uses-setkey_r.c
@@ -0,0 +1,48 @@
+/* This program uses the obsolete function 'setkey_r', which sets a key for
+ DES encryption. */
+
+#define _GNU_SOURCE 1
+#include <crypt.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+/* The prototype of 'setkey_r' may already have been removed from
+ crypt.h. */
+extern void setkey_r(const char *, struct crypt_data *);
+
+/* It may already not be possible to link new programs that use
+ 'setkey_r' without special magic. */
+#ifdef SYMVER
+__asm__ (".symver setkey_r, setkey_r@" SYMVER);
+#endif
+
+/* setkey_r uses a 1-bit-per-byte representation of a DES key.
+ Yes, really. */
+const char key[64] = {
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+};
+
+int
+main(void)
+{
+ struct crypt_data data;
+ memset(&data, 0, sizeof data);
+
+ /* The primary effects of calling 'setkey_r' are only visible by
+ calling 'encrypt_r', and we don't want to call 'encrypt_r' in
+ this program because we want to make sure Lintian detects
+ programs that call 'setkey_r' but not 'encrypt_r', even though
+ that doesn't make a whole lot of sense. So we just call it and
+ then check whether it changed errno, which is the documented
+ way to check whether it failed. */
+ errno = 0;
+ setkey_r(key, &data);
+ if (errno) {
+ perror("setkey_r");
+ }
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/desc b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/desc
new file mode 100644
index 0000000..0ceced0
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-obsolete-des
+Check: binaries/obsolete/crypt
diff --git a/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/hints b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/hints
new file mode 100644
index 0000000..a49c520
--- /dev/null
+++ b/t/recipes/checks/binaries/obsolete/crypt/binaries-obsolete-des/eval/hints
@@ -0,0 +1,5 @@
+binaries-obsolete-des (binary): obsolete-des-encryption setkey_r [usr/bin/uses-setkey_r]
+binaries-obsolete-des (binary): obsolete-des-encryption setkey [usr/bin/uses-setkey]
+binaries-obsolete-des (binary): obsolete-des-encryption encrypt_r [usr/bin/uses-encrypt_r]
+binaries-obsolete-des (binary): obsolete-des-encryption encrypt [usr/bin/uses-encrypt]
+binaries-obsolete-des (binary): obsolete-crypt-alias fcrypt [usr/bin/uses-fcrypt]
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/debian/rules
new file mode 100755
index 0000000..fab80fa
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# dwz errors out; no .debug_info section present due to -nostdlib
+override_dh_dwz:
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/fill-values
new file mode 100644
index 0000000..88f75cb
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-libc-link
+Description: Binaries not linked against libc
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/Makefile
new file mode 100644
index 0000000..daa4159
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/Makefile
@@ -0,0 +1,35 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+LINKER_FLAGS := -Wl,--no-copy-dt-needed-entries,--no-as-needed
+
+all: basic basic.1 libbasic-nodeps libbasic-nolibc
+
+basic.1: basic.pod
+ pod2man --section 1 $< > $@
+
+basic: basic.o
+ $(CC) -nostdlib -o$@ $< $(LINKER_FLAGS) -lm $(LFLAGS)
+
+libbasic-nodeps: basic.o
+ $(CC) -nostdlib --shared -o$@ $<
+
+libbasic-nolibc: basic.o
+ $(CC) -nostdlib --shared -o$@ $< $(LINKER_FLAGS) -lm
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -d $(DESTDIR)/usr/lib/basic
+ install -d $(DESTDIR)/usr/share/man/man1
+ install -m 755 -c basic $(DESTDIR)/usr/bin/basic
+ install -m 755 -c libbasic-* $(DESTDIR)/usr/lib/basic
+ install -m 644 -c basic.1 $(DESTDIR)/usr/share/man/man1
+
+clean distclean:
+ rm -f basic libbasic-* basic.1
+
+check test:
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.c b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.c
new file mode 100644
index 0000000..77bc677
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.c
@@ -0,0 +1,5 @@
+int
+main(void)
+{
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.pod b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.pod
new file mode 100644
index 0000000..d395e96
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/build-spec/orig/basic.pod
@@ -0,0 +1,14 @@
+=head1 NAME
+
+basic -- segfaults
+
+=head1 SYNOPSIS
+
+ basic
+
+=head1 DESCRIPTION
+
+It tends to seg. fault, but if it doesn't it will return 0 like
+/bin/true.
+
+=cut
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/desc b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/desc
new file mode 100644
index 0000000..66097cf
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-libc-link
+Check: binaries/prerequisites
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/hints b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/hints
new file mode 100644
index 0000000..59ab437
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/hints
@@ -0,0 +1,3 @@
+binaries-libc-link (binary): shared-library-lacks-prerequisites [usr/lib/basic/libbasic-nodeps]
+binaries-libc-link (binary): program-not-linked-against-libc [usr/bin/basic]
+binaries-libc-link (binary): library-not-linked-against-libc [usr/lib/basic/libbasic-nolibc]
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/post-test b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/post-test
new file mode 100644
index 0000000..c156be8
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-libc-link/eval/post-test
@@ -0,0 +1,3 @@
+# The LDFLAGS parts of the hardening flags are a bit difficult to pass
+# to the linker so just drop them.
+/hardening-no-/ d
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/compat.in b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/control.in b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/control.in
new file mode 100644
index 0000000..d8adb1b
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: libbasic2
+Section: libs
+Architecture: [% $package_architecture %]
+Depends: some-pkg, ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..0119bca
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,4 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
+libbasic++.so.2 libbasic2 #MINVER#
+ (c++)cxx_lib_interface@Base 1.0
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/rules
new file mode 100644
index 0000000..188f490
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/debian/rules
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+# Make sure the C++ library actually links to libc
+export DEB_LDFLAGS_MAINT_APPEND=-Wl,--no-as-needed
+
+%:
+ dh $@
+
+override_dh_gencontrol:
+ # Remove the shlib:Depends since it will contain libc
+ sed -i '/shlib:Depends=/ d' debian/libbasic2.substvars
+ echo "shlib:depends=" >> debian/libbasic2.substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/fill-values
new file mode 100644
index 0000000..0f58398
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends-on-libc
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing libc depends
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/Makefile
new file mode 100644
index 0000000..fcf25f4
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/Makefile
@@ -0,0 +1,14 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+ g++ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs \
+ -Wl,-soname,libbasic++.so.2 -olibbasic++.so.2 cpp.cxx
+
+install:
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+ install -m 644 -c -s libbasic++.so.2 $(DESTDIR)/usr/lib/libbasic++.so.2
+
+clean distclean:
+ rm -f libbasic.so.2 libbasic++.so.2
+
+check test:
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/basic.c b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx
new file mode 100644
index 0000000..1338e40
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <vector>
+
+using namespace std;
+
+template <class T> T
+cxx_lib_interface(vector<T> &v)
+{
+ cout << ":-) hello world" << endl;
+ return v[0];
+}
+
+
+
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/desc b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/desc
new file mode 100644
index 0000000..88d5fa2
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends-on-libc
+Check: binaries/prerequisites
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/hints b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/hints
new file mode 100644
index 0000000..5c512f2
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends-on-libc/eval/hints
@@ -0,0 +1,2 @@
+libbasic2 (binary): missing-dependency-on-libstdc++ needed by usr/lib/libbasic++.so.2
+libbasic2 (binary): missing-dependency-on-libc needed by usr/lib/libbasic++.so.2 and 1 others
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/compat.in b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/control.in b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..3b37179
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Section: libs
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/libbasic2.symbols b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c2b8fb3
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,2 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/rules
new file mode 100644
index 0000000..8a83255
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ sed -i '/Depends:/ d' debian/libbasic2/DEBIAN/control
+ dh_builddeb
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/fill-values
new file mode 100644
index 0000000..b1caef8
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing depends line
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/Makefile
new file mode 100644
index 0000000..6fc3968
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/basic.c b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/desc b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/desc
new file mode 100644
index 0000000..6ad9fdd
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends
+Check: binaries/prerequisites
diff --git a/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/hints b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/hints
new file mode 100644
index 0000000..db69d51
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/binaries-missing-depends/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): undeclared-elf-prerequisites (libc.so.6) [usr/lib/libbasic.so.2]
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/control b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..79eebf1
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/desc b/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/desc
new file mode 100644
index 0000000..772ec4e
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debug
+Check: binaries/prerequisites
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/hints b/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/hints
new file mode 100644
index 0000000..7cbded8
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/hints
@@ -0,0 +1,2 @@
+libhello0-dbg (binary): shared-library-lacks-prerequisites [usr/lib/libhello.so.dbg]
+libhello0-dbg (binary): missing-dependency-on-libc needed by usr/lib/debug/lib/libhello.so.0.0 and 1 others
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/post-test b/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/desc b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..f229b04
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: binaries/prerequisites
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/hints b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..0a04cbb
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/hints
@@ -0,0 +1,6 @@
+libbaz1-dev (binary): missing-dependency-on-libc needed by usr/lib/ma-dir/perl/version/auto/Foo/Foo.so
+libbaz1 (binary): undeclared-elf-prerequisites (libc.so.6) [usr/lib/ma-dir/perl/version/auto/Foo/Foo.so]
+libbaz1 (binary): undeclared-elf-prerequisites (libc.so.6) [usr/lib/libfoo2.so.1.0.3b]
+libbaz1 (binary): undeclared-elf-prerequisites (libc.so.6) [usr/lib/libbaz3.so.1.0.3b]
+libbaz1 (binary): undeclared-elf-prerequisites (libc.so.6) [usr/lib/libbaz1.so.1.0.3b]
+libbaz1 (binary): undeclared-elf-prerequisites (libc.so.6) [usr/lib/libbaz.so]
diff --git a/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/post-test b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/debian/rules
new file mode 100644
index 0000000..f7cfef1
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie
+export DEB_LDFLAGS_MAINT_APPEND=-Wl,--no-as-needed
+
+%:
+ dh $@ --buildsystem pybuild
diff --git a/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/fill-values
new file mode 100644
index 0000000..a8b1cea
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends-on-numpy-abi
+Description: Test for missing dependency on python3-numpy-abiN
+Package-Architecture: any
+Extra-Build-Depends: python3-all-dev, python3-numpy, dh-python, python3-setuptools
diff --git a/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/basic.c b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/basic.c
new file mode 100644
index 0000000..9bb2221
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/basic.c
@@ -0,0 +1,21 @@
+#include <Python.h>
+#include <numpy/arrayobject.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+void do_import_array(void)
+{
+ import_array();
+ hardening_trigger(NULL, 0, NULL);
+}
diff --git a/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/setup.py b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/setup.py
new file mode 100644
index 0000000..675a9ea
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/build-spec/orig/setup.py
@@ -0,0 +1,9 @@
+import setuptools
+import numpy
+
+setuptools.setup(
+ ext_modules=[
+ setuptools.Extension('basic', ['basic.c'],
+ include_dirs=[numpy.get_include()]),
+ ],
+)
diff --git a/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/desc b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/desc
new file mode 100644
index 0000000..2702447
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends-on-numpy-abi
+Check: binaries/prerequisites/numpy
diff --git a/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/hints b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/hints
new file mode 100644
index 0000000..feadb98
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/numpy/binaries-missing-depends-on-numpy-abi/eval/hints
@@ -0,0 +1 @@
+binaries-missing-depends-on-numpy-abi (binary): missing-dependency-on-numpy-abi
diff --git a/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/debian/rules
new file mode 100644
index 0000000..7b55940
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/debian/rules
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_perl:
+
+override_dh_builddeb:
+ # Work around debhelper bug (triggers useless call to ldconfig)
+ rm -f debian/*/DEBIAN/postinst debian/*/DEBIAN/postrm
+ rm -f debian/*/DEBIAN/triggers
+ dh_builddeb
+
+# errors out with: objcopy: '.../binaries-missing-depends-on-xapi.debug': No such file
+override_dh_dwz:
diff --git a/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/fill-values
new file mode 100644
index 0000000..bf3682a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends-on-xapi
+Description: Test for missing perlapi depends
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/Makefile
new file mode 100644
index 0000000..5c9cbaf
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/Makefile
@@ -0,0 +1,16 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so basic.c
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/$(VENDORARCH)
+ install -m 644 -c -s libbasic.so $(DESTDIR)/$(VENDORARCH)/libbasic.so
+ install -d $(DESTDIR)/usr/lib/php5
+ install -m 644 -c -s libbasic.so $(DESTDIR)/usr/lib/php5/libbasic.so
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/basic.c b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/desc b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/desc
new file mode 100644
index 0000000..288238f
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends-on-xapi
+Check: binaries/prerequisites/perl
diff --git a/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/hints b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/hints
new file mode 100644
index 0000000..6d97760
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/binaries-missing-depends-on-xapi/eval/hints
@@ -0,0 +1 @@
+binaries-missing-depends-on-xapi (binary): missing-dependency-on-perlapi
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/desc b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..0b65f95
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: binaries/prerequisites/perl
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/hints b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..423e913
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz1 (binary): missing-dependency-on-perlapi
diff --git a/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/post-test b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/perl/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/debian/rules
new file mode 100644
index 0000000..7b55940
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/debian/rules
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_perl:
+
+override_dh_builddeb:
+ # Work around debhelper bug (triggers useless call to ldconfig)
+ rm -f debian/*/DEBIAN/postinst debian/*/DEBIAN/postrm
+ rm -f debian/*/DEBIAN/triggers
+ dh_builddeb
+
+# errors out with: objcopy: '.../binaries-missing-depends-on-xapi.debug': No such file
+override_dh_dwz:
diff --git a/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/fill-values
new file mode 100644
index 0000000..bf3682a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends-on-xapi
+Description: Test for missing perlapi depends
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/Makefile
new file mode 100644
index 0000000..5c9cbaf
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/Makefile
@@ -0,0 +1,16 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so basic.c
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/$(VENDORARCH)
+ install -m 644 -c -s libbasic.so $(DESTDIR)/$(VENDORARCH)/libbasic.so
+ install -d $(DESTDIR)/usr/lib/php5
+ install -m 644 -c -s libbasic.so $(DESTDIR)/usr/lib/php5/libbasic.so
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/basic.c b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/desc b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/desc
new file mode 100644
index 0000000..1f5f111
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends-on-xapi
+Check: binaries/prerequisites/php
diff --git a/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/hints b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/hints
new file mode 100644
index 0000000..0791fd8
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/php/binaries-missing-depends-on-xapi/eval/hints
@@ -0,0 +1 @@
+binaries-missing-depends-on-xapi (binary): missing-dependency-on-phpapi
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/install b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/install
new file mode 100644
index 0000000..c10e578
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/install
@@ -0,0 +1 @@
+foreign-binary usr/bin
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/rules b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/rules
new file mode 100755
index 0000000..2ce6f53
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ # do not try to strip cross-compiled binaries with native tooling
+
+override_dh_shlibdeps:
+ # do not try to include missing libraries
+
+override_dh_dwz:
+ # cross-compiled binaries do not always seem to have a debug section
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/fill-values b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/fill-values
new file mode 100644
index 0000000..24f607a
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: wrong-binary-architecture
+Description: Binary architecture does not match package declaration
+Package-Architecture: any
+Extra-Build-Depends:
+ gcc-arm-linux-gnueabihf [amd64 i386], gcc-x86-64-linux-gnu [!amd64 !i386]
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/Makefile b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/Makefile
new file mode 100644
index 0000000..bf92eaf
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/Makefile
@@ -0,0 +1,37 @@
+# This test works on amd64 when the cross-compiler for armhf is installed.
+#
+# The build prerequisite was not added to Lintian, however, since it was
+# not clear how the architecture would be enabled in the Gitlab CI
+# runner.
+#
+# On amd64 or i386, please follow these steps to run the test:
+#
+# dpkg --add-architecture armhf
+# apt update
+# apt install gcc-arm-linux-gnueabihf
+#
+# On all other architectures this may work, but was not tested:
+#
+# dpkg --add-architecture amd64
+# apt update
+# apt install gcc-x86-64-linux-gnu
+#
+# (Taken from: https://wiki.debian.org/CrossToolchains)
+
+ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq ($(ARCH),amd64)
+CC := arm-linux-gnueabihf-gcc
+else
+CC := x86_64-linux-gnu-gcc
+endif
+
+foreign-binary: hello.c
+ $(CC) $^ -o $@
+
+.PHONY: clean
+clean:
+ rm -f foreign-binary
+
+.PHONY: clean
+distclean: clean
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/hello.c b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/desc b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/desc
new file mode 100644
index 0000000..5c454dc
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/desc
@@ -0,0 +1,2 @@
+Testname: wrong-binary-architecture
+Check: binaries/prerequisites
diff --git a/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/hints b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/hints
new file mode 100644
index 0000000..d0ee0e7
--- /dev/null
+++ b/t/recipes/checks/binaries/prerequisites/wrong-binary-architecture/eval/hints
@@ -0,0 +1 @@
+wrong-binary-architecture (binary): undeclared-elf-prerequisites (libc.so.6) [usr/bin/foreign-binary]
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/build-spec/debian/rules b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/build-spec/fill-values b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/eval/desc b/t/recipes/checks/binaries/profiling/binaries-general/eval/desc
new file mode 100644
index 0000000..8bbea38
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: binaries/profiling
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/eval/hints b/t/recipes/checks/binaries/profiling/binaries-general/eval/hints
new file mode 100644
index 0000000..c85e300
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/eval/hints
@@ -0,0 +1 @@
+binaries-general (binary): binary-compiled-with-profiling-enabled [usr/share/foo/basic]
diff --git a/t/recipes/checks/binaries/profiling/binaries-general/eval/post-test b/t/recipes/checks/binaries/profiling/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/profiling/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/build-spec/debian/rules b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/build-spec/fill-values b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/eval/desc b/t/recipes/checks/binaries/rpath/binaries-general/eval/desc
new file mode 100644
index 0000000..6e7e185
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: binaries/rpath
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/eval/hints b/t/recipes/checks/binaries/rpath/binaries-general/eval/hints
new file mode 100644
index 0000000..367a9a3
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/eval/hints
@@ -0,0 +1,3 @@
+binaries-general (binary): custom-library-search-path RUNPATH /usr/share/foo [usr/lib/foo/basicshippedrpath]
+binaries-general (binary): custom-library-search-path RUNPATH /usr/local/lib [usr/share/foo/basic]
+binaries-general (binary): custom-library-search-path RUNPATH /usr/lib [usr/lib/foo/basiclibrpath]
diff --git a/t/recipes/checks/binaries/rpath/binaries-general/eval/post-test b/t/recipes/checks/binaries/rpath/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/rpath/quoted/build-spec/debian/rules b/t/recipes/checks/binaries/rpath/quoted/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/rpath/quoted/build-spec/fill-values b/t/recipes/checks/binaries/rpath/quoted/build-spec/fill-values
new file mode 100644
index 0000000..e5a7a3e
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: quoted
+Description: RPATH in double quotes
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/Makefile b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/Makefile
new file mode 100644
index 0000000..f2eed80
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,\"/usr/local/lib\"
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,\"/usr/lib\"
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,\"/usr/share/foo\"
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,\"/usr/lib/binaries-general\":\"/usr/lib/binaries-general/bar\"
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/basic.c b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/getbuildid b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/rpath/quoted/eval/desc b/t/recipes/checks/binaries/rpath/quoted/eval/desc
new file mode 100644
index 0000000..64ca820
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/eval/desc
@@ -0,0 +1,2 @@
+Testname: quoted
+Check: binaries/rpath
diff --git a/t/recipes/checks/binaries/rpath/quoted/eval/hints b/t/recipes/checks/binaries/rpath/quoted/eval/hints
new file mode 100644
index 0000000..074ceeb
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/eval/hints
@@ -0,0 +1,5 @@
+quoted (binary): relative-library-search-path RUNPATH "/usr/share/foo" [usr/lib/foo/basicshippedrpath]
+quoted (binary): relative-library-search-path RUNPATH "/usr/local/lib" [usr/share/foo/basic]
+quoted (binary): relative-library-search-path RUNPATH "/usr/lib/binaries-general/bar" [usr/lib/foo/basicshippedrpathmore]
+quoted (binary): relative-library-search-path RUNPATH "/usr/lib/binaries-general" [usr/lib/foo/basicshippedrpathmore]
+quoted (binary): relative-library-search-path RUNPATH "/usr/lib" [usr/lib/foo/basiclibrpath]
diff --git a/t/recipes/checks/binaries/rpath/quoted/eval/post-test b/t/recipes/checks/binaries/rpath/quoted/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/quoted/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/rpath/relative/build-spec/debian/rules b/t/recipes/checks/binaries/rpath/relative/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/rpath/relative/build-spec/fill-values b/t/recipes/checks/binaries/rpath/relative/build-spec/fill-values
new file mode 100644
index 0000000..9d8fdc2
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: relative
+Description: Relative RPATH
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/rpath/relative/build-spec/orig/Makefile b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/Makefile
new file mode 100644
index 0000000..b7758c6
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,usr/lib/binaries-general:usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/rpath/relative/build-spec/orig/basic.c b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/rpath/relative/build-spec/orig/getbuildid b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/rpath/relative/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/rpath/relative/eval/desc b/t/recipes/checks/binaries/rpath/relative/eval/desc
new file mode 100644
index 0000000..159b77a
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/eval/desc
@@ -0,0 +1,2 @@
+Testname: relative
+Check: binaries/rpath
diff --git a/t/recipes/checks/binaries/rpath/relative/eval/hints b/t/recipes/checks/binaries/rpath/relative/eval/hints
new file mode 100644
index 0000000..3151df2
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/eval/hints
@@ -0,0 +1,5 @@
+relative (binary): relative-library-search-path RUNPATH usr/share/foo [usr/lib/foo/basicshippedrpath]
+relative (binary): relative-library-search-path RUNPATH usr/local/lib [usr/share/foo/basic]
+relative (binary): relative-library-search-path RUNPATH usr/lib/binaries-general/bar [usr/lib/foo/basicshippedrpathmore]
+relative (binary): relative-library-search-path RUNPATH usr/lib/binaries-general [usr/lib/foo/basicshippedrpathmore]
+relative (binary): relative-library-search-path RUNPATH usr/lib [usr/lib/foo/basiclibrpath]
diff --git a/t/recipes/checks/binaries/rpath/relative/eval/post-test b/t/recipes/checks/binaries/rpath/relative/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/rpath/relative/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/fill-values b/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/fill-values
new file mode 100644
index 0000000..df21847
--- /dev/null
+++ b/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-spelling
+Description: Spelling errors in binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/Makefile b/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/Makefile
new file mode 100644
index 0000000..0c85616
--- /dev/null
+++ b/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/Makefile
@@ -0,0 +1,11 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o basic basic.c
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -m 755 -c basic $(DESTDIR)/usr/bin/basic
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/basic.c b/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/basic.c
new file mode 100644
index 0000000..2cec53e
--- /dev/null
+++ b/t/recipes/checks/binaries/spelling/binaries-spelling/build-spec/orig/basic.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+main(void)
+{
+ printf("I iz an exprimental speling error!\n");
+ printf("I also have teh broken teh!\n");
+ printf("But tEH non-broken tEh needs to be on its own line!\n");
+ printf("res.size is okay!\n"); /* #818003 */
+ printf("Georg Nees was early pioneer of computer art and generative graphics.\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/spelling/binaries-spelling/eval/desc b/t/recipes/checks/binaries/spelling/binaries-spelling/eval/desc
new file mode 100644
index 0000000..527386d
--- /dev/null
+++ b/t/recipes/checks/binaries/spelling/binaries-spelling/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-spelling
+Check: binaries/spelling
diff --git a/t/recipes/checks/binaries/spelling/binaries-spelling/eval/hints b/t/recipes/checks/binaries/spelling/binaries-spelling/eval/hints
new file mode 100644
index 0000000..49c0ea4
--- /dev/null
+++ b/t/recipes/checks/binaries/spelling/binaries-spelling/eval/hints
@@ -0,0 +1,3 @@
+binaries-spelling (binary): spelling-error-in-binary teh the [usr/bin/basic]
+binaries-spelling (binary): spelling-error-in-binary speling spelling [usr/bin/basic]
+binaries-spelling (binary): spelling-error-in-binary exprimental experimental [usr/bin/basic]
diff --git a/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/dumpobj b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/dumpobj
new file mode 100644
index 0000000..afdf68e
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/dumpobj
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+DEB_BUILD_GNU_TYPE="$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)"
+
+case $DEB_BUILD_GNU_TYPE in
+i486-linux-gnu|i586-linux-gnu|i686-linux-gnu|x86_64-linux-gnu)
+ base64 -d <<DATA
+f0VMRgEBAQAAAAAAAAAAAAIAKAABAAAAMIEAADQAAAA4bwkAAgAABDQAIAAGACgAGwAaAAEAAHDY
+WgkA2NoJANjaCQBQCgAAUAoAAAQAAAAEAAAAAQAAAAAAAAAAgAAAAIAAAKhlCQCoZQkABQAAAACA
+AAABAAAAqGUJAKhlCgCoZQoAIAgAAOwlAAAGAAAAAIAAAAQAAAD0AAAA9IAAAPSAAAAgAAAAIAAA
+AAQAAAAEAAAABwAAAKhlCQCoZQoAqGUKABgAAAAwAAAABAAAAAQAAABR5XRkAAAAAAAAAAAAAAAA
+AAAAAAAAAAAGAAAABAAAAAQAAAAQAAAAAQAAAEdOVQAAAAAAAgAAAAYAAAASAAAABOAt5QTQTeIR
+AADrBNCN4gTgneQe/y/hAAAAACTAn+UAsKDjBBCd5A0goOEEIC3lBAAt5RAAn+UQMJ/lBMAt5dwS
+DATA
+ ;;
+*)
+ base64 -d <<DATA
+f0VMRgEBMAAwMDAwMDAwMAIAAwABAAAA
+DATA
+ ;;
+esac
diff --git a/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/install b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/install
new file mode 100644
index 0000000..369fa72
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/install
@@ -0,0 +1,2 @@
+debian/elfobject usr/bin/
+debian/fake-guile-object.go usr/lib/foo/binaries-from-other-arch/guile/2.2/
diff --git a/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/rules b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/rules
new file mode 100755
index 0000000..60907d2
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+DEB_BUILD_OPTIONS := nostrip
+export DEB_BUILD_OPTIONS
+
+%:
+ dh $@
+
+binary:
+ sh debian/dumpobj > debian/elfobject
+ sh debian/dumpobj > debian/fake-guile-object.go
+ dh binary
diff --git a/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/fill-values b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/fill-values
new file mode 100644
index 0000000..d765ecd
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-from-other-arch/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-from-other-arch
+Package-Architecture: any
+Dh-Compat-Level: 10
+Description: Test package with a pseudo binary from a different architecture
+# since debhelper 12.5.2, objdump no longer fails silently for compat > 10, need better binary
diff --git a/t/recipes/checks/binaries/static/binaries-from-other-arch/eval/desc b/t/recipes/checks/binaries/static/binaries-from-other-arch/eval/desc
new file mode 100644
index 0000000..d599961
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-from-other-arch/eval/desc
@@ -0,0 +1,4 @@
+Testname: binaries-from-other-arch
+Test-Architectures: amd64 i386
+Check: binaries/static
+# since debhelper 12.5.2, objdump no longer fails silently for compat > 10, need better binary
diff --git a/t/recipes/checks/binaries/static/binaries-from-other-arch/eval/hints b/t/recipes/checks/binaries/static/binaries-from-other-arch/eval/hints
new file mode 100644
index 0000000..1de058b
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-from-other-arch/eval/hints
@@ -0,0 +1,2 @@
+binaries-from-other-arch (binary): statically-linked-binary [usr/lib/foo/binaries-from-other-arch/guile/2.2/fake-guile-object.go]
+binaries-from-other-arch (binary): statically-linked-binary [usr/bin/elfobject]
diff --git a/t/recipes/checks/binaries/static/binaries-general/build-spec/debian/rules b/t/recipes/checks/binaries/static/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/binaries/static/binaries-general/build-spec/fill-values b/t/recipes/checks/binaries/static/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/binaries/static/binaries-general/eval/desc b/t/recipes/checks/binaries/static/binaries-general/eval/desc
new file mode 100644
index 0000000..41f333c
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: binaries/static
diff --git a/t/recipes/checks/binaries/static/binaries-general/eval/hints b/t/recipes/checks/binaries/static/binaries-general/eval/hints
new file mode 100644
index 0000000..3e9929d
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/eval/hints
@@ -0,0 +1 @@
+binaries-general (binary): statically-linked-binary [usr/bin/static]
diff --git a/t/recipes/checks/binaries/static/binaries-general/eval/post-test b/t/recipes/checks/binaries/static/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/binaries/static/binaries-golang/build-spec/fill-values b/t/recipes/checks/binaries/static/binaries-golang/build-spec/fill-values
new file mode 100644
index 0000000..20669e9
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-golang/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-golang
+Extra-Build-Depends: golang-go (>= 2:1.1.1-4)
+Description: Misc errors related to golang binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile b/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile
new file mode 100644
index 0000000..f04b342
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile
@@ -0,0 +1,16 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o basic.static basic.c
+
+install:
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -m 755 basic.static $(DESTDIR)/usr/lib/foo/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/basic.c b/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/binaries/static/binaries-golang/eval/desc b/t/recipes/checks/binaries/static/binaries-golang/eval/desc
new file mode 100644
index 0000000..97800d6
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-golang/eval/desc
@@ -0,0 +1,3 @@
+Testname: binaries-golang
+Test-Against: statically-linked-binary
+Check: binaries/static
diff --git a/t/recipes/checks/binaries/static/binaries-golang/eval/hints b/t/recipes/checks/binaries/static/binaries-golang/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/binaries/static/binaries-golang/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/control b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/rules b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/templates b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/fill-values b/t/recipes/checks/binaries/static/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/static/legacy-binary/eval/desc b/t/recipes/checks/binaries/static/legacy-binary/eval/desc
new file mode 100644
index 0000000..cadb9b2
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: binaries/static
diff --git a/t/recipes/checks/binaries/static/legacy-binary/eval/hints b/t/recipes/checks/binaries/static/legacy-binary/eval/hints
new file mode 100644
index 0000000..6f29ed7
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): statically-linked-binary [usr/bin/static-hello]
diff --git a/t/recipes/checks/binaries/static/legacy-binary/eval/post-test b/t/recipes/checks/binaries/static/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/control b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/rules b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/fill-values b/t/recipes/checks/binaries/static/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..79eebf1
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/binaries/static/legacy-debug/eval/desc b/t/recipes/checks/binaries/static/legacy-debug/eval/desc
new file mode 100644
index 0000000..2ec70bd
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debug
+Check: binaries/static
diff --git a/t/recipes/checks/binaries/static/legacy-debug/eval/hints b/t/recipes/checks/binaries/static/legacy-debug/eval/hints
new file mode 100644
index 0000000..0e446ad
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/eval/hints
@@ -0,0 +1 @@
+hello (binary): statically-linked-binary [usr/bin/hello.dbg]
diff --git a/t/recipes/checks/binaries/static/legacy-debug/eval/post-test b/t/recipes/checks/binaries/static/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/binaries/static/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/build-systems/automake/automake-general/build-spec/fill-values b/t/recipes/checks/build-systems/automake/automake-general/build-spec/fill-values
new file mode 100644
index 0000000..5752e5e
--- /dev/null
+++ b/t/recipes/checks/build-systems/automake/automake-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: automake-general
+Description: Test if the package uses the deprecated configure.in for automake
diff --git a/t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/Makefile.am b/t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/Makefile.am
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/Makefile.am
diff --git a/t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/configure.in b/t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/configure.in
new file mode 100644
index 0000000..575a30d
--- /dev/null
+++ b/t/recipes/checks/build-systems/automake/automake-general/build-spec/orig/configure.in
@@ -0,0 +1 @@
+AC_INIT
diff --git a/t/recipes/checks/build-systems/automake/automake-general/eval/desc b/t/recipes/checks/build-systems/automake/automake-general/eval/desc
new file mode 100644
index 0000000..1ff6707
--- /dev/null
+++ b/t/recipes/checks/build-systems/automake/automake-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: automake-general
+Check: build-systems/automake
diff --git a/t/recipes/checks/build-systems/automake/automake-general/eval/hints b/t/recipes/checks/build-systems/automake/automake-general/eval/hints
new file mode 100644
index 0000000..4d3dfa6
--- /dev/null
+++ b/t/recipes/checks/build-systems/automake/automake-general/eval/hints
@@ -0,0 +1 @@
+automake-general (source): deprecated-configure-filename [configure.in]
diff --git a/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/fill-values
new file mode 100644
index 0000000..b153334
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: cruft-general-test-suite
+Skeleton: upload-non-native
+Description: Check that cruft in test suites is okay
diff --git a/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/orig/hello.c b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/orig/hello.c
new file mode 100644
index 0000000..1b47b80
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ printf("Hello world!\n");
+ return 0;
+}
diff --git a/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/pre-upstream b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/pre-upstream
new file mode 100755
index 0000000..8665c92
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/build-spec/pre-upstream
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist upstream. We do much of it
+# here rather than in the template so that Lintian itself can be imported into
+# revision control systems.
+
+set -e
+dir="$1"
+
+mkdir -p "${dir}/t/CVS"
+echo 'source-contains-cvs-control-dir' > "${dir}/t/CVS/Entries"
+mkdir -p "${dir}/foo/t/.svn"
+echo 'source-contains-svn-control-dir' > "${dir}/foo/t/.svn/format"
+mkdir -p "${dir}/test/.bzr"
+echo 'source-contains-bzr-control-dir' > "${dir}/test/.bzr/foo"
+mkdir -p "${dir}/bar/test/{arch}"
+echo 'source-contains-arch-control-dir' > "${dir}/bar/test/{arch}/foo"
+mkdir -p "${dir}/tests/.git"
+echo 'source-contains-git-control-dir' > "${dir}/tests/.git/foo"
+mkdir -p "${dir}/baz/foo/tests/.hg"
+echo 'source-contains-hg-control-dir' > "${dir}/baz/foo/tests/.hg/foo"
+mkdir -p "${dir}/testset/.be"
+echo 'source-contains-bts-control-dir' > "${dir}/testset/.be/foo"
+
+echo 'source-contains-svn-commit-file' > "${dir}/t/svn-commit.tmp"
+echo 'source-contains-svk-commit-file' > "${dir}/t/svk-commit444.tmp"
+echo 'source-contains-arch-inventory-file' > "${dir}/t/.arch-inventory"
+echo 'source-contains-hg-tags-file' > "${dir}/t/.hgtags"
+echo 'source-contains-cvs-conflict-copy' > "${dir}/t/.#foo.1.1"
+echo 'source-contains-svn-conflict-file' > "${dir}/t/foo.r1352"
+
+echo 'configure-generated-file-in-source' > "${dir}/tests/config.cache"
+
+cd "$1"
+gcc -o t/hello hello.c
diff --git a/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/desc b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/desc
new file mode 100644
index 0000000..2da240a
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-general-test-suite
+Test-Against:
+ configure-generated-file-in-source
+Check: build-systems/autotools
diff --git a/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/hints b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/hints
new file mode 100644
index 0000000..5f7a858
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/cruft-general-test-suite/eval/hints
@@ -0,0 +1 @@
+cruft-general-test-suite (source): configure-generated-file-in-source [tests/config.cache]
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/fill-values
new file mode 100644
index 0000000..b6419d2
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-ancient-libtool-2
+Description: Test that an old (1.5.2) ltmain.sh is detected correctly
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/orig/ltmain.sh b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/orig/ltmain.sh
new file mode 100644
index 0000000..662c6f0
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/build-spec/orig/ltmain.sh
@@ -0,0 +1,62 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# define SED for historic ltconfig's generated by Libtool 1.3
+test -z "$SED" && SED=sed
+
+# The name of this program.
+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.2
+TIMESTAMP=" (1.1220.2.60 2004/01/25 12:25:08)"
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/desc b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/desc
new file mode 100644
index 0000000..3d83282
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-ancient-libtool-2
+See-Also: Debian Bug#293296
+Check: build-systems/autotools/libtool
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/hints b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/hints
new file mode 100644
index 0000000..1cc1820
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool-2/eval/hints
@@ -0,0 +1 @@
+cruft-ancient-libtool-2 (source): ancient-libtool 1.5.2 [ltmain.sh]
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/fill-values
new file mode 100644
index 0000000..73ae4f6
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-ancient-libtool
+Description: Test that a very old ltmain.sh/ltconfig is detected correctly
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltconfig b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltconfig
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltconfig
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltmain.sh b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltmain.sh
new file mode 100644
index 0000000..c7b800b
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/build-spec/orig/ltmain.sh
@@ -0,0 +1,59 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+#
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.3.5
+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/desc b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/desc
new file mode 100644
index 0000000..b7444e3
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-ancient-libtool
+See-Also: Debian Bug#293296
+Check: build-systems/autotools/libtool
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/hints b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/hints
new file mode 100644
index 0000000..c81096c
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-ancient-libtool/eval/hints
@@ -0,0 +1,2 @@
+cruft-ancient-libtool (source): ancient-libtool [ltconfig]
+cruft-ancient-libtool (source): ancient-libtool 1.3.5 [ltmain.sh]
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/fill-values
new file mode 100644
index 0000000..25f81aa
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-current-libtool
+Description: Test that a current ltmain.sh is detected correctly
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/orig/ltmain.sh b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/orig/ltmain.sh
new file mode 100644
index 0000000..c5f7e11
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/build-spec/orig/ltmain.sh
@@ -0,0 +1,48 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION="1.5.24 Debian 1.5.24-1ubuntu1"
+TIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)"
+
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/desc b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/desc
new file mode 100644
index 0000000..1d949a7
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-current-libtool
+Test-Against: ancient-libtool
+See-Also: Debian Bug#293296
+Check: build-systems/autotools/libtool
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/hints b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-current-libtool/eval/hints
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/fill-values
new file mode 100644
index 0000000..7040ad7
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-updated-libtool
+Extra-Build-Depends: libtool
+Description: Old ltmain.sh/ltconfig is fine with build-depend
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltconfig b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltconfig
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltconfig
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltmain.sh b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltmain.sh
new file mode 100644
index 0000000..c7b800b
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/build-spec/orig/ltmain.sh
@@ -0,0 +1,59 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+#
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.3.5
+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/desc b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/desc
new file mode 100644
index 0000000..8361e6e
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-updated-libtool
+Test-Against: ancient-libtool
+See-Also: Debian Bug#534134
+Check: build-systems/autotools/libtool
diff --git a/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/hints b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/libtool/cruft-updated-libtool/eval/hints
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/fill-values
new file mode 100644
index 0000000..17ea1fd
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: macro-not-cross-compilation-safe-old-filename
+Description: Check for packages that look for pkg-config incorrectly
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/configure.in b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/configure.in
new file mode 100644
index 0000000..22ab789
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/configure.in
@@ -0,0 +1,5 @@
+AC_INIT
+
+AC_PATH_PROG(PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
+
+ dnl AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/src/configure.in b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/src/configure.in
new file mode 100644
index 0000000..eeb7274
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/build-spec/orig/src/configure.in
@@ -0,0 +1 @@
+AC_PATH_PROG(PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/desc b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/desc
new file mode 100644
index 0000000..da64458
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/desc
@@ -0,0 +1,2 @@
+Testname: macro-not-cross-compilation-safe-old-filename
+Check: build-systems/autotools
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/hints b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/hints
new file mode 100644
index 0000000..8e6791b
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe-old-filename/eval/hints
@@ -0,0 +1,2 @@
+macro-not-cross-compilation-safe-old-filename (source): autotools-pkg-config-macro-not-cross-compilation-safe AC_PATH_PROG [src/configure.in:1]
+macro-not-cross-compilation-safe-old-filename (source): autotools-pkg-config-macro-not-cross-compilation-safe AC_PATH_PROG [configure.in:3]
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/fill-values b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/fill-values
new file mode 100644
index 0000000..c13e4d5
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: macro-not-cross-compilation-safe
+Description: Check for packages that look for pkg-config incorrectly
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/configure.ac b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/configure.ac
new file mode 100644
index 0000000..4e448c8
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/configure.ac
@@ -0,0 +1,5 @@
+AC_INIT
+
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+dnl AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/src/configure.ac b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/src/configure.ac
new file mode 100644
index 0000000..0250f9b
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/build-spec/orig/src/configure.ac
@@ -0,0 +1 @@
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/desc b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/desc
new file mode 100644
index 0000000..c4022ba
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/desc
@@ -0,0 +1,2 @@
+Testname: macro-not-cross-compilation-safe
+Check: build-systems/autotools
diff --git a/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/hints b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/hints
new file mode 100644
index 0000000..caf4c75
--- /dev/null
+++ b/t/recipes/checks/build-systems/autotools/macro-not-cross-compilation-safe/eval/hints
@@ -0,0 +1,2 @@
+macro-not-cross-compilation-safe (source): autotools-pkg-config-macro-not-cross-compilation-safe AC_PATH_PROG [src/configure.ac:1]
+macro-not-cross-compilation-safe (source): autotools-pkg-config-macro-not-cross-compilation-safe AC_PATH_PROG [configure.ac:3]
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/rules b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/somepackage.substvars b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/somepackage.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/somepackage.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/substvars b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/fill-values b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/fill-values
new file mode 100644
index 0000000..c6798f7
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-diff
+Skeleton: upload-non-native
+Source-Format: 1.0
+Description: Check for cruft added in the diff
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/pre-build b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/pre-build
new file mode 100755
index 0000000..537b323
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/build-spec/pre-build
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+mkdir "${dir}/.pc"
+echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/desc b/t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/desc
new file mode 100644
index 0000000..da239ce
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-general-diff
+See-Also: Debian Bug#598251
+Check: build-systems/cmake
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/hints b/t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/hints
new file mode 100644
index 0000000..483fd14
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-diff/eval/hints
@@ -0,0 +1 @@
+cruft-general-diff (source): source-contains-cmake-cache-file [CMakeCache.txt]
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/rules b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/substvars b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/fill-values b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/fill-values
new file mode 100644
index 0000000..8460259
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-general-native
+Description: Check for cruft in a native package
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/pre-build b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/pre-build
new file mode 100755
index 0000000..c594074
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-native/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-native/eval/desc b/t/recipes/checks/build-systems/cmake/cruft-general-native/eval/desc
new file mode 100644
index 0000000..b61ccf2
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-native
+Check: build-systems/cmake
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-native/eval/hints b/t/recipes/checks/build-systems/cmake/cruft-general-native/eval/hints
new file mode 100644
index 0000000..352bbe8
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-native/eval/hints
@@ -0,0 +1 @@
+cruft-general-native (source): source-contains-cmake-cache-file [CMakeCache.txt]
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/README.source b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/README.source
new file mode 100644
index 0000000..0bbaa60
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some information about the patch system
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/rules b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/somepackage.substvars b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/somepackage.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/somepackage.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/substvars b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/fill-values b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/fill-values
new file mode 100644
index 0000000..01bda9c
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-quilt
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Check for cruft added in a 3.0 (quilt) package
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/pre-build b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/pre-build
new file mode 100755
index 0000000..53e0ddd
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/build-spec/pre-build
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+mkdir "${dir}/.pc"
+echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/desc b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/desc
new file mode 100644
index 0000000..609f223
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-general-quilt
+See-Also: Debian Bug#598251
+Check: build-systems/cmake
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/hints b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/hints
new file mode 100644
index 0000000..f47e7ff
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-quilt/eval/hints
@@ -0,0 +1 @@
+cruft-general-quilt (source): source-contains-cmake-cache-file [debian/CMakeCache.txt]
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/patches/wig-pen b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
new file mode 100644
index 0000000..a452b53
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
@@ -0,0 +1,5 @@
+--- upstream/README
++++ debian/README
+@@ -1 +1 @@
+-README
++README for wig&pen
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/rules b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/substvars b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/fill-values b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/fill-values
new file mode 100644
index 0000000..edb39d9
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-wig-pen
+Skeleton: upload-non-native
+Source-Format: 2.0
+Description: Check for cruft added in a 2.0 package
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/orig/README b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/pre-build b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/pre-build
new file mode 100755
index 0000000..78f359c
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/desc b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/desc
new file mode 100644
index 0000000..e0df7ff
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-wig-pen
+Check: build-systems/cmake
diff --git a/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/hints b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/hints
new file mode 100644
index 0000000..00b6c07
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/cruft-general-wig-pen/eval/hints
@@ -0,0 +1 @@
+cruft-general-wig-pen (source): source-contains-cmake-cache-file [debian/CMakeCache.txt]
diff --git a/t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/debian/rules b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/debian/rules
new file mode 100644
index 0000000..8e0b207
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/debian/rules
@@ -0,0 +1,71 @@
+#!/usr/bin/make -f
+
+PKG :=$(shell dh_listpackages)
+SHARE:= debian/$(PKG)/usr/share
+DATA := $(SHARE)/$(PKG)
+DOC := $(SHARE)/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DOC) $(DATA)
+
+ # Vcs stuff
+ mkdir $(DATA)/.svn $(DATA)/.git
+ touch $(DATA)/.svn/file
+ touch $(DATA)/.git/file
+ touch $(DATA)/.gitignore
+ touch $(DATA)/.git_ignore
+ mkdir $(DATA)/sub-git1/
+ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz
+ touch $(DATA)/sub-git1/.gitattributes
+ touch $(DATA)/sub-git1/.gitmodules
+
+ touch $(DATA)/svn-commit-yeehaa.tmp
+ touch $(DATA)/svk-commit-yeehaa.tmp
+
+ # bts control dir
+ mkdir $(DATA)/.be
+ touch $(DATA)/.be/file
+
+ # macos stuff
+ touch $(DATA)/.DS_Store
+ touch $(DATA)/._stuff
+
+ # windows
+ touch $(DATA)/Thumbs.db
+
+ # Foreign READMEs
+ echo "Hallo World Mac" > $(DOC)/README.mac
+ echo "Hallo World Win" > $(DOC)/README.windows
+
+ # Linda override
+ mkdir -p $(SHARE)/linda/overrides
+ touch $(SHARE)/linda/overrides/$(PKG)
+
+ # CMake private files
+ mkdir -p $(SHARE)/cmake-3.1/Modules
+ touch $(SHARE)/cmake-3.1/FindFoo.cmake
+ touch $(SHARE)/cmake-3.1/Modules/FindVar.cmake
+
+ # Ignored Cargo sources
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/.gitignore
+ touch $(SHARE)/cargo/registry/crate-1.0.0/LICENSE
+ touch $(SHARE)/cargo/registry/crate-1.0.0/templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/foo_templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/foo_templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d
+ touch $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d/readme.tmpl
+ echo '#!/bin/sh' > $(SHARE)/cargo/registry/crate-1.0.0/test.sh
+
+ # Documentation outside /usr/share/doc
+ touch $(DATA)/readme.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme_1.1.txt
+ touch $(DATA)/readme-1.1.txt
+ touch $(DATA)/readmefirst.txt
+ touch $(DATA)/readMesh_off.m # False-positive from #914500
diff --git a/t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/fill-values b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/fill-values
new file mode 100644
index 0000000..b55ed53
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-package-contains-foo
+Description: Test tags about cruft in binary packages
diff --git a/t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/desc b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/desc
new file mode 100644
index 0000000..e0da977
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-foo
+Check: build-systems/cmake
diff --git a/t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/hints b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/hints
new file mode 100644
index 0000000..92de498
--- /dev/null
+++ b/t/recipes/checks/build-systems/cmake/files-package-contains-foo/eval/hints
@@ -0,0 +1,2 @@
+files-package-contains-foo (binary): package-contains-cmake-private-file [usr/share/cmake-3.1/Modules/FindVar.cmake]
+files-package-contains-foo (binary): package-contains-cmake-private-file [usr/share/cmake-3.1/FindFoo.cmake]
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..ef39375
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: python3 (>= 3.1), python3 (<< 3.2), dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..dc6b7d5
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,111 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 py3.Xfoo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3.Xfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 py3foo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3foo $(tmp)/usr/share/doc/scripts/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/fill-values b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3.Xfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3.Xfoo
new file mode 100755
index 0000000..7f105e6
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3.Xfoo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3.7
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3foo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3foo
new file mode 100755
index 0000000..02b0444
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/py3foo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/pre-build b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/desc b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/desc
new file mode 100644
index 0000000..1072404
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: build-systems/debhelper/maintainer-script/token
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/hints b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/hints
new file mode 100644
index 0000000..9fe82fb
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): maintainer-script-has-unexpanded-debhelper-token #DEBHELPER# [preinst:13]
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/post-test b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/desc b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..09af74a
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+Check: build-systems/debhelper/maintainer-script/token
+See-Also:
+ Bug#532984
diff --git a/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/hints b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..bdf2623
--- /dev/null
+++ b/t/recipes/checks/build-systems/debhelper/maintainer-script/token/scripts-maintainer-general/eval/hints
@@ -0,0 +1 @@
+scripts-maintainer-general (binary): maintainer-script-has-unexpanded-debhelper-token #DEBHELPER# [postinst:259]
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/install b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/install
new file mode 100644
index 0000000..fdf1d81
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/install
@@ -0,0 +1,4 @@
+dependency_libs.la usr/lib
+kio_locate.la usr/lib/kde3
+trailing-slash.la usr/lib/lintian
+_python_module.la usr/share/pyshared
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/links b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/links
new file mode 100644
index 0000000..c34baaf
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/debian/links
@@ -0,0 +1 @@
+var/lib/kde3/kio_locate.la var/lib/kde3/foo.la
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/fill-values b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/fill-values
new file mode 100644
index 0000000..44b70c6
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: shared-libs-la-files
+Description: Test checks related to libtool .la files
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/Makefile b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/Makefile
new file mode 100644
index 0000000..b490041
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/Makefile
@@ -0,0 +1,9 @@
+LA_FILES:=kio_locate.la _python_module.la trailing-slash.la dependency_libs.la
+
+%.la: %.txt
+ cp "$<" "$@"
+
+all: $(LA_FILES)
+
+clean:
+ rm -f $(LA_FILES)
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/_python_module.txt b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/_python_module.txt
new file mode 100644
index 0000000..6b425c0
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/_python_module.txt
@@ -0,0 +1,12 @@
+dlname='_python_module.so'
+library_names='_python_module.so'
+old_library=''
+dependency_libs=''
+current=0
+age=0
+revision=0
+installed=yes
+shouldnotlink=no
+dlopen=''
+dlpreopen=''
+libdir='/usr/lib/python2.5/site-packages'
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/dependency_libs.txt b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/dependency_libs.txt
new file mode 100644
index 0000000..34b0863
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/dependency_libs.txt
@@ -0,0 +1,15 @@
+# Generated by ltmain.sh - GNU libtool 1.5.18 - (pwn3d by bksys)
+#
+#
+dlname='dependency_libs.so'
+library_names='dependency_libs.so'
+old_library=''
+dependency_libs='/usr/lib/libdep.la'
+current=0
+age=0
+revision=0
+installed=yes
+shouldnotlink=no
+dlopen=''
+dlpreopen=''
+libdir='/usr/lib'
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/kio_locate.txt b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/kio_locate.txt
new file mode 100644
index 0000000..4391635
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/kio_locate.txt
@@ -0,0 +1,15 @@
+# Generated by ltmain.sh - GNU libtool 1.5.18 - (pwn3d by bksys)
+#
+#
+dlname='kio_locate.so'
+library_names='kio_locate.so kio_locate.so kio_locate.so'
+old_library=''
+dependency_libs=''
+current=0
+age=0
+revision=0
+installed=yes
+shouldnotlink=no
+dlopen=''
+dlpreopen=''
+libdir='/build/buildd/kio-locate-0.4.5+ds/debian/kio-locate/usr/lib/kde3' \ No newline at end of file
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/trailing-slash.txt b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/trailing-slash.txt
new file mode 100644
index 0000000..736610e
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/build-spec/orig/trailing-slash.txt
@@ -0,0 +1,12 @@
+dlname='trailing-slash.so'
+library_names='trailing-slash.so'
+old_library=''
+dependency_libs=''
+current=0
+age=0
+revision=0
+installed=yes
+shouldnotlink=no
+dlopen=''
+dlpreopen=''
+libdir='/usr/lib/lintian/'
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/desc b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/desc
new file mode 100644
index 0000000..280c5ed
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-la-files
+Check: build-systems/libtool/la-file
diff --git a/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/hints b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/hints
new file mode 100644
index 0000000..cf80cd0
--- /dev/null
+++ b/t/recipes/checks/build-systems/libtool/la-file/shared-libs-la-files/eval/hints
@@ -0,0 +1,2 @@
+shared-libs-la-files (binary): non-empty-dependency_libs-in-la-file /usr/lib/libdep.la [usr/lib/dependency_libs.la:7]
+shared-libs-la-files (binary): incorrect-libdir-in-la-file build/buildd/kio-locate-0.4.5+ds/debian/kio-locate/usr/lib/kde3/ != usr/lib/kde3/ [usr/lib/kde3/kio_locate.la:15]
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/fill-values b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/fill-values
new file mode 100644
index 0000000..b25f0cb
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: cruft-contains-waf-stripped
+Skeleton: upload-non-native
+Description: Check for sources with waf
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/orig/waf b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/orig/waf
new file mode 100644
index 0000000..1f95f10
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/build-spec/orig/waf
@@ -0,0 +1,15 @@
+#!/usr/bin/python3
+# encoding: ISO-8859-1
+#
+
+# We just do a little python... for the show
+
+import os, sys
+if sys.hexversion<0x203000f: raise ImportError("Waf requires python >= 2.3")
+ # and we are pretending to be a waf script
+
+# okay, that's enough...
+
+#==>
+# Here one would expect to find a tar.bz2 file...
+#<==
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/desc b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/desc
new file mode 100644
index 0000000..7cd19ad
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-contains-waf-stripped
+Test-Against: source-contains-waf-binary
+Check: build-systems/waf
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/hints b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf-stripped/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/fill-values b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/fill-values
new file mode 100644
index 0000000..772b2f0
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: cruft-contains-waf
+Skeleton: upload-non-native
+Description: Check for sources with waf
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/some-source.c b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/some-source.c
new file mode 100644
index 0000000..6691108
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/some-source.c
@@ -0,0 +1,5 @@
+int fun(int a) {
+ /* There is a valid use for this... probably */
+ return (a * a) >> a;
+}
+
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/waf.in b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/waf.in
new file mode 100644
index 0000000..4fc0412
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/orig/waf.in
@@ -0,0 +1,13 @@
+#!/usr/bin/python3
+# encoding: ISO-8859-1
+#
+
+# We just do a little python... for the show
+
+import os, sys
+if sys.hexversion<0x203000f: raise ImportError("Waf requires python >= 2.3")
+ # and we are pretending to be a waf script
+
+# okay, that's enough... below we will include a binary tarball...
+# That is as fun as it sounds (which is to say not a lot).
+
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/pre-upstream b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/pre-upstream
new file mode 100755
index 0000000..12db812
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf/build-spec/pre-upstream
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Time to create a waf binary...
+
+set -e
+
+dir="$1"
+
+cd "$dir"
+
+tar cjf waf-bin.tar.bz2 some-source.c
+cp waf.in waf
+echo "#==>" >> waf
+echo -n "#" >> waf
+perl -pe 's,\n,\#\*,go; s,\r,\#\%,go;' waf-bin.tar.bz2 >> waf
+echo >> waf
+echo "#<==" >> waf
+rm waf-bin.tar.bz2
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/desc b/t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/desc
new file mode 100644
index 0000000..2a6e758
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-contains-waf
+Check: build-systems/waf
diff --git a/t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/hints b/t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/hints
new file mode 100644
index 0000000..4ae22a2
--- /dev/null
+++ b/t/recipes/checks/build-systems/waf/cruft-contains-waf/eval/hints
@@ -0,0 +1 @@
+cruft-contains-waf (source): source-contains-waf-binary [waf]
diff --git a/t/recipes/checks/changes-file/changed-by-localhost/eval/hints b/t/recipes/checks/changes-file/changed-by-localhost/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changed-by-localhost/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changed-by-malformed/eval/hints b/t/recipes/checks/changes-file/changed-by-malformed/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changed-by-malformed/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changed-by-no-name/eval/hints b/t/recipes/checks/changes-file/changed-by-no-name/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changed-by-no-name/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changed-by-root-email/eval/hints b/t/recipes/checks/changes-file/changed-by-root-email/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changed-by-root-email/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changed-by-root/eval/hints b/t/recipes/checks/changes-file/changed-by-root/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changed-by-root/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-bad-ubuntu-distribution/eval/hints b/t/recipes/checks/changes-file/changes-bad-ubuntu-distribution/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-bad-ubuntu-distribution/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-distribution-mismatch/eval/hints b/t/recipes/checks/changes-file/changes-distribution-mismatch/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-distribution-mismatch/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-experimental-mismatch/eval/hints b/t/recipes/checks/changes-file/changes-experimental-mismatch/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-experimental-mismatch/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/fill-values b/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/fill-values
new file mode 100644
index 0000000..ecce948
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-file-bad-section
+Description: Test for bad section in changes file
diff --git a/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/referenced-files/__some-file__ b/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/referenced-files/__some-file__
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/referenced-files/__some-file__
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/test.changes.in b/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/test.changes.in
new file mode 100644
index 0000000..721e067
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-bad-section/build-spec/test.changes.in
@@ -0,0 +1,18 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Files:
+ 8de2b87704ef0a11144b57d243db88ec 12 non-free optional __some-file__
+Checksums-Sha1:
+ c54c65218154f15c32ca252946786e0ad09aa99b 12 __some-file__
+Checksums-Sha256:
+ e6c1396639c0b79bebc94e4448cfe2700b871d45d0d38d98df6ee9da3f09d35c 12 __some-file__
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/changes-file/changes-file-bad-section/eval/desc b/t/recipes/checks/changes-file/changes-file-bad-section/eval/desc
new file mode 100644
index 0000000..50b8d02
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-bad-section/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-file-bad-section
+Check: changes-file
diff --git a/t/recipes/checks/changes-file/changes-file-bad-section/eval/hints b/t/recipes/checks/changes-file/changes-file-bad-section/eval/hints
new file mode 100644
index 0000000..bb1591b
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-bad-section/eval/hints
@@ -0,0 +1 @@
+changes-file-bad-section (changes): bad-section-in-changes-file __some-file__ non-free
diff --git a/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/fill-values b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..74f84be
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-file-size-checksum-mismatch
+Description: Test for file size and checksums check
diff --git a/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__ b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/test.changes.in b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/test.changes.in
new file mode 100644
index 0000000..c61138b
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/build-spec/test.changes.in
@@ -0,0 +1,18 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Files:
+ d41d8cd98f00b204e9800998ecf8427e 0 devel optional __some-file__
+Checksums-Sha1:
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 __some-file__
+Checksums-Sha256:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 __some-file__
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/desc b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/desc
new file mode 100644
index 0000000..0a4c5d0
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-file-size-checksum-mismatch
+Check: changes-file
diff --git a/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/hints b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/hints
new file mode 100644
index 0000000..f614fbe
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-file-size-checksum-mismatch/eval/hints
@@ -0,0 +1,4 @@
+changes-file-size-checksum-mismatch (changes): file-size-mismatch-in-changes-file __some-file__ 0 != 12
+changes-file-size-checksum-mismatch (changes): checksum-mismatch-in-changes-file Checksum-Sha256 __some-file__
+changes-file-size-checksum-mismatch (changes): checksum-mismatch-in-changes-file Checksum-Sha1 __some-file__
+changes-file-size-checksum-mismatch (changes): checksum-mismatch-in-changes-file Checksum-Md5 __some-file__
diff --git a/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
new file mode 100644
index 0000000..0312410
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
@@ -0,0 +1,36 @@
+Source: [% $source %]
+Section: [% $section %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbg package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbgsym package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ even be an empty package.
diff --git a/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
new file mode 100644
index 0000000..4d83180
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Package-Architecture: any
+Description: Package builds -dbg and -dbgsym
diff --git a/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
new file mode 100644
index 0000000..5f66600
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Check: changes-file
diff --git a/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
new file mode 100644
index 0000000..3a2ae57
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
@@ -0,0 +1 @@
+changes-files-package-builds-dbg-and-dbgsym-variants (changes): package-builds-dbg-and-dbgsym-variants changes-files-package-builds-dbg-and-dbgsym-variants-dbg changes-files-package-builds-dbg-and-dbgsym-variants-dbgsym
diff --git a/t/recipes/checks/changes-file/changes-missing-fields/eval/hints b/t/recipes/checks/changes-file/changes-missing-fields/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-missing-fields/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-missing-format/eval/hints b/t/recipes/checks/changes-file/changes-missing-format/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-missing-format/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-unreleased/eval/hints b/t/recipes/checks/changes-file/changes-unreleased/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-unreleased/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/changes-upload-has-backports-version-number/eval/hints b/t/recipes/checks/changes-file/changes-upload-has-backports-version-number/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/changes-upload-has-backports-version-number/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/fill-values b/t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..3fe5f1f
--- /dev/null
+++ b/t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: checksum-count-mismatch
+Skeleton: upload-native
+Description: Check for changes file with missing checksum entry
diff --git a/t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/post-build.in b/t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/post-build.in
new file mode 100755
index 0000000..4665a7a
--- /dev/null
+++ b/t/recipes/checks/changes-file/checksum-count-mismatch/build-spec/post-build.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+perl -0777 -pi -e 's/(\nChecksums-Sha256:\n)[^\n]*\n/$1/' [% $build_product %]
diff --git a/t/recipes/checks/changes-file/checksum-count-mismatch/eval/desc b/t/recipes/checks/changes-file/checksum-count-mismatch/eval/desc
new file mode 100644
index 0000000..5866afe
--- /dev/null
+++ b/t/recipes/checks/changes-file/checksum-count-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: checksum-count-mismatch
+Check: changes-file
diff --git a/t/recipes/checks/changes-file/checksum-count-mismatch/eval/hints b/t/recipes/checks/changes-file/checksum-count-mismatch/eval/hints
new file mode 100644
index 0000000..b493656
--- /dev/null
+++ b/t/recipes/checks/changes-file/checksum-count-mismatch/eval/hints
@@ -0,0 +1 @@
+checksum-count-mismatch (changes): checksum-count-mismatch-in-changes-file 3 Checksum-Sha256 checksums != 4 files
diff --git a/t/recipes/checks/changes-file/distribution-multiple-bad/eval/hints b/t/recipes/checks/changes-file/distribution-multiple-bad/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/distribution-multiple-bad/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/generic-empty/eval/hints b/t/recipes/checks/changes-file/generic-empty/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/generic-empty/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/changes-file/legacy-foo++/eval/hints b/t/recipes/checks/changes-file/legacy-foo++/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/changes-file/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/conffiles b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/conffiles
new file mode 100644
index 0000000..bcbd369
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/conffiles
@@ -0,0 +1 @@
+remove-on-upgrade /etc/some.config
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/install b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/install
new file mode 100644
index 0000000..ee19d5d
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/install
@@ -0,0 +1 @@
+etc
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/rules b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/rules
new file mode 100755
index 0000000..c8e5e69
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+pkg=conffile-removed-but-present
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ mkdir -p debian/$(pkg)/DEBIAN
+ cp debian/conffiles debian/$(pkg)/DEBIAN
+ dpkg-deb --nocheck --build debian/$(pkg) ../$(pkg)_1.0-1_all.deb
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/fill-values b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/fill-values
new file mode 100644
index 0000000..46ce4f3
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: conffile-removed-but-present
+Package-Architecture: all
+Description: Instruction 'remove-on-upgrade' in DEBIAN/conffiles but file shipped
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/orig/etc/some.config b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/orig/etc/some.config
new file mode 100644
index 0000000..75e946e
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/build-spec/orig/etc/some.config
@@ -0,0 +1 @@
+A CONFIGURATION.
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/eval/desc b/t/recipes/checks/conffiles/conffile-removed-but-present/eval/desc
new file mode 100644
index 0000000..41d0905
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/eval/desc
@@ -0,0 +1,2 @@
+Testname: conffile-removed-but-present
+Check: conffiles
diff --git a/t/recipes/checks/conffiles/conffile-removed-but-present/eval/hints b/t/recipes/checks/conffiles/conffile-removed-but-present/eval/hints
new file mode 100644
index 0000000..5b746d6
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffile-removed-but-present/eval/hints
@@ -0,0 +1 @@
+conffile-removed-but-present (binary): unexpected-conffile etc/some.config [conffiles:1]
diff --git a/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/install b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/install
new file mode 100644
index 0000000..ec665e8
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/install
@@ -0,0 +1 @@
+something.conf etc/
diff --git a/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/rules b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/rules
new file mode 100644
index 0000000..5afe3f7
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ DIR=$$(find -name 'DEBIAN'); \
+ rm "$$DIR/conffiles" && \
+ md5sum something.conf | sed 's/ s/ etc\/s/' >> "$$DIR/md5sums"
+ dh_builddeb
+
diff --git a/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/fill-values b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/fill-values
new file mode 100644
index 0000000..63dd144
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: conffiles-etc-not-marked
+Description: Test checking etc files not being marked as conffiles
diff --git a/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/orig/something.conf b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/orig/something.conf
new file mode 100644
index 0000000..432ea47
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-etc-not-marked/build-spec/orig/something.conf
@@ -0,0 +1 @@
+hello=world
diff --git a/t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/desc b/t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/desc
new file mode 100644
index 0000000..4d117c3
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/desc
@@ -0,0 +1,2 @@
+Testname: conffiles-etc-not-marked
+Check: conffiles
diff --git a/t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/hints b/t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/hints
new file mode 100644
index 0000000..6415828
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-etc-not-marked/eval/hints
@@ -0,0 +1 @@
+conffiles-etc-not-marked (binary): file-in-etc-not-marked-as-conffile [etc/something.conf]
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/conffiles b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/conffiles
new file mode 100644
index 0000000..51222d6
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/conffiles
@@ -0,0 +1,9 @@
+/etc/foo
+/etc/rc2.d/file
+/etc/symlink
+/usr/share/foo
+/var/cache/foo
+etc/foo
+/etc/thin-air
+/usr/gone
+/var/bye
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/install b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/install
new file mode 100644
index 0000000..46dd330
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/install
@@ -0,0 +1,3 @@
+usr
+var
+etc
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/links b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/links
new file mode 100644
index 0000000..01a5497
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/links
@@ -0,0 +1 @@
+etc/foo etc/symlink
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/rules b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/rules
new file mode 100755
index 0000000..02d8017
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+pkg=conffiles-general
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ mkdir -p debian/$(pkg)/etc/
+ echo "Hallo World" > debian/$(pkg)/etc/foo
+ mkdir -p debian/$(pkg)/DEBIAN
+ cp debian/conffiles debian/$(pkg)/DEBIAN
+ dpkg-deb --nocheck --build debian/$(pkg) ../$(pkg)_1.0-1_all.deb
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/fill-values b/t/recipes/checks/conffiles/conffiles-general/build-spec/fill-values
new file mode 100644
index 0000000..03c9386
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: conffiles-general
+Package-Architecture: all
+Description: Test for conffile-related checks
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/etc/rc2.d/file b/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/etc/rc2.d/file
new file mode 100644
index 0000000..87eb780
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/etc/rc2.d/file
@@ -0,0 +1 @@
+DUMMY INIT.
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/usr/share/foo b/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/usr/share/foo
new file mode 100644
index 0000000..563ac09
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/usr/share/foo
@@ -0,0 +1 @@
+MEANINGFUL CONTENTS.
diff --git a/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/var/cache/foo b/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/var/cache/foo
new file mode 100644
index 0000000..59a262a
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/build-spec/orig/var/cache/foo
@@ -0,0 +1 @@
+ALSO MEANINGFUL.
diff --git a/t/recipes/checks/conffiles/conffiles-general/eval/desc b/t/recipes/checks/conffiles/conffiles-general/eval/desc
new file mode 100644
index 0000000..c927c96
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: conffiles-general
+Check: conffiles
diff --git a/t/recipes/checks/conffiles/conffiles-general/eval/hints b/t/recipes/checks/conffiles/conffiles-general/eval/hints
new file mode 100644
index 0000000..44959bb
--- /dev/null
+++ b/t/recipes/checks/conffiles/conffiles-general/eval/hints
@@ -0,0 +1,13 @@
+conffiles-general (binary): relative-conffile etc/foo [conffiles:6]
+conffiles-general (binary): non-etc-file-marked-as-conffile var/cache/foo [conffiles:5]
+conffiles-general (binary): non-etc-file-marked-as-conffile var/bye [conffiles:9]
+conffiles-general (binary): non-etc-file-marked-as-conffile usr/share/foo [conffiles:4]
+conffiles-general (binary): non-etc-file-marked-as-conffile usr/gone [conffiles:8]
+conffiles-general (binary): missing-conffile var/bye [conffiles:9]
+conffiles-general (binary): missing-conffile usr/gone [conffiles:8]
+conffiles-general (binary): missing-conffile etc/thin-air [conffiles:7]
+conffiles-general (binary): file-in-usr-marked-as-conffile usr/share/foo [conffiles:4]
+conffiles-general (binary): file-in-usr-marked-as-conffile usr/gone [conffiles:8]
+conffiles-general (binary): file-in-etc-rc.d-marked-as-conffile etc/rc2.d/file [conffiles:2]
+conffiles-general (binary): duplicate-conffile etc/foo (lines 1 6) [conffiles]
+conffiles-general (binary): conffile-has-bad-file-type [etc/symlink]
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/conffiles b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/conffiles
new file mode 100644
index 0000000..6bac7c1
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/conffiles
@@ -0,0 +1 @@
+chicken-soup /etc/some.config
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/install b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/install
new file mode 100644
index 0000000..ee19d5d
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/install
@@ -0,0 +1 @@
+etc
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/rules b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/rules
new file mode 100755
index 0000000..9de9df4
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+pkg=instruction-chicken-soup
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ mkdir -p debian/$(pkg)/DEBIAN
+ cp debian/conffiles debian/$(pkg)/DEBIAN
+ dpkg-deb --nocheck --build debian/$(pkg) ../$(pkg)_1.0-1_all.deb
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/fill-values b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/fill-values
new file mode 100644
index 0000000..98f4bab
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: instruction-chicken-soup
+Package-Architecture: all
+Description: Instruction 'chicken-soup' in DEBIAN/conffiles
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/orig/etc/some.config b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/orig/etc/some.config
new file mode 100644
index 0000000..75e946e
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/build-spec/orig/etc/some.config
@@ -0,0 +1 @@
+A CONFIGURATION.
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/eval/desc b/t/recipes/checks/conffiles/instruction-chicken-soup/eval/desc
new file mode 100644
index 0000000..e545522
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/eval/desc
@@ -0,0 +1,2 @@
+Testname: instruction-chicken-soup
+Check: conffiles
diff --git a/t/recipes/checks/conffiles/instruction-chicken-soup/eval/hints b/t/recipes/checks/conffiles/instruction-chicken-soup/eval/hints
new file mode 100644
index 0000000..07fcbcb
--- /dev/null
+++ b/t/recipes/checks/conffiles/instruction-chicken-soup/eval/hints
@@ -0,0 +1 @@
+instruction-chicken-soup (binary): unknown-conffile-instruction chicken-soup [conffiles:1]
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/eval/desc b/t/recipes/checks/conffiles/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..0c3423e
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: conffiles
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/eval/hints b/t/recipes/checks/conffiles/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..b5286d9
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/eval/hints
@@ -0,0 +1,3 @@
+etcfiles (binary): non-etc-file-marked-as-conffile var/lib/foo [conffiles:2]
+etcfiles (binary): file-in-etc-not-marked-as-conffile [etc/improper]
+etcfiles (binary): file-in-etc-not-marked-as-conffile [etc/improper-link]
diff --git a/t/recipes/checks/conffiles/legacy-etcfiles/eval/post-test b/t/recipes/checks/conffiles/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/control b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/fill-values b/t/recipes/checks/conffiles/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/conffiles/legacy-filenames/eval/desc b/t/recipes/checks/conffiles/legacy-filenames/eval/desc
new file mode 100644
index 0000000..e5013ae
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: conffiles
diff --git a/t/recipes/checks/conffiles/legacy-filenames/eval/hints b/t/recipes/checks/conffiles/legacy-filenames/eval/hints
new file mode 100644
index 0000000..fbb5997
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): file-in-etc-not-marked-as-conffile [etc/gconf/schemas/test.schema]
diff --git a/t/recipes/checks/conffiles/legacy-filenames/eval/post-test b/t/recipes/checks/conffiles/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/conffiles/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/debian/gitlab-ci.yml b/t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/debian/gitlab-ci.yml
new file mode 100644
index 0000000..7205be0
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/debian/gitlab-ci.yml
@@ -0,0 +1,5 @@
+# taken from ncurses_6.2-1.dsc
+
+include:
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
diff --git a/t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/fill-values b/t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/fill-values
new file mode 100644
index 0000000..529bd21
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/first-level-array/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: first-level-array
+Description: Salsa CI includes at the array level below root.
diff --git a/t/recipes/checks/continuous-integration/salsa/first-level-array/eval/desc b/t/recipes/checks/continuous-integration/salsa/first-level-array/eval/desc
new file mode 100644
index 0000000..d01c601
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/first-level-array/eval/desc
@@ -0,0 +1,2 @@
+Testname: first-level-array
+Check: continuous-integration/salsa
diff --git a/t/recipes/checks/continuous-integration/salsa/first-level-array/eval/hints b/t/recipes/checks/continuous-integration/salsa/first-level-array/eval/hints
new file mode 100644
index 0000000..5bb5889
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/first-level-array/eval/hints
@@ -0,0 +1,3 @@
+first-level-array (source): continuous-integration/salsa/specification [debian/gitlab-ci.yml]
+first-level-array (source): continuous-integration/salsa/include https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml [debian/gitlab-ci.yml]
+first-level-array (source): continuous-integration/salsa/include https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml [debian/gitlab-ci.yml]
diff --git a/t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/debian/gitlab-ci.yml b/t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/debian/gitlab-ci.yml
new file mode 100644
index 0000000..d15ffba
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/debian/gitlab-ci.yml
@@ -0,0 +1 @@
+include: https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
diff --git a/t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/fill-values b/t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/fill-values
new file mode 100644
index 0000000..352cf3e
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/root-scalar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: root-scalar
+Description: Salsa CI include as scalar at root level
diff --git a/t/recipes/checks/continuous-integration/salsa/root-scalar/eval/desc b/t/recipes/checks/continuous-integration/salsa/root-scalar/eval/desc
new file mode 100644
index 0000000..adc82e0
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/root-scalar/eval/desc
@@ -0,0 +1,2 @@
+Testname: root-scalar
+Check: continuous-integration/salsa
diff --git a/t/recipes/checks/continuous-integration/salsa/root-scalar/eval/hints b/t/recipes/checks/continuous-integration/salsa/root-scalar/eval/hints
new file mode 100644
index 0000000..6059644
--- /dev/null
+++ b/t/recipes/checks/continuous-integration/salsa/root-scalar/eval/hints
@@ -0,0 +1,2 @@
+root-scalar (source): continuous-integration/salsa/specification [debian/gitlab-ci.yml]
+root-scalar (source): continuous-integration/salsa/include https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml [debian/gitlab-ci.yml]
diff --git a/t/recipes/checks/control-files/control-field-traversal-4/build-spec/DEBIAN/control.in b/t/recipes/checks/control-files/control-field-traversal-4/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..3c0318e
--- /dev/null
+++ b/t/recipes/checks/control-files/control-field-traversal-4/build-spec/DEBIAN/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: [% $package_architecture %]
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Source: ../binary/control-field-traversal-4
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/control-files/control-field-traversal-4/build-spec/fill-values b/t/recipes/checks/control-files/control-field-traversal-4/build-spec/fill-values
new file mode 100644
index 0000000..b8508ba
--- /dev/null
+++ b/t/recipes/checks/control-files/control-field-traversal-4/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: control-field-traversal-4
+Description: Test for directory traversal issues via field names or values
diff --git a/t/recipes/checks/control-files/control-field-traversal-4/build-spec/pre-data b/t/recipes/checks/control-files/control-field-traversal-4/build-spec/pre-data
new file mode 100755
index 0000000..c14dcc8
--- /dev/null
+++ b/t/recipes/checks/control-files/control-field-traversal-4/build-spec/pre-data
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+name="$2"
+
+docdir="$rootdir/usr/share/doc"
+
+rm -rf "$docdir"
+
+mkdir -p "$docdir/dpkg"
+ln -sf dpkg "$docdir/$name"
diff --git a/t/recipes/checks/control-files/control-field-traversal-4/eval/desc b/t/recipes/checks/control-files/control-field-traversal-4/eval/desc
new file mode 100644
index 0000000..f31ff4d
--- /dev/null
+++ b/t/recipes/checks/control-files/control-field-traversal-4/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-field-traversal-4
+Check: control-files
+Output-Format: EWI
+Match-Strategy: literal
diff --git a/t/recipes/checks/control-files/control-field-traversal-4/eval/literal b/t/recipes/checks/control-files/control-field-traversal-4/eval/literal
new file mode 100644
index 0000000..c1dd694
--- /dev/null
+++ b/t/recipes/checks/control-files/control-field-traversal-4/eval/literal
@@ -0,0 +1 @@
+warning: tainted binary package 'control-field-traversal-4', skipping
diff --git a/t/recipes/checks/control-files/control-files-bad/build-spec/fill-values b/t/recipes/checks/control-files/control-files-bad/build-spec/fill-values
new file mode 100644
index 0000000..9800fe7
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-bad/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: control-files-bad
+Description: Test for bad owner of control files
diff --git a/t/recipes/checks/control-files/control-files-bad/build-spec/pre-control b/t/recipes/checks/control-files/control-files-bad/build-spec/pre-control
new file mode 100755
index 0000000..d504a1b
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-bad/build-spec/pre-control
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+builddir="$1"
+
+chmod 755 "$builddir/md5sums"
diff --git a/t/recipes/checks/control-files/control-files-bad/build-spec/tar-control b/t/recipes/checks/control-files/control-files-bad/build-spec/tar-control
new file mode 100755
index 0000000..2188e24
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-bad/build-spec/tar-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+controlmembers="$2"
+
+tar --create --file members/control.tar.gz --gzip --owner=nobody --directory "$debiandir" $controlmembers
diff --git a/t/recipes/checks/control-files/control-files-bad/eval/desc b/t/recipes/checks/control-files/control-files-bad/eval/desc
new file mode 100644
index 0000000..3d2b85d
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-files-bad
+Check: control-files
diff --git a/t/recipes/checks/control-files/control-files-bad/eval/hints b/t/recipes/checks/control-files/control-files-bad/eval/hints
new file mode 100644
index 0000000..513dd43
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-bad/eval/hints
@@ -0,0 +1,3 @@
+control-files-bad (binary): ctrl-script [md5sums]
+control-files-bad (binary): control-file-has-bad-permissions 0755 != 0644 [md5sums]
+control-files-bad (binary): control-file-has-bad-owner nobody/root != root/root (or 0/0) [md5sums]
diff --git a/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/postinst b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/postinst
new file mode 100644
index 0000000..690173c
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "configure" ] && which bar 2>/dev/null >/dev/null; then
+ bar configure
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/prerm b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/prerm
new file mode 100644
index 0000000..a166618
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/debian/prerm
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "remove" ] && which bar 2>/dev/null >/dev/null; then
+ bar remove
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/fill-values b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/fill-values
new file mode 100644
index 0000000..903df89
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-files-classifications-ctrl-script
+Description: Test for control-files classifications
diff --git a/t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/desc b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/desc
new file mode 100644
index 0000000..480baee
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-files-classifications-ctrl-script
+Check: control-files
diff --git a/t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/hints b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/hints
new file mode 100644
index 0000000..70e73ea
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-ctrl-script/eval/hints
@@ -0,0 +1,2 @@
+control-files-classifications-ctrl-script (binary): ctrl-script [prerm]
+control-files-classifications-ctrl-script (binary): ctrl-script [postinst]
diff --git a/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/build-spec/fill-values b/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/build-spec/fill-values
new file mode 100644
index 0000000..fccd640
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-files-classifications-no-ctrl-scripts
+Description: Test for control-files classifications
diff --git a/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/desc b/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/desc
new file mode 100644
index 0000000..31c1524
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-files-classifications-no-ctrl-scripts
+Check: control-files
diff --git a/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/hints b/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/hints
new file mode 100644
index 0000000..5edb006
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-classifications-no-ctrl-scripts/eval/hints
@@ -0,0 +1 @@
+control-files-classifications-no-ctrl-scripts (binary): no-ctrl-scripts
diff --git a/t/recipes/checks/control-files/control-files-traversal/build-spec/control-members b/t/recipes/checks/control-files/control-files-traversal/build-spec/control-members
new file mode 100644
index 0000000..092c411
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-traversal/build-spec/control-members
@@ -0,0 +1,3 @@
+conffiles
+control
+md5sums
diff --git a/t/recipes/checks/control-files/control-files-traversal/build-spec/fill-values b/t/recipes/checks/control-files/control-files-traversal/build-spec/fill-values
new file mode 100644
index 0000000..cce1fb0
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-traversal/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: control-files-traversal
+Description: Test for bad owner of control files
diff --git a/t/recipes/checks/control-files/control-files-traversal/build-spec/pre-control b/t/recipes/checks/control-files/control-files-traversal/build-spec/pre-control
new file mode 100755
index 0000000..bc2cf15
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-traversal/build-spec/pre-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+name="$2"
+
+ln -sf ../md5sums "$debiandir/conffiles"
diff --git a/t/recipes/checks/control-files/control-files-traversal/eval/desc b/t/recipes/checks/control-files/control-files-traversal/eval/desc
new file mode 100644
index 0000000..fb32936
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-traversal/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-files-traversal
+Check: control-files
diff --git a/t/recipes/checks/control-files/control-files-traversal/eval/hints b/t/recipes/checks/control-files/control-files-traversal/eval/hints
new file mode 100644
index 0000000..1fbc94b
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-traversal/eval/hints
@@ -0,0 +1,2 @@
+control-files-traversal (binary): no-ctrl-scripts
+control-files-traversal (binary): control-file-is-not-a-file [conffiles]
diff --git a/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/isinstallable b/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/isinstallable
new file mode 100644
index 0000000..3123e82
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/isinstallable
@@ -0,0 +1 @@
+This is a udeb file and should be in a binary package.
diff --git a/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/special-file b/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/special-file
new file mode 100644
index 0000000..77d9abd
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/special-file
@@ -0,0 +1 @@
+This is an unknown control file.
diff --git a/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/triggers b/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/triggers
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/build-spec/DEBIAN/triggers
diff --git a/t/recipes/checks/control-files/control-files-weird-files/build-spec/control-members b/t/recipes/checks/control-files/control-files-weird-files/build-spec/control-members
new file mode 100644
index 0000000..1811cf0
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/build-spec/control-members
@@ -0,0 +1,5 @@
+control
+triggers
+special-file
+isinstallable
+md5sums
diff --git a/t/recipes/checks/control-files/control-files-weird-files/build-spec/fill-values b/t/recipes/checks/control-files/control-files-weird-files/build-spec/fill-values
new file mode 100644
index 0000000..380bd5c
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: control-files-weird-files
+Description: Test for bad owner of control files
diff --git a/t/recipes/checks/control-files/control-files-weird-files/eval/desc b/t/recipes/checks/control-files/control-files-weird-files/eval/desc
new file mode 100644
index 0000000..d7af633
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-files-weird-files
+Check: control-files
diff --git a/t/recipes/checks/control-files/control-files-weird-files/eval/hints b/t/recipes/checks/control-files/control-files-weird-files/eval/hints
new file mode 100644
index 0000000..b763cb1
--- /dev/null
+++ b/t/recipes/checks/control-files/control-files-weird-files/eval/hints
@@ -0,0 +1,4 @@
+control-files-weird-files (binary): unknown-control-file [special-file]
+control-files-weird-files (binary): not-allowed-control-file [isinstallable]
+control-files-weird-files (binary): no-ctrl-scripts
+control-files-weird-files (binary): control-file-is-empty [triggers]
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/control b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/rules b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/debian/templates b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/fill-values b/t/recipes/checks/control-files/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/control-files/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/control-files/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/control-files/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/control-files/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/control-files/legacy-binary/eval/desc b/t/recipes/checks/control-files/legacy-binary/eval/desc
new file mode 100644
index 0000000..64f5f41
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/eval/desc
@@ -0,0 +1,3 @@
+Testname: legacy-binary
+Test-Against: control-file-is-empty
+Check: control-files
diff --git a/t/recipes/checks/control-files/legacy-binary/eval/hints b/t/recipes/checks/control-files/legacy-binary/eval/hints
new file mode 100644
index 0000000..aa51beb
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary-data (binary): no-ctrl-scripts
+binary (binary): ctrl-script [postinst]
diff --git a/t/recipes/checks/control-files/legacy-binary/eval/post-test b/t/recipes/checks/control-files/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/control-files/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/control-files/legacy-libbaz/eval/desc b/t/recipes/checks/control-files/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..fda1fde
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: control-files
diff --git a/t/recipes/checks/control-files/legacy-libbaz/eval/hints b/t/recipes/checks/control-files/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..83003be
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/eval/hints
@@ -0,0 +1,11 @@
+libbaz2-dev (binary): no-ctrl-scripts
+libbaz2-dbg (binary): no-ctrl-scripts
+libbaz2 (binary): no-ctrl-scripts
+libbaz1-dev (binary): ctrl-script [prerm]
+libbaz1-dev (binary): ctrl-script [postinst]
+libbaz1 (binary): ctrl-script [symbols]
+libbaz1 (binary): ctrl-script [shlibs]
+libbaz1 (binary): ctrl-script [prerm]
+libbaz1 (binary): ctrl-script [postinst]
+libbaz1 (binary): control-file-has-bad-permissions 0755 != 0644 [symbols]
+libbaz1 (binary): control-file-has-bad-permissions 0755 != 0644 [shlibs]
diff --git a/t/recipes/checks/control-files/legacy-libbaz/eval/post-test b/t/recipes/checks/control-files/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/fill-values b/t/recipes/checks/control-files/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/control-files/legacy-scripts/build-spec/pre-build b/t/recipes/checks/control-files/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/control-files/legacy-scripts/eval/desc b/t/recipes/checks/control-files/legacy-scripts/eval/desc
new file mode 100644
index 0000000..b7106ef
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: control-files
diff --git a/t/recipes/checks/control-files/legacy-scripts/eval/hints b/t/recipes/checks/control-files/legacy-scripts/eval/hints
new file mode 100644
index 0000000..8e2a570
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/eval/hints
@@ -0,0 +1,5 @@
+scripts (binary): ctrl-script [prerm]
+scripts (binary): ctrl-script [preinst]
+scripts (binary): ctrl-script [postrm]
+scripts (binary): ctrl-script [postinst]
+scripts (binary): control-file-is-empty [prerm]
diff --git a/t/recipes/checks/control-files/legacy-scripts/eval/post-test b/t/recipes/checks/control-files/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/control-files/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/control-files/md5sums-empty/build-spec/debian/rules b/t/recipes/checks/control-files/md5sums-empty/build-spec/debian/rules
new file mode 100644
index 0000000..2bcc816
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-empty/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+TMP=debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ :>$(TMP)/DEBIAN/md5sums
+ dh_builddeb
diff --git a/t/recipes/checks/control-files/md5sums-empty/build-spec/fill-values b/t/recipes/checks/control-files/md5sums-empty/build-spec/fill-values
new file mode 100644
index 0000000..231501f
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: md5sums-empty
+Description: Test of empty md5sums file
diff --git a/t/recipes/checks/control-files/md5sums-empty/eval/desc b/t/recipes/checks/control-files/md5sums-empty/eval/desc
new file mode 100644
index 0000000..505d262
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-empty/eval/desc
@@ -0,0 +1,4 @@
+Testname: md5sums-empty
+Test-Against:
+ control-file-is-empty
+Check: control-files
diff --git a/t/recipes/checks/control-files/md5sums-empty/eval/hints b/t/recipes/checks/control-files/md5sums-empty/eval/hints
new file mode 100644
index 0000000..77e5018
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-empty/eval/hints
@@ -0,0 +1 @@
+md5sums-empty (binary): no-ctrl-scripts
diff --git a/t/recipes/checks/control-files/md5sums-traversal/build-spec/fill-values b/t/recipes/checks/control-files/md5sums-traversal/build-spec/fill-values
new file mode 100644
index 0000000..2c68cb6
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-traversal/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: md5sums-traversal
+Description: Test for traversals via md5sums symlink
diff --git a/t/recipes/checks/control-files/md5sums-traversal/build-spec/pre-control b/t/recipes/checks/control-files/md5sums-traversal/build-spec/pre-control
new file mode 100755
index 0000000..3b97b53
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-traversal/build-spec/pre-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+builddir="$1"
+
+rm -f "$builddir/md5sums"
+ln -sf ../copyright "$builddir/md5sums"
diff --git a/t/recipes/checks/control-files/md5sums-traversal/eval/desc b/t/recipes/checks/control-files/md5sums-traversal/eval/desc
new file mode 100644
index 0000000..5c8f928
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-traversal/eval/desc
@@ -0,0 +1,2 @@
+Testname: md5sums-traversal
+Check: control-files
diff --git a/t/recipes/checks/control-files/md5sums-traversal/eval/hints b/t/recipes/checks/control-files/md5sums-traversal/eval/hints
new file mode 100644
index 0000000..ad4d53e
--- /dev/null
+++ b/t/recipes/checks/control-files/md5sums-traversal/eval/hints
@@ -0,0 +1,2 @@
+md5sums-traversal (binary): no-ctrl-scripts
+md5sums-traversal (binary): control-file-is-not-a-file [md5sums]
diff --git a/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/fill-values b/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/fill-values
new file mode 100644
index 0000000..1197f5c
--- /dev/null
+++ b/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: unpack-numerical-owner
+Description: Test for tarballs with numerical owner only
diff --git a/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-control b/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-control
new file mode 100755
index 0000000..19b6369
--- /dev/null
+++ b/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+controlmembers="$2"
+
+tar --create --file members/control.tar.gz --gzip --numeric-owner --directory "$debiandir" $controlmembers
diff --git a/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-data b/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-data
new file mode 100755
index 0000000..5659822
--- /dev/null
+++ b/t/recipes/checks/control-files/unpack-numerical-owner/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.gz --gzip --numeric-owner --directory "$rootdir" .
diff --git a/t/recipes/checks/control-files/unpack-numerical-owner/eval/desc b/t/recipes/checks/control-files/unpack-numerical-owner/eval/desc
new file mode 100644
index 0000000..535eb15
--- /dev/null
+++ b/t/recipes/checks/control-files/unpack-numerical-owner/eval/desc
@@ -0,0 +1,3 @@
+Testname: unpack-numerical-owner
+Test-Against: control-file-has-bad-owner
+Check: control-files
diff --git a/t/recipes/checks/control-files/unpack-numerical-owner/eval/hints b/t/recipes/checks/control-files/unpack-numerical-owner/eval/hints
new file mode 100644
index 0000000..60d1461
--- /dev/null
+++ b/t/recipes/checks/control-files/unpack-numerical-owner/eval/hints
@@ -0,0 +1 @@
+unpack-numerical-owner (binary): no-ctrl-scripts
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.docs b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.docs
new file mode 100644
index 0000000..42f92ea
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.docs
@@ -0,0 +1,3 @@
+read-only
+README
+some-file
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.init b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.init
new file mode 100644
index 0000000..4ebbdf5
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: binary
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Useless
+# Description: Does nothing
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.install b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.install
new file mode 100644
index 0000000..c759290
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.install
@@ -0,0 +1,9 @@
+sample.ali usr/lib/some-where/
+script-uid usr/bin/
+script-ugid usr/bin/
+script-gid usr/bin/
+script-wexec usr/bin/
+script-wuid usr/bin/
+script-ro usr/bin/
+script etc/cron.d/
+script etc/emacs.d/
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.manpages b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.manpages
new file mode 100644
index 0000000..ad3e735
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/binary.manpages
@@ -0,0 +1 @@
+script-*.1
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/clean b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/clean
new file mode 100644
index 0000000..1e7cec6
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/clean
@@ -0,0 +1 @@
+script*.1
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/control.in b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/control.in
new file mode 100644
index 0000000..5c8703f
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: binary
+Architecture: all
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: game
+Architecture: all
+Section: games
+Depends: ${misc:Depends}
+Description: [% $description %] - game
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Game package.
+
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.install b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.install
new file mode 100644
index 0000000..f708f99
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.install
@@ -0,0 +1 @@
+script usr/games/
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.manpages b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.manpages
new file mode 100644
index 0000000..8d16fb4
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/game.manpages
@@ -0,0 +1 @@
+script.1
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/rules b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/rules
new file mode 100644
index 0000000..951f84c
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/debian/rules
@@ -0,0 +1,31 @@
+#!/usr/bin/make -f
+
+GPKG:=game
+PKG:=binary
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ for N in uid gid ugid wexec wuid ro; do \
+ sed s/script/script-$$N/ < script > script-$$N ; \
+ pod2man --section 1 script-$$N > script-$$N.1 ; \
+ done
+ pod2man --section 1 script > script.1
+
+override_dh_fixperms:
+ dh_fixperms
+
+ chmod 0444 debian/$(PKG)/usr/share/doc/$(PKG)/read-only
+ chmod 4755 debian/$(PKG)/usr/bin/script-uid
+ chmod 2755 debian/$(PKG)/usr/bin/script-gid
+ chmod 6755 debian/$(PKG)/usr/bin/script-ugid
+ chmod 0775 debian/$(PKG)/usr/bin/script-wexec
+ chmod 4744 debian/$(PKG)/usr/bin/script-wuid
+ chmod 0751 debian/$(PKG)/usr/bin/script-ro
+ chmod 0644 debian/$(PKG)/usr/lib/some-where/sample.ali
+ chmod 0744 debian/$(PKG)/usr/share/doc/$(PKG)
+ chmod 0755 debian/$(PKG)/usr/share/doc/$(PKG)/some-file
+ chmod 0755 debian/$(PKG)/etc/cron.d/script
+ chmod 0755 debian/$(PKG)/etc/emacs.d/script
+ chmod 0765 debian/$(PKG)/etc/init.d/binary
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/fill-values b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/fill-values
new file mode 100644
index 0000000..c914891
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-bad-perm-owner
+Description: General permissions and owner tests
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/README b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/read-only b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/read-only
new file mode 100644
index 0000000..1a3fca1
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/read-only
@@ -0,0 +1 @@
+Fadango on the core
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/sample.ali b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/sample.ali
new file mode 100644
index 0000000..fec3fc8
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/sample.ali
@@ -0,0 +1 @@
+This is not a valid ali file
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/script b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/script
new file mode 100755
index 0000000..8521013
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/script
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+echo "Aloha"
+
+exit 0
+
+=head1 NAME
+
+script -- prints Aloha to stdout
+
+=head1 SYNOPSIS
+
+ script
+
+=head1 DESCRIPTION
+
+Prints Aloha to stdout and that is it.
+
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/some-file b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/some-file
new file mode 100644
index 0000000..0dfa8ff
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This is executable and should not be. :)
+ - Unfortunately it triggers an extra tag... oh well.
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/eval/desc b/t/recipes/checks/cron/files-bad-perm-owner/eval/desc
new file mode 100644
index 0000000..952600a
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-bad-perm-owner
+Check: cron
diff --git a/t/recipes/checks/cron/files-bad-perm-owner/eval/hints b/t/recipes/checks/cron/files-bad-perm-owner/eval/hints
new file mode 100644
index 0000000..c371cc7
--- /dev/null
+++ b/t/recipes/checks/cron/files-bad-perm-owner/eval/hints
@@ -0,0 +1 @@
+binary (binary): bad-permissions-for-etc-cron.d-script 0755 != 0644 [etc/cron.d/script]
diff --git a/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/debian/install b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/debian/install
new file mode 100644
index 0000000..02c3f92
--- /dev/null
+++ b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/debian/install
@@ -0,0 +1,2 @@
+_bad-pkcs11.module usr/share/p11-kit/modules/
+cron-script.hourly etc/cron.hourly/
diff --git a/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/fill-values b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/fill-values
new file mode 100644
index 0000000..abbdaca
--- /dev/null
+++ b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-violates-expected-naming
+Description: Test naming conventions not being followed
diff --git a/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module
diff --git a/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly
new file mode 100755
index 0000000..ad6e129
--- /dev/null
+++ b/t/recipes/checks/cron/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Hallo World"
diff --git a/t/recipes/checks/cron/files-foo-violates-expected-naming/eval/desc b/t/recipes/checks/cron/files-foo-violates-expected-naming/eval/desc
new file mode 100644
index 0000000..9b3431a
--- /dev/null
+++ b/t/recipes/checks/cron/files-foo-violates-expected-naming/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-violates-expected-naming
+Check: cron
diff --git a/t/recipes/checks/cron/files-foo-violates-expected-naming/eval/hints b/t/recipes/checks/cron/files-foo-violates-expected-naming/eval/hints
new file mode 100644
index 0000000..7d9bb33
--- /dev/null
+++ b/t/recipes/checks/cron/files-foo-violates-expected-naming/eval/hints
@@ -0,0 +1 @@
+files-foo-violates-expected-naming (binary): run-parts-cron-filename-contains-illegal-chars [etc/cron.hourly/cron-script.hourly]
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/cron/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/cron/legacy-etcfiles/eval/desc b/t/recipes/checks/cron/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..0432bda
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: cron
diff --git a/t/recipes/checks/cron/legacy-etcfiles/eval/hints b/t/recipes/checks/cron/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..733886c
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (binary): run-parts-cron-filename-contains-illegal-chars [etc/cron.daily/cronfile-contains.fullstop]
diff --git a/t/recipes/checks/cron/legacy-etcfiles/eval/post-test b/t/recipes/checks/cron/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/cron/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/build-spec/fill-values b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/fill-values
new file mode 100644
index 0000000..3dcc6e0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-autogenerated
+Description: Check for autogenerated file
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.c b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.c
new file mode 100644
index 0000000..115d756
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.c
@@ -0,0 +1 @@
+/* ANSI-C code produced by gperf version 2.7.2 */
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.cpp b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.cpp
new file mode 100644
index 0000000..8971eaf
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/gperf/gperf.cpp
@@ -0,0 +1 @@
+/* C++ code produced by gperf version 3.0.3 */
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/oui.db/oui.db b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/oui.db/oui.db
new file mode 100644
index 0000000..ebf4106
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/oui.db/oui.db
@@ -0,0 +1,20 @@
+# part of oui database
+
+00-00-56 (hex) DR. B. STRUCK
+000056 (base 16) DR. B. STRUCK
+ POB 1147 BAECKERBARG 6
+ D-2000 TANGSTEDT/HAMBURG
+ W-GERMANY
+ GERMANY
+
+00-00-57 (hex) SCITEX CORPORATION LTD.
+000057 (base 16) SCITEX CORPORATION LTD.
+ P.O. BOX 330
+ 46103 HERZLIA B
+ ISRAEL
+
+00-00-58 (hex) RACORE COMPUTER PRODUCTS INC.
+000058 (base 16) RACORE COMPUTER PRODUCTS INC.
+ 2355 SOUTH 1070 WEST
+ SALT LAKE CITY UT 84119
+ UNITED STATES \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/negative.py b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/negative.py
new file mode 100644
index 0000000..3c7da65
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/negative.py
@@ -0,0 +1,5 @@
+def realwork(vars, moddefns, target):
+ version_suffix = "%r%r" % sys.version_info[:2]
+ print "# Makefile for Microsoft Visual C++ generated by freeze.py script"
+ print
+ print 'target = %s' % target \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/positive.cpp b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/positive.cpp
new file mode 100644
index 0000000..5d3f004
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/build-spec/orig/src/visualc++/positive.cpp
@@ -0,0 +1,4 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by vtkDLG.rc
+// \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/eval/desc b/t/recipes/checks/cruft/cruft-autogenerated/eval/desc
new file mode 100644
index 0000000..a3c70f4
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-autogenerated
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-autogenerated/eval/hints b/t/recipes/checks/cruft/cruft-autogenerated/eval/hints
new file mode 100644
index 0000000..3003675
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-autogenerated/eval/hints
@@ -0,0 +1,4 @@
+cruft-autogenerated (source): source-contains-data-from-ieee-data-oui-db [src/oui.db/oui.db]
+cruft-autogenerated (source): source-contains-autogenerated-visual-c++-file [src/visualc++/positive.cpp]
+cruft-autogenerated (source): source-contains-autogenerated-gperf-data [src/gperf/gperf.cpp]
+cruft-autogenerated (source): source-contains-autogenerated-gperf-data [src/gperf/gperf.c]
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/debian/copyright b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/debian/copyright
new file mode 100644
index 0000000..8513b32
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/debian/copyright
@@ -0,0 +1,20 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: https://pecl.php.net/package/foo
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/fill-values b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/fill-values
new file mode 100644
index 0000000..b7ea3b7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-bad-php-unrel
+Description: Check for the bad php license (false-positives)
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_01.txt b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_01.txt
new file mode 100644
index 0000000..0dc7725
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_01.txt
@@ -0,0 +1,70 @@
+--------------------------------------------------------------------
+ The PHP License, version 2.01
+Copyright (c) 1999 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. Permission to freely distribute and use Zend as an integrated
+ part of PHP is granted, under the conditions of version 0.91
+ of the Zend License.
+ The license is bundled with the Zend engine, and is available
+ at http://www.zend.com/license/0_91.txt, or by contacting
+ license@zend.com.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at php-group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_02.txt b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_02.txt
new file mode 100644
index 0000000..af5b01c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/2_02.txt
@@ -0,0 +1,75 @@
+--------------------------------------------------------------------
+ The PHP License, version 2.02
+Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. The software incorporates the Zend Engine, a product of Zend
+ Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the
+ PHP Association (pursuant to a grant from Zend that can be
+ found at http://www.php.net/license/ZendGrant/) for
+ distribution to you under this license agreement, only as a
+ part of PHP. In the event that you separate the Zend Engine
+ (or any portion thereof) from the rest of the software, or
+ modify the Zend Engine, or any portion thereof, your use of the
+ separated or modified Zend Engine software shall not be governed
+ by this license, and instead shall be governed by the license
+ set forth at http://www.zend.com/license/ZendLicense/.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/3_01.txt b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/3_01.txt
new file mode 100644
index 0000000..9fbf45f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/build-spec/orig/src/3_01.txt
@@ -0,0 +1,55 @@
+--------------------------------------------------------------------
+ The PHP License, version 3.01
+Copyright (c) 1999 - 2012 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP software, freely available from
+ <http://www.php.net/software/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/eval/desc b/t/recipes/checks/cruft/cruft-bad-php-unrel/eval/desc
new file mode 100644
index 0000000..951b329
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/eval/desc
@@ -0,0 +1,5 @@
+Testname: cruft-bad-php-unrel
+Test-Against:
+ license-problem-php-license
+ license-problem-bad-php-license
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-bad-php-unrel/eval/hints b/t/recipes/checks/cruft/cruft-bad-php-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php-unrel/eval/hints
diff --git a/t/recipes/checks/cruft/cruft-bad-php/build-spec/fill-values b/t/recipes/checks/cruft/cruft-bad-php/build-spec/fill-values
new file mode 100644
index 0000000..d54580a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-bad-php
+Description: Check for the bad php license
diff --git a/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_01.txt b/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_01.txt
new file mode 100644
index 0000000..0dc7725
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_01.txt
@@ -0,0 +1,70 @@
+--------------------------------------------------------------------
+ The PHP License, version 2.01
+Copyright (c) 1999 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. Permission to freely distribute and use Zend as an integrated
+ part of PHP is granted, under the conditions of version 0.91
+ of the Zend License.
+ The license is bundled with the Zend engine, and is available
+ at http://www.zend.com/license/0_91.txt, or by contacting
+ license@zend.com.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at php-group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
diff --git a/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_02.txt b/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_02.txt
new file mode 100644
index 0000000..af5b01c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/2_02.txt
@@ -0,0 +1,75 @@
+--------------------------------------------------------------------
+ The PHP License, version 2.02
+Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. The software incorporates the Zend Engine, a product of Zend
+ Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the
+ PHP Association (pursuant to a grant from Zend that can be
+ found at http://www.php.net/license/ZendGrant/) for
+ distribution to you under this license agreement, only as a
+ part of PHP. In the event that you separate the Zend Engine
+ (or any portion thereof) from the rest of the software, or
+ modify the Zend Engine, or any portion thereof, your use of the
+ separated or modified Zend Engine software shall not be governed
+ by this license, and instead shall be governed by the license
+ set forth at http://www.zend.com/license/ZendLicense/.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
diff --git a/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/3_01.txt b/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/3_01.txt
new file mode 100644
index 0000000..9fbf45f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php/build-spec/orig/src/3_01.txt
@@ -0,0 +1,55 @@
+--------------------------------------------------------------------
+ The PHP License, version 3.01
+Copyright (c) 1999 - 2012 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP software, freely available from
+ <http://www.php.net/software/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-bad-php/eval/desc b/t/recipes/checks/cruft/cruft-bad-php/eval/desc
new file mode 100644
index 0000000..93e4ccd
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-bad-php
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-bad-php/eval/hints b/t/recipes/checks/cruft/cruft-bad-php/eval/hints
new file mode 100644
index 0000000..a674da0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-bad-php/eval/hints
@@ -0,0 +1,3 @@
+cruft-bad-php (source): license-problem-php-license [src/3_01.txt]
+cruft-bad-php (source): license-problem-bad-php-license [src/2_02.txt]
+cruft-bad-php (source): license-problem-bad-php-license [src/2_01.txt]
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/fill-values b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/fill-values
new file mode 100644
index 0000000..653eb5e
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-cc-by-nc-sa
+Description: Check for the creative common cc by sa
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/ISI_export_format.html b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/ISI_export_format.html
new file mode 100644
index 0000000..fd6df9c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/ISI_export_format.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="en" dir="ltr">
+<head>
+<title>Some title</title>
+</head>
+<body>
+Content is available under <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" class="external ">Attribution-NonCommercial-ShareAlike 3.0 Unported</a></body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/copyright-header.html b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/copyright-header.html
new file mode 100644
index 0000000..67f778a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/copyright-header.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="en" dir="ltr">
+<head>
+<title>Test</title>
+<link rel="copyright" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" />
+<body>
+test
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.svg b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.svg
new file mode 100644
index 0000000..02796b5
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- This file is under lintian license. Licence in meta data is fake
+ and only for test purpose -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="10"
+ height="10"
+ version="1.1">
+ <title id="lintian test file">File</title>
+
+ <metadata
+ id="metadata3877">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>File</dc:title>
+ <dc:date>2014-09-12</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Bastien Roucariès</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:prohibits
+ rdf:resource="http://creativecommons.org/ns#CommercialUse" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+</svg>
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.xml b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.xml
new file mode 100644
index 0000000..b0ca098
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/build-spec/orig/src/test.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF
+xmlns:cc='http://creativecommons.org/ns#'
+xmlns:foaf='http://xmlns.com/foaf/0.1/'
+xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
+xmlns:dc='http://purl.org/dc/elements/1.1/'
+xmlns:dcq='http://purl.org/dc/terms/'
+>
+<cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/fr/"> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/desc b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/desc
new file mode 100644
index 0000000..5219716
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-cc-by-nc-sa
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/hints b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/hints
new file mode 100644
index 0000000..60ac3e7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-cc-by-nc-sa/eval/hints
@@ -0,0 +1,4 @@
+cruft-cc-by-nc-sa (source): license-problem-cc-by-nc-sa [src/test.xml]
+cruft-cc-by-nc-sa (source): license-problem-cc-by-nc-sa [src/test.svg]
+cruft-cc-by-nc-sa (source): license-problem-cc-by-nc-sa [src/copyright-header.html]
+cruft-cc-by-nc-sa (source): license-problem-cc-by-nc-sa [src/ISI_export_format.html]
diff --git a/t/recipes/checks/cruft/cruft-evil-json/build-spec/fill-values b/t/recipes/checks/cruft/cruft-evil-json/build-spec/fill-values
new file mode 100644
index 0000000..215f18d
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-evil-json/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-evil-json
+Description: Check for the "Evil JSON" license
diff --git a/t/recipes/checks/cruft/cruft-evil-json/build-spec/orig/src/evil.c b/t/recipes/checks/cruft/cruft-evil-json/build-spec/orig/src/evil.c
new file mode 100644
index 0000000..e95dfd2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-evil-json/build-spec/orig/src/evil.c
@@ -0,0 +1,10 @@
+/**
+ * The non-free pet-phase in the JSON license that triggers
+ * the Lintian tag.
+ *
+ * "The software shall be used for good, not evil"
+ */
+
+int main() {
+ return 0;
+}
diff --git a/t/recipes/checks/cruft/cruft-evil-json/eval/desc b/t/recipes/checks/cruft/cruft-evil-json/eval/desc
new file mode 100644
index 0000000..deb7d73
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-evil-json/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-evil-json
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-evil-json/eval/hints b/t/recipes/checks/cruft/cruft-evil-json/eval/hints
new file mode 100644
index 0000000..a62e789
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-evil-json/eval/hints
@@ -0,0 +1 @@
+cruft-evil-json (source): license-problem-json-evil [src/evil.c]
diff --git a/t/recipes/checks/cruft/cruft-general-upstream/build-spec/fill-values b/t/recipes/checks/cruft/cruft-general-upstream/build-spec/fill-values
new file mode 100644
index 0000000..7cfc324
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-general-upstream/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-upstream
+Skeleton: upload-non-native
+Extra-Build-Depends: zip
+Description: Check for cruft in the upstream source
diff --git a/t/recipes/checks/cruft/cruft-general-upstream/build-spec/pre-upstream b/t/recipes/checks/cruft/cruft-general-upstream/build-spec/pre-upstream
new file mode 100755
index 0000000..827b002
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-general-upstream/build-spec/pre-upstream
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist upstream. We do much of it
+# here rather than in the template so that Lintian itself can be imported into
+# revision control systems.
+
+set -e
+dir="$1"
+
+
+EMPTY_OLE_OBJECT='\320\317\021\340\241\261\032\341'
+
+mkdir "${dir}/CVS"
+echo 'source-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'source-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'source-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'source-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'source-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'source-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'source-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'source-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'source-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'source-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'source-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'source-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'source-contains-svn-conflict-file' > "${dir}/foo.r1352"
+
+echo 'configure-generated-file-in-source' > "${dir}/config.cache"
+
+printf "MZ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3c" > "${dir}/fake-win32-bin.exe"
+# use old magic \001\000\000\000 part is optional but needed with old file
+printf "ITSF\003\000\000\000\140\000\000\000\001\000\000\000" > "${dir}/fake-help-file.chm"
+# .chm files with "Halibut" are probably generated by free software
+printf "ITSF\003\000\000\000\140\000\000\000\001\000\000\000Halibut," > "${dir}/fake-help-file-halibut.chm"
+
+printf "CWS\011 x" > "${dir}/fakeflash.swf"
+echo '//comment' > "${dir}/fake.min.js"
+# Make python generate python bytecode files
+# - more reliable than crafting them ourselves
+echo '' > "${dir}/fake.py"
+echo 'import fake' > "${dir}/main.py"
+unset PYTHONDONTWRITEBYTECODE
+PYTHONPATH="${dir}" python3 "${dir}/main.py" > /dev/null
+PYTHONPATH="${dir}" python3 -O "${dir}/main.py" > /dev/null
+rm -f "${dir}"/main.py*
+
+zip -q "${dir}/fake.jar" "${dir}/fake.min.js"
+cp "${dir}/fake.jar" "${dir}/fakesilverlight.XAC"
+
+# need to pad
+printf "\320\317\021\340\241\261\032\341" > "${dir}/fakefla.fla"
+dd if=/dev/zero of="${dir}/fakefla.fla" count=1 bs=1 seek=2047 > /dev/null 2> /dev/null
+cp "${dir}/fakefla.fla" "${dir}/fakeflasourced.fla"
+printf '//fake .as flash' > "${dir}/fakeflasourced.as"
diff --git a/t/recipes/checks/cruft/cruft-general-upstream/eval/desc b/t/recipes/checks/cruft/cruft-general-upstream/eval/desc
new file mode 100644
index 0000000..598c670
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-general-upstream/eval/desc
@@ -0,0 +1,5 @@
+Testname: cruft-general-upstream
+Check: cruft
+Todo: In unstable, file(1) cannot detect files byte-compiled by Python3. (Bug#950516)
+# also update the version number below when Bug#950516 was fixed
+Test-Depends: file (>= 1:5.38)
diff --git a/t/recipes/checks/cruft/cruft-general-upstream/eval/hints b/t/recipes/checks/cruft/cruft-general-upstream/eval/hints
new file mode 100644
index 0000000..43d5e56
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-general-upstream/eval/hints
@@ -0,0 +1,26 @@
+cruft-general-upstream (source): source-is-missing fakeflash.swf
+cruft-general-upstream (source): source-is-missing fakefla.fla
+cruft-general-upstream (source): source-is-missing fake.min.js
+cruft-general-upstream (source): source-contains-svn-control-dir .svn
+cruft-general-upstream (source): source-contains-svn-conflict-file foo.r1352
+cruft-general-upstream (source): source-contains-svn-commit-file svn-commit.tmp
+cruft-general-upstream (source): source-contains-svk-commit-file svk-commit444.tmp
+cruft-general-upstream (source): source-contains-prebuilt-windows-binary fake-win32-bin.exe
+cruft-general-upstream (source): source-contains-prebuilt-silverlight-object fakesilverlight.XAC
+cruft-general-upstream (source): source-contains-prebuilt-python-object __pycache__/fake.cpython-38.pyc
+cruft-general-upstream (source): source-contains-prebuilt-python-object __pycache__/fake.cpython-38.opt-1.pyc
+cruft-general-upstream (source): source-contains-prebuilt-ms-help-file fake-help-file.chm
+cruft-general-upstream (source): source-contains-prebuilt-javascript-object fake.min.js
+cruft-general-upstream (source): source-contains-prebuilt-flash-project fakeflasourced.fla
+cruft-general-upstream (source): source-contains-prebuilt-flash-project fakefla.fla
+cruft-general-upstream (source): source-contains-prebuilt-flash-object fakeflash.swf
+cruft-general-upstream (source): source-contains-hg-tags-file .hgtags
+cruft-general-upstream (source): source-contains-hg-control-dir .hg
+cruft-general-upstream (source): source-contains-git-control-dir .git
+cruft-general-upstream (source): source-contains-cvs-control-dir CVS
+cruft-general-upstream (source): source-contains-cvs-conflict-copy .#foo.1.1
+cruft-general-upstream (source): source-contains-bzr-control-dir .bzr
+cruft-general-upstream (source): source-contains-bts-control-dir .be
+cruft-general-upstream (source): source-contains-arch-inventory-file .arch-inventory
+cruft-general-upstream (source): source-contains-arch-control-dir {arch}
+cruft-general-upstream (source): configure-generated-file-in-source config.cache
diff --git a/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/fill-values b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/fill-values
new file mode 100644
index 0000000..85fc8d9
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-gfdl-fp-sliding-win
+Description: Check for FP with GFDL invariants sections
diff --git a/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi
new file mode 100644
index 0000000..d9c1b54
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/pre-build b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/pre-build
new file mode 100755
index 0000000..5ee6c94
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/build-spec/pre-build
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+# Attempt to break the GFDL so that the "redeeming" part of the
+# license gets in the window /after/ the triggering part. c/cruft
+# handles this case correctly now and we don't want to mess that up
+# later.
+
+use strict;
+use warnings;
+
+# Keep in sync with checks/cruft
+use constant BLOCK_SIZE => 16_384;
+
+my ($rootdir) = @ARGV;
+my $dir = "$rootdir/debian/src";
+my $file = "$dir/good.texi";
+
+unless (-d $dir) {
+ mkdir $dir or die "mkdir $dir: $!";
+}
+
+my $slash = '/';
+my $gfdl_start = <<EOT ;
+Permission is granted to copy, distribute and${slash}or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation;
+EOT
+
+my $gfdl_end = <<EOT;
+with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+EOT
+
+my $fill = BLOCK_SIZE - length $gfdl_start;
+my $prefix = ' ' x ($fill - 1);
+
+open my $fd, '>', $file or die "open $file: $!";
+
+print {$fd} $prefix, "\n";
+print {$fd} $gfdl_start;
+print {$fd} $gfdl_end;
+
+close $fd or die "close $file: $!";
diff --git a/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/desc b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/desc
new file mode 100644
index 0000000..da0fce7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-gfdl-fp-sliding-win
+Test-Against: license-problem-gfdl-invariants
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/hints b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-fp-sliding-win/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/fill-values b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/fill-values
new file mode 100644
index 0000000..2c57a2a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-gfdl-invariants
+Description: Check for GFDL invariants sections
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
new file mode 100644
index 0000000..ba8175d
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
@@ -0,0 +1,12 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with the Front-Cover texts
+being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
+(a) below. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this @acronym{GNU} manual. Buying copies from the @acronym{FSF}
+supports it in developing @acronym{GNU} and promoting software
+freedom.''
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
new file mode 100644
index 0000000..a0a6634
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
@@ -0,0 +1,6 @@
+\section*{GNU Free Documentation License}\label{SEC:FDL}
+\subsection*{GNU Free Documentation License}\label{SEC:FDL}
+ \subsubsection{GNU Free Documentation License}\label{SEC:FDL}
+
+This document is distributed under the term of the GNU Free Documentation
+License. See, the attached file for copying conditions.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/empty.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
new file mode 100644
index 0000000..8e87b5f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
new file mode 100644
index 0000000..7ad0640
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation.
+
+A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
new file mode 100644
index 0000000..19560b4
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
@@ -0,0 +1,125 @@
+{\rtf1\ansi\ansicpg1252\cocoartf102{\fonttbl\f2\fnil Bitstream Charter;\f0\fnil Droid Sans Mono;\f1\fnil FreeSans;}
+{\colortbl;\red0\green0\blue200;\red0\green0\blue0;\red255\green0\blue0;}
+{{\NeXTGraphic iconoGimp3.tif \width1816 \height1309}\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\f0\fs24 \'AC}\f1\fs48 \b\cf1 \'A1Welcome to FisicaLab!\cf0\fs24\b0\cf2 \par
+\par
+\fs20\i Copyright (C) 2009, 2010, 2012 German A. Arias.\par
+ Permission is granted to copy, distribute and/or modify this document\par
+ under the terms of the GNU Free Documentation License, Version 1.3\par
+ or any later version published by the Free Software Foundation;\par
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\par
+ A copy of the license is included in the section entitled "GNU\par
+ Free Documentation License".\fs24\i0 \par
+\par
+\par
+FisicaLab is an educational application to solve physics problems. Its main objective is let the user to focus in physics concepts, leaving aside the mathematical details (FisicaLab take care of them). This allows the user to become familiar with the physical concepts without running the risk of getting lost in mathematical details. And so, when the user gain confidence in applying physical concepts, will be better prepared to solve the problems by hand (with pen and paper). FisicaLab is easy to use and very intuitive. However, in order to take advantage of all its features, we recommend you read first these help files.\par
+\par
+FisicaLab display to two windows, one named \b Modules and elements\b0 and other named \b Chalkboard\b0 . The first of these windows, contain all modules that can be used to solve problems. These modules are grouped by: kinematics, static, dynamics, ... (see image below). You can select one of these groups with the buttons at the top of the window, marked with (1) in the image. When you leave the mouse\rquote s cursor above one of these buttons, a label with the group name is displayed. The buttons marked with (2) let you select the system of units, SI or English. You can see the modules of the selected group inside the box marked with (3). The tabs marked with (4) let you select one of the available modules. The elements of the selected module are displayed inside the box marked with (5). This elements let you set the problems. Inside the box marked with (6) you can write the element\rquote s data (if any element is selected, this box will be empty).\f2 \par
+\par
+ \cf0\f0{{\NeXTGraphic FisicaLabPanel.jpg \width7680 \height10760}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\f1 The window named \b Chalkboard\b0 (see image below), have at the top two buttons, marked with (7). The button at the left let you solve the problem, and the other is to clean the chalkboard. The black box marked with (8) is the chalkboard, where you add the elements to set the problems. You need keep in mind, although you can\rquote t see, that the chalkboard is a grid formed with cells of 50x50 pixels. By default the chalkboard size is 26x18 cells. In \b Preferences\b0 panel you can change the size to a maximum of 100x100 cells (A greater size than the default could be useful for trusses problems). The text view marked with (9) is where FisicaLab show the answer and messages. The checkbox marked with (10) erase the content of the text view before show the next answer or message. If you want keep the previous content, unselect this checkbox. In this case you can add notes to identify the results of the different problems.\f2 \par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic FisicaLabPizarra.jpg \width8540 \height6680}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\par
+\f1\fs28\b Handling the elements\f2\fs24\b0 \par
+ \par
+\f1 To add elements at the chalkboard, do a click above the desired element. The mouse\rquote s cursor will become in an open hand, meaning this that we will add an element. Do a click above the chalkboard in the position where you want the element, the mouse\rquote s cursor will back at its original shape. Each time you add a new element, or select one different, a yellow square will be drawn around the current element. The data of the current element are displayed, for its edition, at panel \b Modules and elements\b0 . When you leave the mouse\rquote s cursor above one element in the chalkboard, a label with the element\rquote s data is displayed. In \b Preferences\b0 panel you can configure the font size of these labels.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic chalkboardProperties.jpg \width9020 \height4600}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+If you want move an element, click above it with the \b Control\b0 key pressed, the mouse\rquote s cursor will become in a close hand, meaning this that we are moving an element. Do click in the new position and the mouse\rquote s cursor will back at its original shape. In other hand, if you want delete an element, do click above it with the \b Shift\b0 key pressed.\par
+\par
+Keep in mind that FisicaLab don\rquote t let you combine elements from different modules. The elements in each module are enough to set a wide variety of problems.\f2 \par
+\par
+\par
+\f1\fs28\b Element data\f2\fs24\b0 \par
+\par
+\f1 When you select an element in the chalkboard, or add a new element, you will see a table at the bottom of the window \b Modules and elements\b0 . With a double click above any field of the second column, you can write the data. FisicaLab supports scientific notation, to use this use the letter E. For example, to write the number 3.45x10-5, write:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 3.45E-5\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All numerical data must be without spaces. For example, the following numbers are wrong:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc - 5.3\par
+7.8E - 8\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, FisicaLab can use many conversion factors. To use these, add the character @ before the conversion. If you have selected the SI system, FisicaLab assumes that all data are in meters, kg, seconds, etc. With the English system, FisicaLab assumes that all data are in feet, pounds, slugs, seconds, etc. (in the English system the mass must be in slugs). For example, if you want write an speed of 75 km/h, use:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 75 @ km/h\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Here, we have one space before and after the character @, but these are for clarity, and are not required. Each module has its how conversion factors, as you can see in the sections that deal about these. \par
+\par
+You can use letters or words to represent the unknown data. If, for example, the final velocity is an unknown data, you can represent this like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc fv\par
+finalv\par
+fvel\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql or any other combination. But, we recommend you use letters or words that are related with the unknown data. Also, the conversion factors can be used with the unknown data. For example, if the time is unknown, and you want this in minutes, write something like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc t @ min\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql The scientific notation can be used with the unknowns, adding the characters #E at the end of the name. For example, for a coefficient of thermal expansion, that is a small value:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc coefficient#E\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, this can be used with a conversion factor. For example, for a very long distance that we want in kilometers:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc distance#E @ km\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All the conversion factors are available in a contextual menu. After select the row of data where want add the factor, a right mouse click open a context menu with all available factors.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic menuContextual.jpg \width6120 \height5320}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+FisicaLab allows mathematical operations directly on the fields where you enter data. Can be carried out operations of addition (+), subtraction (-), multiplication (*) and division (/). Although not allowed to group operations by parentheses. It also provides some useful functions for certain calculations. These are listed below with its description:\par
+\par
+\b cos(ang)\tab \tab Calculates the cosine of the sexagesimal angle "ang".\par
+sin(ang)\tab \tab Calculates the sine of the sexagesimal angle "ang".\par
+tan(ang)\tab \tab Calculates the tangent of the sexagesimal angle "ang".\par
+sqrt(x)\tab \tab Calculates the square root of the number "x".\par
+hypot(a,b)\tab Calculates the hypotenuse of a right triangle whose legs are "a" and "b".\par
+leg(c,a)\tab \tab Calculates the leg of the right triangle whose hypotenuse is "c" and the\par
+\tab \tab \tab other leg is "a".\par
+rd(m1,m2,d)\tab Calculates the distance of the mass "m1" to the center of mass of the\par
+\tab \tab \tab system consisting of the masses "m1" and "m2", which are spaced a\par
+\tab \tab \tab distance "d".\b0 \par
+\par
+The numbers that are passed as parameters to these functions must have consistent units. For example, in the \b hypot()\b0 function both legs must be in the same units, whether centimeters, meters, inches, etc. These functions can be used in operations of addition, subtraction, multiplication and division. In these operations blank spaces are not allowed. Here are some examples:\par
+\par
+\pard\ql\b\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 8*cos(34)\par
+hypot(4,3)-2\par
+rd(3,6,40)*sin(30) @ cm\par
+15*8/hypot(13,8)\b0 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Once entered the operation, FisicaLab will do the calculation and will write the result in the entry. Note that is possible to apply conversion factors. Although these can also be applied after carrying out the calculation.\par
+\par
+The fields where you enter angles do not allow the operations and functions described above. This is because these fields have their own operations and functions. For example, FisicaLab allows write the angles as slopes (a/b), and automatically convert this to sexagesimal angles. What is very useful for problems of trusses.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic angulos.jpg \width5080 \height2660}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+For these fields are available two functions that calculates an angle from other relationships. These functions are:\par
+\par
+\b acos(a/c)\tab Calculates the sexagesimal angle whose cosine is the ratio "a/c".\par
+asin(b/c)\tab \tab Calculates the sexagesimal angle whose sine is the ratio "b/c".\b0 \par
+\par
+If an operation is entered incorrectly, for example if it contains spaces or contains a function with an incorrect number of parameters, FisicaLab will do nothing and will take that string as an unknown.\par
+\par
+\par
+\b Caution:\b0 \cf0\cf3 If, for example, you add a mass conversion factor in a time data, this will cause an error in the solution. And you will not get a message about this error.\cf0\f2\cf2 \par
+\par
+\par
+\f1\fs28\b How it works\f2\fs24\b0 \par
+\par
+\f1 FisicaLab work over the base of \i number of equations = number of unknown data\i0 . In general you don\rquote t need worry about this. But in some cases you will see the error \b "The system is undetermined"\b0 . This occurs when you write numeric data in a field that must be an unknown data. The examples show this cases.\f2 \par
+\par
+\par
+\f1\fs28\b Messages\f2\fs24\b0 \par
+\par
+\f1 FisicaLab write a wide variety of messages in the text view when a problem is wrong. However, you always will see a message about the calculation\rquote s status, as you can see in the following image:\par
+\par
+\pard\ql\f0\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0{{\NeXTGraphic cinema44.tif \width4760 \height800}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+The last line say \b "State = success"\b0 , meaning that the calculation was successful. Any other status different as \i success\i0 , mean that or the set problem don\rquote t have a solution, or an unexpected error occurred.\par
+\par
+} \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
new file mode 100644
index 0000000..b8e14bc
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
@@ -0,0 +1,56 @@
+<html lang="en">
+<head>
+<title>Some title</title>
+<!--
+Some verbatim test
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds.-->
+</head>
+<body>
+This is
+ <pre class="sp">
+</pre>
+Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+ <p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being &ldquo;Funding Free Software&rdquo;, the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+&ldquo;GNU Free Documentation License&rdquo;.
+
+ <p>(a) The Front-Cover Text is:
+
+ <p>A GNU Manual
+
+ <p>(b) The Back-Cover Text is:
+
+ <p>You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published raises funds.
+ <pre class="sp">
+
+</pre>
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
new file mode 100644
index 0000000..aa1d8e0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A Debian Manual'',
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
new file mode 100644
index 0000000..e649d17
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with the Invariant Sections being just "GNU
+Manifesto", with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section
+entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
new file mode 100644
index 0000000..8883cac
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
@@ -0,0 +1,25 @@
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
new file mode 100644
index 0000000..fd6ed32
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
@@ -0,0 +1,8 @@
+No ;after version
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts;
+A copy of the license is included in the section entitled
+license GNU Free Documentation License
+
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
new file mode 100644
index 0000000..2be8767
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
@@ -0,0 +1,12 @@
+Published by the Free Software Foundation,
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301, USA
+
+Copyright @copyright{} 2005, 2010, 2014-2016 Sergey Poznyakoff
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover and Back-Cover texts. A copy of
+the license is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
new file mode 100644
index 0000000..73f9c3a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
@@ -0,0 +1,16 @@
+#: C/index.docbook:65(legalnotice/para)
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the <citetitle>GNU Free Documentation License</citetitle>, "
+"Version 1.1 or any later version published by the Free Software Foundation "
+"with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A "
+"copy of the license is <link linkend=\"fdl\">included</link>."
+msgstr ""
+"Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free "
+"Documentation License (GFDL), Version 1.1 oder jeder späteren, von der Free "
+"Software Foundation veröffentlichten Version ohne unveränderbare Abschnitte "
+"sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt "
+"und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem "
+"<ulink type=\"help\" url=\"ghelp:fdl\">Link</ulink> oder in der mit diesem "
+"Handbuch gelieferten Datei COPYING-DOCS."
+
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
new file mode 100644
index 0000000..d3490c4
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
@@ -0,0 +1,9 @@
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License
+(FDL), either version 1.2 of the license,
+or (at your option) any later version published by the free software
+foundation (FSF); with no invariant sections,
+with no front-cover text, and with no back-cover texts
+A copy of the license is included in the
+section entitled "GNU Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
new file mode 100644
index 0000000..37449fb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
@@ -0,0 +1,6 @@
+ <para>This document documents free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ (&gpl;), either version 2 of the License, or (at your option) any
+ later version published by the &fsf;.
+ A copy of the license is included in <xref linkend="gpl"/>.
+ </para>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
new file mode 100644
index 0000000..d11e67b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
@@ -0,0 +1,9 @@
+# French translation for SANE backend options
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.1
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, with no Front-Cover Texts, and with
+# no Back-Cover.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
new file mode 100644
index 0000000..6ace5df
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
@@ -0,0 +1,12 @@
+<html>
+<!--- This is a old false positive -->
+<body>
+ <div class="legalnotice">
+ <p>Permission is granted to copy, distribute, and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in <a href="../appendix/fdl.html" title="Appendix&nbsp;G.&nbsp;GNU Free Documentation License">Appendix&nbsp;G, <i>GNU Free Documentation License</i></a>.
+ </p>
+ <p>The example programs in this book are free software; you can redistribute and/or modify them under the terms of the <span class="application">Python</span> license as published by the <span class="application">Python</span> Software Foundation. A copy of the license is included in <a href="../appendix/license.html" title="Appendix&nbsp;H.&nbsp;Python license">Appendix&nbsp;H, <i>Python license</i></a>.
+ </p>
+ </div>
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
new file mode 100644
index 0000000..5291fd3
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
@@ -0,0 +1,15 @@
+/* false positive from some package */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant\nSections, with no\nFront-Cover Texts,\nand with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
new file mode 100644
index 0000000..23aa0af
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
@@ -0,0 +1,15 @@
+/* false positive from findutils */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant Sections, with no Front-Cover Texts, and with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
new file mode 100644
index 0000000..ee27a4f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
@@ -0,0 +1,9 @@
+<P align="JUSTIFY" style="margin-bottom: 0cm"><FONT face="tahoma"><FONT size="2">
+Permission is granted to copy, distribute
+and/or modify this document under the terms
+of the GNU Free Documentation License, Version
+1.1 or any later version published by the
+Free Software Foundation; with the Invariant
+Sections being LIST THEIR TITLES, with the
+Front-Cover Texts being LIST, and with the
+Back-Cover Texts being LIST.</FONT></FONT></P> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
new file mode 100644
index 0000000..426c273
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
@@ -0,0 +1 @@
+<td>Permission is granted to copy, distribute and/or modify this document under the terms of the <b><a href="https://en.wikipedia.org/wiki/en:GNU_Free_Documentation_License" class="extiw" title="w:en:GNU Free Documentation License">GNU Free Documentation License</a></b>, Version 1.2 or any later version published by the <a href="https://en.wikipedia.org/wiki/en:Free_Software_Foundation" class="extiw" title="w:en:Free Software Foundation">Free Software Foundation</a>; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled <i><a href="/wiki/Commons:GNU_Free_Documentation_License,_version_1.2" title="Commons:GNU Free Documentation License, version 1.2">GNU Free Documentation License</a></i>.<span class="licensetpl_link" style="display:none;">http://www.gnu.org/copyleft/fdl.html</span><span class="licensetpl_short" style="display:none;">GFDL</span><span class="licensetpl_long" style="display:none;">GNU Free Documentation License</span><span class="licensetpl_link_req" style="display:none;">true</span><span class="licensetpl_attr_req" style="display:none;">true</span></td> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
new file mode 100644
index 0000000..fffca61
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
new file mode 100644
index 0000000..fc52ba9
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
@@ -0,0 +1,13 @@
+false positive found in license text:
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being @var{list their titles}, with the
+ Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
new file mode 100644
index 0000000..46cbd2f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the<br/> Invariant Sections<br /> being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
new file mode 100644
index 0000000..00e496c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
@@ -0,0 +1,7 @@
+% Permission is granted to copy, distribute and/or modify this document
+% under the terms of the GNU Free Documentation License, Version 1.1 or
+% any later version published by the Free Software Foundation; with no
+% Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+% Texts. A copy of the license is included in the section entitled
+% ``GNU Free Documentation License.''
+%
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
new file mode 100644
index 0000000..f01cd4c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<a class="link" href="#fdl-invariant">Invariant Sections</link>, with no <a class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <a class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</a>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
new file mode 100644
index 0000000..cc7a754
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
@@ -0,0 +1,14 @@
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+Copyright 2008, Free Software Foundation.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.1 or any later version published by the Free Software
+Foundation; with noInvariant Sections (*note fdl-invariant::),
+with no Front-Cover Texts (*note fdl-cover-texts::), and with no
+Back-Cover Texts (*note fdl-cover-texts::). A copy of the license
+is included in the section entitled "GNU Free Documentation
+License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
new file mode 100644
index 0000000..9e77873
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<link class="link" href="#fdl-invariant">Invariant Sections</link>, with no <link class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <link class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</link>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
new file mode 100644
index 0000000..07b3003
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
@@ -0,0 +1,42 @@
+#: C/fdl-appendix.xml:79(sect1/para)
+msgid ""
+"A <_:quote-1/> is a named appendix or a front-matter section of the <_:"
+"link-2/> that deals exclusively with the relationship of the publishers or "
+"authors of the Document to the Document's overall subject (or to related "
+"matters) and contains nothing that could fall directly within that overall "
+"subject. (For example, if the Document is in part a textbook of mathematics, "
+"a Secondary Section may not explain any mathematics.) The relationship could "
+"be a matter of historical connection with the subject or with related "
+"matters, or of legal, commercial, philosophical, ethical or political "
+"position regarding them."
+msgstr ""
+"Une <_:quote-1/> désigne une annexe au <_:link-2/>, ou toute information "
+"indiquant les rapports entre l'auteur ou l'éditeur et le sujet (ou tout "
+"autre sujet connexe) du Document, sans toutefois être en rapport direct avec "
+"le sujet lui-même (par exemple, si le Document est un manuel de "
+"mathématiques, une Section secondaire ne traitera d'aucune notion "
+"mathématique). Cette section peut contenir des informations relatives à "
+"l'historique du Document, des sources documentaires, des dispositions "
+"légales, commerciales, philosophiques, ou des positions éthiques ou "
+"politiques susceptibles de concerner le sujet traité."
+
+
+#: C/fdl-appendix.xml:632(blockquote/para)
+#, fuzzy
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU Free Documentation License, Version 1.1 or any later "
+"version published by the Free Software Foundation; with the <_:link-1/> being "
+"LIST THEIR TITLES, with the <_:link-2/> being LIST, and with the <_:link-3/> "
+"being LIST. A copy of the license is included in the section entitled <_:"
+"quote-4/>."
+msgstr ""
+"Es wird die Erlaubnis gegeben, dieses Dokument zu kopieren, verteilen und/"
+"oder zu verändern unter den Bedingungen der GNU Free Documentation License, "
+"Version 1.1 oder einer späteren, von der Free Software Foundation "
+"veröffentlichten Version; mit den <link linkend=\"fdl-invariant"
+"\">Unveränderlichen Abschnitten</link>. DEREN TITEL AUFGEZÄHLT sind, mit den "
+"<link linkend=\"fdl-cover-texts\">Vorderseitentexten</link>, die AUFGEZÄHLT "
+"sind, und mit den <link linkend=\"fdl-cover-texts\">Rückseitentexten</link>, "
+"die AUFGEZÄHLT sind. Eine Kopie dieser Lizenz ist in dem Abschnitt enthalten, "
+"der mit <quote>GNU Free Documentation License</quote> betitelt ist."
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
new file mode 100644
index 0000000..ae8c973
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
@@ -0,0 +1,102 @@
+Description: hyphen-used-as-minus-sign
+ This manual page seems to contain a hyphen where a minus sign was
+ intended.
+Author: Ruben Molina <rmolina@udea.edu.co>
+Forwarded: no
+Last-Update: 2011-06-25
+
+Index: kst-2.0.3/src/kst/kst.1.txt
+===================================================================
+--- kst-2.0.3.orig/src/kst/kst.1.txt
++++ kst-2.0.3/src/kst/kst.1.txt
+@@ -47,7 +47,7 @@ kst may be run entirely from within its
+ command line arguments are needed. kst has a powerful wizard for
+ easily setting up new plots.
+
+-In the second invocation, kst loads pre-saved plot specifications from the
++In the second invocation, kst loads pre\-saved plot specifications from the
+ file
+ .I kstfile
+ and optionally may override some of the settings in that file.
+@@ -64,7 +64,7 @@ plot all curves in separate plots
+ .TP
+ .B \-a\fR
+ average frames (simple mean) when plotting with
+-.B -s\fR.
++.B \-s\fR.
+ .TP
+ .B \-\-A4\fR
+ use A4 sized paper for printing. Requires
+@@ -90,7 +90,7 @@ and instead use
+ .B \-f\ STARTFRAME\fR
+ begin plotting at
+ .I STARTFRAME
+-frames into the data. Set to -1 to start at
++frames into the data. Set to \-1 to start at
+ .I NUMFRAMES
+ from the end of the data.
+ .TP
+@@ -112,7 +112,7 @@ use US Letter sized paper for printing.
+ .B \-n\ NUMFRAMES\fR
+ plot at most
+ .I NUMFRAMES
+-frames of data. Set to -1 to indicate all of the data.
++frames of data. Set to \-1 to indicate all of the data.
+ .TP
+ .B \-P\ PLOTNAME\fR
+ plot all plots in the plot named
+@@ -145,7 +145,7 @@ frames when plotting.
+ .B \-x\ FIELD\fR
+ use
+ .I FIELD
+-as the X-axis vector.
++as the X\-axis vector.
+ .TP
+ .B \-y\ FIELD\fR
+ plot
+@@ -158,30 +158,30 @@ plot
+ as an image.
+ .SH EXAMPLES
+ Plot all data in column 2 from data.dat.
+- kst data.dat -y 2
++ kst data.dat \-y 2
+
+ Same as above, except only read 20 lines, starting at line 10.
+- kst data.dat -f 10 -n 20 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 2
+
+ also read col 1. One plot per curve.
+- kst data.dat -f 10 -n 20 -y 1 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 1 \-y 2
+
+ Read col 1 from data2.dat and col 1 from data.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-y 1
+
+ Same as above, except read 40 lines starting at 30 in data2.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -f 30 -n 40 -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-f 30 \-n 40 \-y 1
+
+ Specify the X vector and error bars:
+ Plot x = col 1 and Y = col 2 and error flags = col 3 from data.dat
+- kst data.dat -x 1 -e 3 -y 2
++ kst data.dat \-x 1 \-e 3 \-y 2
+
+ Get the X vector from data1.dat, and the Y vector from data2.dat.
+- kst data1.dat -x 1 data2.dat -y 1
++ kst data1.dat \-x 1 data2.dat \-y 1
+
+ Placement:
+ Plot column 2 and column 3 in plot P1 and column 4 in plot P2
+- kst data.dat -P P1 -y 2 -y 3 -P P2 -y 4
++ kst data.dat \-P P1 \-y 2 \-y 3 \-P P2 \-y 4
+ .SH BUGS
+ Please report bugs to either the kst mailing list at
+ .I kst@kde.org
+@@ -198,6 +198,6 @@ Matthew Truch <matt@truch.net>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2 or
+ any later version published by the Free Software Foundation; with no
++Invariant Sections, with no Front\-Cover Texts, and with no Back\-Cover
+ Texts. A copy of the license is included in the `COPYING.DOC' file
+ as part of the kst distribution.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
new file mode 100644
index 0000000..0168da6
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
@@ -0,0 +1,6 @@
+<para>Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.2 or any later version published by the Free Software
+Foundation; with &FDLInvariantSections;, with &FDLFrontCoverText;, and
+with &FDLBackCoverText;. A copy of the license is included in <xref linkend="gnu-fdl"/>.</para>
+
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
new file mode 100644
index 0000000..96f3be3
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
@@ -0,0 +1,20 @@
+<!-- **********************************************************************
+ 4 more.docbook
+ 5 +++++++++++++++++++++++++++
+ 6 copyright : (C) 2000 - 2010
+ 7 XXXXXX
+ 8 XXXX
+ 9 e-mail : XXXX@XXXX
+ 10 web site : YYYYYY
+ 11 description : something
+ 12
+ 13 ***************************************************************************
+ 14 * Permission is granted to copy, distribute and/or modify this *
+ 15 * document under the terms of the GNU Free Documentation License, *
+ 16 * Version 1.1 or any later version published by the Free Software *
+ 17 * Foundation; with no Invariant Sections, no Front-Cover Texts and *
+ 18 * no Back-Cover Texts. A copy of the license is available on the *
+ 19 * GNU site http://www.gnu.org/licenses/fdl.html or by writing to: *
+ 20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, *
+ 21 * MA 02111-1307, USA. *
+ 22 *********************************************************************** --> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
new file mode 100644
index 0000000..d082bfc
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\href{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
new file mode 100644
index 0000000..e193a16
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\hyperlink{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
new file mode 100644
index 0000000..370ea73
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
@@ -0,0 +1,2 @@
+Copyright @sx(c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-\/Cover Texts, and no Back-\/Cover Texts. A copy of the license is included in the section entitled \char`\"{}GNU
+Free Documentation License\char`\"{}. \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
new file mode 100644
index 0000000..107d9fb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation
+License\url{http://www.gnu.org/copyleft/fdl.html}, Version 1.1 or any
+later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the chapter entitled "GNU
+Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
new file mode 100644
index 0000000..8a5eb6e
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
@@ -0,0 +1,7 @@
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation. There
+ are no invariant sections. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+ </para>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
new file mode 100644
index 0000000..56939ee
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
new file mode 100644
index 0000000..4e66d64
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
@@ -0,0 +1,19 @@
+Permission is granted to copy, distribute and/or modify the
+documentation for GNU LilyPond under the terms of the GNU Free
+Documentation License as published by the Free Software Foundation,
+either version 1.3, or (at your option) any later version; with no
+Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
+
+A copy of the license is contained in the file COPYING.FDL.
+
+The following exceptions apply:
+
+ * It does not apply to input files (contained in the
+ directory tree Documentation/snippets/); these are in
+ the public domain.
+
+ * It does not apply to any manual which explicitly states
+ another license.
+
+ * It does not apply to the MusicXML unit test suite,
+ which is licensed under the MIT license.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
new file mode 100644
index 0000000..dffaccc
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover, and no Back-Cover texts.
+A copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
new file mode 100644
index 0000000..e1fd5a2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
@@ -0,0 +1,28 @@
+<html>
+<body>
+<p>Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+</p>
+<div class="smallexample">
+<pre class="smallexample">Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to
+copy and modify this GNU manual. Buying copies from the FSF
+supports it in developing GNU and promoting software freedom.''
+</pre></div>
+
+<p>If the FSF does not publish this manual on paper, then omit the last
+sentence in (a) that talks about copies from GNU Press. If the FSF is
+not the copyright holder, then replace &lsquo;<samp>FSF</samp>&rsquo; with the appropriate
+name.
+</p>
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
new file mode 100644
index 0000000..633e758
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
@@ -0,0 +1,13 @@
+Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+
+@smallexample
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
new file mode 100644
index 0000000..b5c2685
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
@@ -0,0 +1,7 @@
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.1
+@c or any later version published by the Free Software Foundation;
+@c with no Invariant Sections, with no
+@c Front-Cover Texts, and with no Back-Cover Texts.
+@c A copy of the license is included in the section entitled ``GNU
+@c Free Documentation License''.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
new file mode 100644
index 0000000..a58e927
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
@@ -0,0 +1,13 @@
+ /*****************************************************************************/
+/** \mainpage Cal3D API Reference
+ * <center>
+ * <p>
+ * Permission is granted to copy, distribute and/or modify this document
+ * under the terms of the GNU Free Documentation License, Version 1.1 or
+ * any later version published by the Free Software Foundation;
+ * with no Invariant Sections, no Front-Cover Texts and
+ * no Back-Cover Texts;
+ * A copy of the license is included in the section entitled
+ * \link license "GNU Free Documentation License" \endlink .
+ * </center>
+ *****************************************************************************/
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
new file mode 100644
index 0000000..d9c1b54
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
new file mode 100644
index 0000000..dd888e2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; no Invariant Sections, no Front-Cover Texts,
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
new file mode 100644
index 0000000..747d2e0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<!-- Permission is granted to copy, distribute and/or modify this document -->
+<!-- under the terms of the GNU Free Documentation License, Version 1.3 or -->
+<!-- any later version published by the Free Software Foundation; with no -->
+<!-- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -->
+<!-- a copy of the license is included under /home -->
+</body>
+</html>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
new file mode 100644
index 0000000..f33dfcd
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
@@ -0,0 +1,7 @@
+.\" manual page for blaze, a command wrapper for BlazeBlogger
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.3 or
+.\" any later version published by the Free Software Foundation; with no
+.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+.\" A copy of the license is included below. \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
new file mode 100644
index 0000000..22ae575
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-
+Cover Texts and
+no Back-
+Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8 b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
new file mode 100644
index 0000000..5a4df93
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
@@ -0,0 +1,9 @@
+.\" Copyright (C) XXX
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.1
+.\" or any later version published by the Free Software Foundation;
+.\" with the Invariant Sections being no invariant sections, with the
+.\" Front-Cover Texts being no front-cover texts, and with the Back-Cover
+.\" Texts being no back-cover texts. A copy of the license is included with
+.\" this package in the file "COPYING.DOC." \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
new file mode 100644
index 0000000..3241276
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, Front-Cover or Back-Cover texts. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''. \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
new file mode 100644
index 0000000..950d936
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
@@ -0,0 +1,4 @@
+Permission is granted to copy, distribute and/or modify this document under \
+the terms of the GNU Free Documentation License, Version 1.1 or any later \
+version published by the Free Software Foundation; without any Invariant \
+Sections. A copy of the license is included in the file GFDL.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
new file mode 100644
index 0000000..96037ac
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
@@ -0,0 +1,8 @@
+Parted 2.13 version with strange grammar.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the no Invariant Sections, with the no Front-Cover Texts, and
+with no Back-Cover Texts. A copy of the license is included in the
+file, COPYING.DOC.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
new file mode 100644
index 0000000..f1d17a5
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
@@ -0,0 +1,15 @@
+<para>För att använda GNU Free Documentation License för ett dokument du har skrivit, inkludera en kopia av licensen [det engelska originalet] i dokumentet och placera följande copyrightklausul omedelbart efter titelsidan:</para>
+
+<blockquote>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with the <link linkend="fdl-invariant">Invariant Sections</link> being LIST
+ THEIR TITLES, with the <link linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST,
+ and with the <link linkend="fdl-cover-texts">Back-Cover
+ Texts</link> being LIST. A copy of the license is included in
+ the section entitled <quote>GNU Free Documentation
+ License</quote>.
+ </para>
+</blockquote>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
new file mode 100644
index 0000000..73e379b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
@@ -0,0 +1,7 @@
+1,6d0
+< Permission is granted to copy, distribute and/or modify this
+< document under the terms of the GNU Free Documentation License,
+< version 1.3 or any later version published by the Free Software
+< Foundation; with no Invariant Sections, no Front-Cover Texts and
+< no Back-Cover Texts. A copy of the license is included in the
+< section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
new file mode 100644
index 0000000..600653e
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
@@ -0,0 +1,18 @@
+*** make-stds.texi 2013-02-17 21:44:05.485250349 +0100
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
+***************
+*** 1,7 ****
+! @c Permission is granted to copy, distribute and/or modify this document
+! @c under the terms of the GNU Free Documentation License, Version 1.1
+! @c or any later version published by the Free Software Foundation;
+! @c with no Invariant Sections, with no
+! @c Front-Cover Texts, and with no Back-Cover Texts.
+! @c A copy of the license is included in the section entitled ``GNU
+! @c Free Documentation License''.
+--- 1,6 ----
+! Permission is granted to copy, distribute and/or modify this
+! document under the terms of the GNU Free Documentation License,
+! version 1.3 or any later version published by the Free Software
+! Foundation; with no Invariant Sections, no Front-Cover Texts and
+! no Back-Cover Texts. A copy of the license is included in the
+! section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
new file mode 100644
index 0000000..db6e4f9
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
@@ -0,0 +1,9 @@
+--- /dev/null 2013-05-15 23:18:30.206386135 +0200
++++ normal.texi 2012-12-20 21:23:22.829397718 +0100
+@@ -0,0 +1,6 @@
++Permission is granted to copy, distribute and/or modify this
++document under the terms of the GNU Free Documentation License,
++version 1.3 or any later version published by the Free Software
++Foundation; with no Invariant Sections, no Front-Cover Texts and
++no Back-Cover Texts. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
new file mode 100644
index 0000000..347adff
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
@@ -0,0 +1,9 @@
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
++++ /dev/null 2013-05-15 23:18:30.206386135 +0200
+@@ -1,6 +0,0 @@
+-Permission is granted to copy, distribute and/or modify this
+-document under the terms of the GNU Free Documentation License,
+-version 1.3 or any later version published by the Free Software
+-Foundation; with no Invariant Sections, no Front-Cover Texts and
+-no Back-Cover Texts. A copy of the license is included in the
+-section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
new file mode 100644
index 0000000..f64bfaf
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
@@ -0,0 +1,7 @@
+0a1,6
+> Permission is granted to copy, distribute and/or modify this
+> document under the terms of the GNU Free Documentation License,
+> version 1.3 or any later version published by the Free Software
+> Foundation; with no Invariant Sections, no Front-Cover Texts and
+> no Back-Cover Texts. A copy of the license is included in the
+> section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
new file mode 100644
index 0000000..2ab3103
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
@@ -0,0 +1,19 @@
+@copying
+This manual documents PHP mode version @value{version} for
+use with GNU Emacs.
+
+Copyright @copyright{} 2008 Aaron S. Hawley
+
+@quotation
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, and no
+Cover Texts. A copy of the license is included in the
+section entitled ``Copying This Manual.''
+
+A copy of the license is also available from the Free
+Software Foundation Web site at
+@url{http://www.gnu.org/licenses/fdl.html}.
+
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
new file mode 100644
index 0000000..8a0594a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
@@ -0,0 +1,7 @@
+Some user ident with pipe (|)
+ | Permission is granted to copy, distribute and/or modify this
+ | document under the terms of the GNU Free Documentation License,
+ | version 1.3 or any later version published by the Free Software
+ | Foundation; with no Invariant Sections, no Front-Cover Texts and
+ | no Back-Cover Texts. A copy of the license is included in the
+ | section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
new file mode 100644
index 0000000..58edd5b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no <quote>Back-Cover Texts</quote>.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
new file mode 100644
index 0000000..112c734
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
@@ -0,0 +1,9 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation;
+with no <quote>invariant sections</quote>, <quote>front-cover texts</quote> or <quote>back-cover texts</quote>,
+each as defined in the license.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
new file mode 100644
index 0000000..ff31741
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
@@ -0,0 +1,11 @@
+<div style="text-align: justify;"><span class="text">
+Permission is granted to copy, distribute
+and/or modify this document under the terms of the GNU Free
+Documentation License, Version 1.2 or any later version published by
+the Free Software Foundation; with no Invariant Sections Texts.</span><br>
+
+
+<span class="text">A copy of the license is included here below.</span><br>
+
+
+</div>
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
new file mode 100644
index 0000000..c803dc5
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
@@ -0,0 +1,9 @@
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'' and ``GNU Free
+Documentation License'', with no Front-Cover Texts, and with no
+Back-Cover Texts. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
new file mode 100644
index 0000000..e0a41a6
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
@@ -0,0 +1,8 @@
+#~ "Permission is granted to copy, distribute and/or modify this document "
+#~ "under the terms of the GNU Free Documentation License, Version 1.1 or any "
+#~ "later version published by the Free Software Foundation; with the <link "
+#~ "linkend=\"fdl-invariant\">Invariant Sections</link> being LIST THEIR "
+#~ "TITLES, with the <link linkend=\"fdl-cover-texts\">Front-Cover Texts</"
+#~ "link> being LIST, and with the <link linkend=\"fdl-cover-texts\">Back-"
+#~ "Cover Texts</link> being LIST. A copy of the license is included in the "
+#~ "section entitled <quote>GNU Free Documentation License</quote>." \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
new file mode 100644
index 0000000..9327024
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with no Front-Cover texts
+and with no Back-Cover Texts. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
new file mode 100644
index 0000000..b6e1240
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
@@ -0,0 +1,8 @@
+% note the end is not classical...
+% Copyright (c) 2002--2004 Philipp Lehman
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, version 1.2, with no
+% invariant sections, with no front-cover texts, and no back-cover texts. This
+% document is distributed in the hope that it will be useful, but without any
+% warranty; without even the implied warranty of merchantability or fitness for
+% a particular purpose.
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
new file mode 100644
index 0000000..d4b872c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
@@ -0,0 +1,6 @@
+Copyright © 2002--2004 Philipp Lehman
+
+Permission is granted to copy, distribute and\slash or modify this document under the terms of the GNU Free Documentation License, version 1.2, with no invariant sections, no front-cover texts, and no back-cover texts.
+
+A copy of the license is included in the appendix.
+
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
new file mode 100644
index 0000000..2043b26
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
@@ -0,0 +1,21 @@
+/*
+ * :permissions ("Permission is granted to copy, distribute and/or modify this document"
+ * "under the terms of the GNU Free Documentation License, Version 1.1"
+ * "or any later version published by the Free Software Foundation;"
+ * "with the Invariant Sections being:"
+ * ""
+ * " The GNU General Public License"
+ * " The GNU Free Documentation License"
+ * ""
+ * "with the Front-Cover Texts being"
+ * ""
+ * " (none),"
+ * ""
+ * "and with the Back-Cover Texts being"
+ * ""
+ * " (none)."
+ * ""
+ * "A copy of the license is included in the section entitled \"GNU"
+ * "Free Documentation License\"."))
+ *
+ */ \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
new file mode 100644
index 0000000..6f634a6
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the <ulink url="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
+License</ulink>, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
new file mode 100644
index 0000000..8463a59
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
@@ -0,0 +1,7 @@
+This is ok
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no Invariant Sections, Front-
+ or Back-Cover Texts. A copy of the license is included in the
+ section entitled "{GNU Free Documentation License}".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
new file mode 100644
index 0000000..8782eed
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Section, no Front-Cover Text and
+no Back-Cover Text. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1 b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
new file mode 100644
index 0000000..83a4acf
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
@@ -0,0 +1,12 @@
+.\"
+.\" Manpage example
+.\"
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
+Free Software\*(R", the Front-Cover texts being (a) (see below), and with
+the Back-Cover Texts being (b) (see below). A copy of the license is
+included in the \fIgfdl\fR\|(7) man page.
+.PP
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/eval/desc b/t/recipes/checks/cruft/cruft-gfdl-invariants/eval/desc
new file mode 100644
index 0000000..608adb5
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-gfdl-invariants
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-gfdl-invariants/eval/hints b/t/recipes/checks/cruft/cruft-gfdl-invariants/eval/hints
new file mode 100644
index 0000000..22e8bd3
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-gfdl-invariants/eval/hints
@@ -0,0 +1,37 @@
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: without any invariant sections [src/oldfalsepositive/parsewiki.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with the no invariant sections, with the no front-cover texts, and with no back-cover texts [src/oldfalsepositive/partedvariant.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with the invariant sections being no invariant sections, with the front-cover texts being no front-cover texts, and with the back-cover texts being no back-cover texts [src/oldfalsepositive/oidentd.8]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with the front-cover texts being (none) and with the back-cover texts being (none) [src/oldfalsepositive/tla.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with noinvariant sections , with no front-cover texts , and with no back-cover texts [src/oldfalsepositive/gnashfalsepositive.info]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/patch-c0.diff]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/make-stds.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/latexurl.tex]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/hyphen-used-as-minus-sign.diff]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/gfdltexcomments.tex]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/findutilsok.c]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/findsutilsokinlinenewline.c]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover [src/oldfalsepositive/comments.po]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts, and no back-cover texts [src/oldfalsepositive/texlive.tex]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover texts and with no back-cover texts [src/oldfalsepositive/texignu.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, with no front-cover text, and with no back-cover texts [src/oldfalsepositive/clisp.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, no front-cover, and no back-cover texts [src/oldfalsepositive/mailutils.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, no front-cover and back-cover texts [src/oldfalsepositive/cflow.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, front-cover or back-cover texts [src/oldfalsepositive/opentoken.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, front- or back-cover texts [src/oldfalsepositive/variantdictfold.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections, and no cover texts [src/oldfalsepositive/php-elisp.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections texts [src/oldfalsepositive/sdlbasic.html]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections [src/oldfalsepositive/lilypond.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections , with no front-cover texts , and with no back-cover texts [src/oldfalsepositive/gnashfalsepositive.xml]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections , with no front-cover texts , and with no back-cover texts [src/oldfalsepositive/gnashfalsepositive.html]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant sections , front-cover texts or back-cover texts , each as defined in the license [src/oldfalsepositive/quoteswithasdefined.xml]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no invariant section, no front-cover text and no back-cover text [src/oldfalsepositive/zeroisnotplural.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: with no front-cover texts, and with no back-cover texts [src/oldfalsepositive/smbc.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: there are no invariant sections [src/oldfalsepositive/libnss-pgsql.xml]
+cruft-gfdl-invariants (source): license-problem-gfdl-non-official-text invariant part is: no invariant sections, no front-cover texts, no back-cover texts [src/oldfalsepositive/normalbkchem.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants-empty [src/emptybis.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants-empty [src/empty.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants invariant part is: with the invariant sections being just gnu manifesto with no front-cover texts, and with no back-cover texts [src/invariant.txt]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants invariant part is: with the invariant sections being funding free software the front-cover texts being (a) (see below), and with the back-cover texts being (b) (see below) [src/frontback.html]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants invariant part is: with the invariant sections being (l gnu general public license (r and (l funding free software (r the front-cover texts being (a) (see below), and with the back-cover texts being (b) (see below) [src/oldmanpagesgfdlproblem.1]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants invariant part is: with no invariant sections, with the front-cover texts being a gnu manual, and with the back-cover texts as in (a) below [src/autoconf.texi]
+cruft-gfdl-invariants (source): license-problem-gfdl-invariants invariant part is: with no invariant sections, with the front-cover texts being a debian manual , and with the back-cover texts as in (a) below [src/frontback.texi]
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/install b/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/json.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/json.js
new file mode 100644
index 0000000..9a338bf
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/json.js
@@ -0,0 +1,529 @@
+/*
+ json.js
+ 2012-10-08
+
+ Public Domain
+
+ No warranty expressed or implied. Use at your own risk.
+
+ This file has been superceded by http://www.JSON.org/json2.js
+
+ See http://www.JSON.org/js.html
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+ This file adds these methods to JavaScript:
+
+ object.toJSONString(whitelist)
+ This method produce a JSON text from a JavaScript value.
+ It must not contain any cyclical references. Illegal values
+ will be excluded.
+
+ The default conversion for dates is to an ISO string. You can
+ add a toJSONString method to any date object to get a different
+ representation.
+
+ The object and array methods can take an optional whitelist
+ argument. A whitelist is an array of strings. If it is provided,
+ keys in objects not found in the whitelist are excluded.
+
+ string.parseJSON(filter)
+ This method parses a JSON text to produce an object or
+ array. It can throw a SyntaxError exception.
+
+ The optional filter parameter is a function which can filter and
+ transform the results. It receives each of the keys and values, and
+ its return value is used instead of the original value. If it
+ returns what it received, then structure is not modified. If it
+ returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. If a key contains the string 'date' then
+ // convert the value to a date.
+
+ myData = text.parseJSON(function (key, value) {
+ return key.indexOf('date') >= 0 ? new Date(value) : value;
+ });
+
+ This file will break programs with improper for..in loops. See
+ http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true, unparam: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, parseJSON, prototype, push, replace, slice,
+ stringify, test, toJSON, toJSONString, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' : gap ?
+ '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' : gap ?
+ '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+ '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+
+// Augment the basic prototypes if they have not already been augmented.
+// These forms are obsolete. It is recommended that JSON.stringify and
+// JSON.parse be used instead.
+
+ if (!Object.prototype.toJSONString) {
+ Object.prototype.toJSONString = function (filter) {
+ return JSON.stringify(this, filter);
+ };
+ Object.prototype.parseJSON = function (filter) {
+ return JSON.parse(this, filter);
+ };
+ }
+}());
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/fill-values b/t/recipes/checks/cruft/cruft-minified-js/build-spec/fill-values
new file mode 100644
index 0000000..5dd0aba
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-minified-js
+Description: Misc errors related to minified javascript
+Extra-Build-Depends: uglifyjs
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/README b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/README
new file mode 100644
index 0000000..914d120
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/README
@@ -0,0 +1 @@
+Here we test deploy java \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js
new file mode 100644
index 0000000..aa511b3
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js
@@ -0,0 +1,19 @@
+(function(modules, cache, entry) {
+ req(entry);
+ function req(name) {
+ if (cache[name]) return cache[name].exports;
+ var m = cache[name] = {exports: {}};
+ modules[name][0].call(m.exports, modRequire, m, m.exports, window);
+ return m.exports;
+ function modRequire(alias) {
+ var id = modules[name][1][alias];
+ if (!id) throw new Error("Cannot find module " + alias);
+ return req(id);
+ }
+ }
+})({0: [function(require,module,exports,global){
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
+}, {}],}, {}, 0);
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.js
new file mode 100644
index 0000000..2cb2fb3
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/deployJava/deployJava.js
@@ -0,0 +1,3 @@
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js
new file mode 100644
index 0000000..4a35a5a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js
@@ -0,0 +1 @@
+//the source
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js
new file mode 100644
index 0000000..e1a0655
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js
new file mode 100644
index 0000000..620611a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js
@@ -0,0 +1 @@
+//the source see zoneminder
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js
new file mode 100644
index 0000000..e1a0655
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js
new file mode 100644
index 0000000..3fc1fc2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js
@@ -0,0 +1 @@
+// this catch missing . in regexp \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js
new file mode 100644
index 0000000..0668aa7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js
@@ -0,0 +1,8 @@
+/*
+CSS Browser Selector v0.4.0 (Nov 02, 2010)
+Rafael Lima (http://rafael.adm.br)
+http://rafael.adm.br/css_browser_selector
+License: http://creativecommons.org/licenses/by/2.5/
+Contributors: http://rafael.adm.br/css_browser_selector#contributors
+*/
+function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js
new file mode 100644
index 0000000..a1c3620
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js
@@ -0,0 +1 @@
+//the source found for instance in mono
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js
new file mode 100644
index 0000000..fc9eb65
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; var second='X';
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js
new file mode 100644
index 0000000..a0a67e8
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js
@@ -0,0 +1,3 @@
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt
new file mode 100644
index 0000000..a701c9f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt
@@ -0,0 +1 @@
+Here we test if source is available \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js
new file mode 100644
index 0000000..7ab1dda
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js
@@ -0,0 +1,104 @@
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js
new file mode 100644
index 0000000..d2f68d3
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js
@@ -0,0 +1,2 @@
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js
new file mode 100644
index 0000000..66222ee
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js
@@ -0,0 +1,30 @@
+/* long line in fake license */
+/*
+ * LICENSE
+ *
+ * POCKET MARKS
+ *
+ * Notwithstanding the permitted uses of the Software (as defined below) pursuant to the license set forth below, "Pocket," "Read It Later" and the Pocket icon and logos (collectively, the “Pocket Marksâ€) are registered and common law trademarks of Read It Later, Inc. This means that, while you have considerable freedom to redistribute and modify the Software, there are tight restrictions on your ability to use the Pocket Marks. This license does not grant you any rights to use the Pocket Marks except as they are embodied in the Software.
+ *
+ * ---
+ *
+ * SOFTWARE
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README
new file mode 100644
index 0000000..2db2f0f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README
@@ -0,0 +1 @@
+exercice missing dir in relative dir \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js
new file mode 100644
index 0000000..3e0e3c2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js
@@ -0,0 +1,2 @@
+// fake min.js
+toto='1'; \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js
new file mode 100644
index 0000000..772fe5c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js
@@ -0,0 +1,2 @@
+// fake source
+toto='1'; \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js
new file mode 100644
index 0000000..077c6f7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js
@@ -0,0 +1,4 @@
+var search_index = [
+'ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION',];
+var search_urls = [
+'config.html#allegro_config','config.html#allegro_config_section'];
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html
new file mode 100644
index 0000000..7267c7f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html
@@ -0,0 +1,7 @@
+<html>
+<header>
+<script>
+(c)?b<=c:true)}function d(c,b)
+</script>
+</header>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js
new file mode 100644
index 0000000..80e795f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js
@@ -0,0 +1,3 @@
+/* simulate a long line by with only one ;*/
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js
new file mode 100644
index 0000000..8e17061
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js
@@ -0,0 +1 @@
+// this one catch lite suffix \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js
new file mode 100644
index 0000000..d47653c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js
@@ -0,0 +1,3 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js
new file mode 100644
index 0000000..4a35a5a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js
@@ -0,0 +1 @@
+//the source
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js
new file mode 100644
index 0000000..cb851fb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js
@@ -0,0 +1 @@
+# the source
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/cruft/cruft-minified-js/build-spec/pre-build b/t/recipes/checks/cruft/cruft-minified-js/build-spec/pre-build
new file mode 100755
index 0000000..13f30ca
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/build-spec/pre-build
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+jsdir="$1/usr/share/javascript/"
+srcdir="$1"
+json="$srcdir/debian/missing-sources/json.js"
+uglyjson="$jsdir/json/json.min.js"
+
+mkdir -p "$jsdir"
+mkdir -p "$jsdir/minwithoutsource"
+mkdir -p "$jsdir/jswithoutminext"
+mkdir -p "$jsdir/json"
+mkdir -p "$jsdir/sourced"
+mkdir -p "$jsdir/sourced_variant"
+mkdir -p "$jsdir/jswithoutminextwithoutsource/"
+mkdir -p "$srcdir/src/js"
+mkdir -p "$srcdir/build/js"
+
+# create a js file
+uglifyjs -o "$uglyjson" "$json"
+# fake install of minified js without min.js
+cp "$uglyjson" "$jsdir/jswithoutminext/json.js"
+# fake not sourced
+cp "$uglyjson" "$jsdir/minwithoutsource/notsourced.min.js"
+cp "$uglyjson" "$jsdir/minwithoutsource/subdir.min.js"
+# fake install but not sourced
+cp "$uglyjson" "$jsdir/jswithoutminextwithoutsource/jsonnotsourced.js"
+# fake source and min alone
+cp "$uglyjson" "$jsdir/sourced/sourced.min.js"
+cp "$json" "$jsdir/sourced/sourced.js"
+cp "$uglyjson" "$jsdir/sourced_variant/sourced.min.js"
+cp "$json" "$jsdir/sourced_variant/sourced_orig.js"
+# sourced in parent's parent
+cp "$uglyjson" "$srcdir/build/js/foo.min.js"
+cp "$json" "$srcdir/src/js/foo.js"
+
+cat > $srcdir/src/js/foo.html <<EOF
+<html>
+<head>
+<script>
+// Copyright someone
+EOF
+cat "$uglyjson" >> $srcdir/src/js/foo.html
+cat >> $srcdir/src/js/foo.html <<EOF
+</script>
+</head>
+</html>
+EOF
diff --git a/t/recipes/checks/cruft/cruft-minified-js/eval/desc b/t/recipes/checks/cruft/cruft-minified-js/eval/desc
new file mode 100644
index 0000000..190a0e8
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-minified-js
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-minified-js/eval/hints b/t/recipes/checks/cruft/cruft-minified-js/eval/hints
new file mode 100644
index 0000000..09582a1
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/eval/hints
@@ -0,0 +1,3 @@
+cruft-minified-js (source): source-contains-prebuilt-pandoc-documentation [oldfalsepositives/pandoc/]
+cruft-minified-js (source): source-contains-browserified-javascript code fragment:CODE
+cruft-minified-js (source): embedded-script-includes-copyright-statement extract of copyright statement: COPYRIGHT
diff --git a/t/recipes/checks/cruft/cruft-minified-js/eval/post-test b/t/recipes/checks/cruft/cruft-minified-js/eval/post-test
new file mode 100644
index 0000000..f1d2602
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-minified-js/eval/post-test
@@ -0,0 +1,4 @@
+s/mean line length is about [0-9]+ characters$/mean line is about NUMBER characters/
+s/line [0-9]+ is [0-9]+ characters long \(>[0-9]+\)$/line POSITION is LENGTH characters long (>CUTOFF)/
+s/code fragment:.*$/code fragment:CODE/
+s/extract of copyright statement:.*/extract of copyright statement: COPYRIGHT/
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/debian/copyright b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/debian/copyright
new file mode 100644
index 0000000..f2134e7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/debian/copyright
@@ -0,0 +1,25 @@
+(False positive; debian/copyright should be ignored)
+
+Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works. However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/fill-values b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/fill-values
new file mode 100644
index 0000000..ff7ae4d
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-non-free-rfc
+Description: Check for the rfc
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/bcp78.txt b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/bcp78.txt
new file mode 100644
index 0000000..066de8b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/bcp78.txt
@@ -0,0 +1,3 @@
+This document is subject to the rights, licenses and restrictions
+contained in BCP 78, and except as set forth therein, the authors
+retain all their rights. \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc-3492.txt b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc-3492.txt
new file mode 100644
index 0000000..6ab73b0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc-3492.txt
@@ -0,0 +1,23 @@
+Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works. However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc.txt b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc.txt
new file mode 100644
index 0000000..6ab73b0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/build-spec/orig/src/rfc.txt
@@ -0,0 +1,23 @@
+Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works. However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/eval/desc b/t/recipes/checks/cruft/cruft-non-free-rfc/eval/desc
new file mode 100644
index 0000000..cdb70b7
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-non-free-rfc
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-non-free-rfc/eval/hints b/t/recipes/checks/cruft/cruft-non-free-rfc/eval/hints
new file mode 100644
index 0000000..9a2bd8a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-rfc/eval/hints
@@ -0,0 +1,2 @@
+cruft-non-free-rfc (source): license-problem-non-free-RFC-BCP78 [src/bcp78.txt]
+cruft-non-free-rfc (source): license-problem-non-free-RFC [src/rfc.txt]
diff --git a/t/recipes/checks/cruft/cruft-non-free-utf/build-spec/fill-values b/t/recipes/checks/cruft/cruft-non-free-utf/build-spec/fill-values
new file mode 100644
index 0000000..2f3af48
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-utf/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-non-free-utf
+Description: Check for non free utf
diff --git a/t/recipes/checks/cruft/cruft-non-free-utf/build-spec/orig/src/bad.c b/t/recipes/checks/cruft/cruft-non-free-utf/build-spec/orig/src/bad.c
new file mode 100644
index 0000000..753e63a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-utf/build-spec/orig/src/bad.c
@@ -0,0 +1,18 @@
+/* ---------------------------------------------------------------------
+
+ Note A.
+ The fall-through switches in UTF-8 reading code save a
+ temp variable, some decrements & conditionals. The switches
+ are equivalent to the following loop:
+ {
+ int tmpBytesToRead = extraBytesToRead+1;
+ do {
+ ch += *source++;
+ --tmpBytesToRead;
+ if (tmpBytesToRead) ch <<= 6;
+ } while (tmpBytesToRead > 0);
+ }
+ In UTF-8 writing code, the switches on "bytesToWrite" are
+ similarly unrolled loops.
+
+ --------------------------------------------------------------------- */
diff --git a/t/recipes/checks/cruft/cruft-non-free-utf/eval/desc b/t/recipes/checks/cruft/cruft-non-free-utf/eval/desc
new file mode 100644
index 0000000..d1fe3bd
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-utf/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-non-free-utf
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-non-free-utf/eval/hints b/t/recipes/checks/cruft/cruft-non-free-utf/eval/hints
new file mode 100644
index 0000000..0df295b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-non-free-utf/eval/hints
@@ -0,0 +1 @@
+cruft-non-free-utf (source): license-problem-convert-utf-code [src/bad.c]
diff --git a/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/fill-values b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/fill-values
new file mode 100644
index 0000000..1b275b2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-nvidia-intellectual
+Description: Check for the Nvidia intellectual license
diff --git a/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv.c b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv.c
new file mode 100644
index 0000000..2014f17
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv.c
@@ -0,0 +1,12 @@
+/*
+ * Acme Corporation and its licensors retain all intellectual property and
+ * proprietary rights in and to this software and related documentation.
+ * Any use, reproduction, disclosure, or distribution of this software
+ * and related documentation without an express license agreement from
+ * Acme Corporation is strictly prohibited.
+ *
+ * Please refer to the applicable Acme end user license agreement (EULA)
+ * associated with this source code for terms and conditions that govern
+ * your use of this Acme software.
+ *
+ */
diff --git a/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv2.c b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv2.c
new file mode 100644
index 0000000..cbabced
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/badcv2.c
@@ -0,0 +1,10 @@
+/*
+ * Copyright 1993-2010 NVIDIA Corporation. All rights reserved.
+ *
+ * NVIDIA Corporation and its licensors retain all intellectual
+ * property and proprietary rights in and to this software and
+ * related documentation and any modifications thereto.
+ * Any use, reproduction, disclosure, or distribution of this
+ * software and related documentation without an express license
+ * agreement from NVIDIA Corporation is strictly prohibited.
+ */
diff --git a/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/falsepositive/allmankind.c b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/falsepositive/allmankind.c
new file mode 100644
index 0000000..a2873ef
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-nvidia-intellectual/build-spec/orig/src/falsepositive/allmankind.c
@@ -0,0 +1,12 @@
+/*
+ * The technologies, software, hardware, designs, drawings, scheumatics, board
+ * layouts and/or artwork, concepts, methodologies (including the use of all
+ * of these, and that which is derived from the use of all of these), all other
+ * intellectual properties contained herein, and all intellectual property
+ * rights have been and shall continue to be expressly for the benefit of all
+ * mankind, and are perpetually placed in the public domain, and may be used,
+ * copied, and/or modified by anyone, in any manner, for any legal purpose,
+ * without restriction.
+ *
+ * This module written by Stephen Underwood.
+ */
diff --git a/t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/desc b/t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/desc
new file mode 100644
index 0000000..7a959d5
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-nvidia-intellectual
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/hints b/t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/hints
new file mode 100644
index 0000000..8dbeba6
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-nvidia-intellectual/eval/hints
@@ -0,0 +1,2 @@
+cruft-nvidia-intellectual (source): license-problem-nvidia-intellectual [src/badcv2.c]
+cruft-nvidia-intellectual (source): license-problem-nvidia-intellectual [src/badcv.c]
diff --git a/t/recipes/checks/cruft/cruft-python/build-spec/debian/missing-sources/fake.py b/t/recipes/checks/cruft/cruft-python/build-spec/debian/missing-sources/fake.py
new file mode 100644
index 0000000..6e883de
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/build-spec/debian/missing-sources/fake.py
@@ -0,0 +1 @@
+# a fake module source \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-python/build-spec/debian/pycompat b/t/recipes/checks/cruft/cruft-python/build-spec/debian/pycompat
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/build-spec/debian/pycompat
diff --git a/t/recipes/checks/cruft/cruft-python/build-spec/debian/pyversions b/t/recipes/checks/cruft/cruft-python/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/cruft/cruft-python/build-spec/fill-values b/t/recipes/checks/cruft/cruft-python/build-spec/fill-values
new file mode 100644
index 0000000..37c65d1
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-python
+Description: Misc errors related to Python
+Extra-Build-Depends: python
diff --git a/t/recipes/checks/cruft/cruft-python/build-spec/pre-build b/t/recipes/checks/cruft/cruft-python/build-spec/pre-build
new file mode 100755
index 0000000..a5ee0a0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/build-spec/pre-build
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+fake="$dir/debian/missing-sources/fake.py"
+
+cp "$fake" "$dir"
+echo 'import fake' > "${dir}/main.py"
+unset PYTHONDONTWRITEBYTECODE
+PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null
+PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null
+# now remove source
+rm -f "${dir}"/main.py
+rm -f "${dir}"/fake.py
+
+cp "$fake" "$dir/fake2.py"
+echo 'import fake2' > "${dir}/main.py"
+unset PYTHONDONTWRITEBYTECODE
+PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null
+PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null
+# now remove source
+rm -f "${dir}"/main.py
+rm -f "${dir}"/fake2.py
+
+
+
+
+
diff --git a/t/recipes/checks/cruft/cruft-python/eval/desc b/t/recipes/checks/cruft/cruft-python/eval/desc
new file mode 100644
index 0000000..b3ba42b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-python
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-python/eval/hints b/t/recipes/checks/cruft/cruft-python/eval/hints
new file mode 100644
index 0000000..6817461
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-python/eval/hints
@@ -0,0 +1,6 @@
+cruft-python (source): source-is-missing fake2.pyo
+cruft-python (source): source-is-missing fake2.pyc
+cruft-python (source): source-contains-prebuilt-python-object fake2.pyo
+cruft-python (source): source-contains-prebuilt-python-object fake2.pyc
+cruft-python (source): source-contains-prebuilt-python-object fake.pyo
+cruft-python (source): source-contains-prebuilt-python-object fake.pyc
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/fill-values b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/fill-values
new file mode 100644
index 0000000..23de91f
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-sphinx-documentation
+Description: Detect sphinx documentation
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/hello.c b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/hello.c
new file mode 100644
index 0000000..ff2cb8d
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/hello.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+void hello() {
+ printf("hello");
+}
+
+int main()
+{
+ hello();
+} \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/Makefile b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/Makefile
new file mode 100644
index 0000000..eb990fe
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/Makefile
@@ -0,0 +1,177 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = _build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " singlehtml to make a single large HTML file"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " devhelp to make HTML files and a Devhelp project"
+ @echo " epub to make an epub"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
+ @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+ @echo " text to make text files"
+ @echo " man to make manual pages"
+ @echo " texinfo to make Texinfo files"
+ @echo " info to make Texinfo files and run them through makeinfo"
+ @echo " gettext to make PO message catalogs"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " xml to make Docutils-native XML files"
+ @echo " pseudoxml to make pseudoxml-XML files for display purposes"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+ rm -rf $(BUILDDIR)/*
+
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+ @echo
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/hello.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/hello.qhc"
+
+devhelp:
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+ @echo
+ @echo "Build finished."
+ @echo "To view the help file:"
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/hello"
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/hello"
+ @echo "# devhelp"
+
+epub:
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+ @echo
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
+ "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through pdflatex..."
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through platex and dvipdfmx..."
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+ @echo
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+ @echo
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo
+ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+ @echo "Run \`make' in that directory to run these through makeinfo" \
+ "(use \`make info' here to do that automatically)."
+
+info:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo "Running Texinfo files through makeinfo..."
+ make -C $(BUILDDIR)/texinfo info
+ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+ @echo
+ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
+
+xml:
+ $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+ @echo
+ @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml:
+ $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+ @echo
+ @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/environment.pickle b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/environment.pickle
new file mode 100644
index 0000000..1d38a66
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/environment.pickle
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/index.doctree b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/index.doctree
new file mode 100644
index 0000000..c28b1f1
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/doctrees/index.doctree
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/.buildinfo b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/.buildinfo
new file mode 100644
index 0000000..3a9d78b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 469b2f45b3fea98e5b770516c213cd8d
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_sources/index.txt b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_sources/index.txt
new file mode 100644
index 0000000..778459b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_sources/index.txt
@@ -0,0 +1,22 @@
+.. hello documentation master file, created by
+ sphinx-quickstart on Mon Mar 31 19:57:16 2014.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+Welcome to hello's documentation!
+=================================
+
+Contents:
+
+.. toctree::
+ :maxdepth: 2
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/ajax-loader.gif b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/ajax-loader.gif
new file mode 100644
index 0000000..61faf8c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/ajax-loader.gif
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/basic.css b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/basic.css
new file mode 100644
index 0000000..967e36c
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/basic.css
@@ -0,0 +1,537 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+ width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+ width: 30px;
+}
+
+img {
+ border: 0;
+ max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+ width: 100%;
+}
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+div.modindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+ visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.field-list ul {
+ padding-left: 1em;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px 7px 0 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px 7px 0 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+div.admonition dl {
+ margin-bottom: 0;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+ border: 0;
+ border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 5px;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+ border: 0 !important;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px;
+}
+
+table.citation td {
+ border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+ list-style: decimal;
+}
+
+ol.loweralpha {
+ list-style: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style: lower-roman;
+}
+
+ol.upperroman {
+ list-style: upper-roman;
+}
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+dt:target, .highlighted {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+ font-family: sans-serif;
+}
+
+.accelerator {
+ text-decoration: underline;
+}
+
+.classifier {
+ font-style: oblique;
+}
+
+abbr, acronym {
+ border-bottom: dotted 1px;
+ cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden; /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+ padding: 5px 0px;
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ margin-left: 0.5em;
+}
+
+table.highlighttable td {
+ padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+tt.descclassname {
+ background-color: transparent;
+}
+
+tt.xref, a tt {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ background-color: transparent;
+}
+
+.viewcode-link {
+ float: right;
+}
+
+.viewcode-back {
+ float: right;
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ margin: -1px -10px;
+ padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+} \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-bright.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-bright.png
new file mode 100644
index 0000000..551517b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-bright.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-close.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-close.png
new file mode 100644
index 0000000..09b54be
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment-close.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment.png
new file mode 100644
index 0000000..92feb52
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/comment.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/default.css b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/default.css
new file mode 100644
index 0000000..5f1399a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/default.css
@@ -0,0 +1,256 @@
+/*
+ * default.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- default theme.
+ *
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+ font-family: sans-serif;
+ font-size: 100%;
+ background-color: #11303d;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+div.document {
+ background-color: #1c4e63;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+div.body {
+ background-color: #ffffff;
+ color: #000000;
+ padding: 0 20px 30px 20px;
+}
+
+div.footer {
+ color: #ffffff;
+ width: 100%;
+ padding: 9px 0 9px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #ffffff;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #133f52;
+ line-height: 30px;
+ color: #ffffff;
+}
+
+div.related a {
+ color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: #ffffff;
+ font-size: 1.4em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+ color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: #ffffff;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 5px 0 0 0;
+ padding: 0;
+}
+
+div.sphinxsidebar p {
+ color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ padding: 0;
+ color: #ffffff;
+}
+
+div.sphinxsidebar a {
+ color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: 'Trebuchet MS', sans-serif;
+ background-color: #f2f2f2;
+ font-weight: normal;
+ color: #20435c;
+ border-bottom: 1px solid #ccc;
+ margin: 20px -20px 10px -20px;
+ padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li {
+ text-align: justify;
+ line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+ display: inline;
+}
+
+div.admonition p {
+ margin-bottom: 5px;
+}
+
+div.admonition pre {
+ margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+ margin-bottom: 5px;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.topic {
+ background-color: #eee;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+p.admonition-title {
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+pre {
+ padding: 5px;
+ background-color: #eeffcc;
+ color: #333333;
+ line-height: 120%;
+ border: 1px solid #ac9;
+ border-left: none;
+ border-right: none;
+}
+
+tt {
+ background-color: #ecf0f3;
+ padding: 0 1px 0 1px;
+ font-size: 0.95em;
+}
+
+th {
+ background-color: #ede;
+}
+
+.warning tt {
+ background: #efc2c2;
+}
+
+.note tt {
+ background: #d6d6d6;
+}
+
+.viewcode-back {
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ background-color: #f4debf;
+ border-top: 1px solid #ac9;
+ border-bottom: 1px solid #ac9;
+} \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/doctools.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/doctools.js
new file mode 100644
index 0000000..c5455c9
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/doctools.js
@@ -0,0 +1,238 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+ "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+ "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+ return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s == 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node) {
+ if (node.nodeType == 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+ var span = document.createElement("span");
+ span.className = className;
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+ document.createTextNode(val.substr(pos + text.length)),
+ node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ }
+ }
+ else if (!jQuery(node).is("button, select, textarea")) {
+ jQuery.each(node.childNodes, function() {
+ highlight(this);
+ });
+ }
+ }
+ return this.each(function() {
+ highlight(this);
+ });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initIndexTable();
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated == 'undefined')
+ return string;
+ return (typeof translated == 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated == 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+ this.LOCALE = catalog.locale;
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ $('div[id] > :header:first').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this headline')).
+ appendTo(this);
+ });
+ $('dt[id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash && $.browser.mozilla)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ if (!body.length) {
+ body = $('body');
+ }
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ }, 10);
+ $('<p class="highlight-link"><a href="javascript:Documentation.' +
+ 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+ .appendTo($('#searchbox'));
+ }
+ },
+
+ /**
+ * init the domain index toggle buttons
+ */
+ initIndexTable : function() {
+ var togglers = $('img.toggler').click(function() {
+ var src = $(this).attr('src');
+ var idnum = $(this).attr('id').substr(7);
+ $('tr.cg-' + idnum).toggle();
+ if (src.substr(-9) == 'minus.png')
+ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+ else
+ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+ }).css('display', '');
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+ togglers.click();
+ }
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords : function() {
+ $('#searchbox .highlight-link').fadeOut(300);
+ $('span.highlighted').removeClass('highlighted');
+ },
+
+ /**
+ * make the url absolute
+ */
+ makeURL : function(relativeURL) {
+ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+ },
+
+ /**
+ * get the current relative url
+ */
+ getCurrentURL : function() {
+ var path = document.location.pathname;
+ var parts = path.split(/\//);
+ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+ if (this == '..')
+ parts.pop();
+ });
+ var url = parts.join('/');
+ return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+ }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+ Documentation.init();
+});
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down-pressed.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down-pressed.png
new file mode 100644
index 0000000..6f7ad78
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down-pressed.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down.png
new file mode 100644
index 0000000..3003a88
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/down.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/file.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/file.png
new file mode 100644
index 0000000..d18082e
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/file.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/jquery.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/jquery.js
new file mode 100644
index 0000000..25e1e33
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/jquery.js
@@ -0,0 +1,9404 @@
+/*!
+ * jQuery JavaScript Library v1.7.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Aug 1 23:20:30 BRT 2013
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+ navigator = window.navigator,
+ location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Matches dashed string for camelizing
+ rdashAlpha = /-([a-z]|[0-9])/ig,
+ rmsPrefix = /^-ms-/,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return ( letter + "" ).toUpperCase();
+ },
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = quickExpr.exec( selector );
+ }
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = ( context ? context.ownerDocument || context : document );
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.7.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.add( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ i = +i;
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // Either a released hold or an DOMready/load event and not yet ready
+ if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.fireWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).off( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyList ) {
+ return;
+ }
+
+ readyList = jQuery.Callbacks( "once memory" );
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+
+ }
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+ var xml, tmp;
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction( object );
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type( array );
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array, i ) {
+ var len;
+
+ if ( array ) {
+ if ( indexOf ) {
+ return indexOf.call( array, elem, i );
+ }
+
+ len = array.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in array && array[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value, key, ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ if ( typeof context === "string" ) {
+ var tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ var args = slice.call( arguments, 2 ),
+ proxy = function() {
+ return fn.apply( context, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
+ var exec,
+ bulk = key == null,
+ i = 0,
+ length = elems.length;
+
+ // Sets many values
+ if ( key && typeof key === "object" ) {
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
+ }
+ chainable = 1;
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = pass === undefined && jQuery.isFunction( value );
+
+ if ( bulk ) {
+ // Bulk operations only iterate when executing function values
+ if ( exec ) {
+ exec = fn;
+ fn = function( elem, key, value ) {
+ return exec.call( jQuery( elem ), value );
+ };
+
+ // Otherwise they run against the entire set
+ } else {
+ fn.call( elems, value );
+ fn = null;
+ }
+ }
+
+ if ( fn ) {
+ for (; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+ }
+
+ chainable = 1;
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+return jQuery;
+
+})();
+
+
+// String to Object flags format cache
+var flagsCache = {};
+
+// Convert String-formatted flags into Object-formatted ones and store in cache
+function createFlags( flags ) {
+ var object = flagsCache[ flags ] = {},
+ i, length;
+ flags = flags.split( /\s+/ );
+ for ( i = 0, length = flags.length; i < length; i++ ) {
+ object[ flags[i] ] = true;
+ }
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * flags: an optional list of space-separated flags that will change how
+ * the callback list behaves
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible flags:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( flags ) {
+
+ // Convert flags from String-formatted to Object-formatted
+ // (we check in cache first)
+ flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
+
+ var // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = [],
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Add one or several callbacks to the list
+ add = function( args ) {
+ var i,
+ length,
+ elem,
+ type,
+ actual;
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ // Inspect recursively
+ add( elem );
+ } else if ( type === "function" ) {
+ // Add if not in unique mode and callback is not in
+ if ( !flags.unique || !self.has( elem ) ) {
+ list.push( elem );
+ }
+ }
+ }
+ },
+ // Fire callbacks
+ fire = function( context, args ) {
+ args = args || [];
+ memory = !flags.memory || [ context, args ];
+ fired = true;
+ firing = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
+ memory = true; // Mark as halted
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( !flags.once ) {
+ if ( stack && stack.length ) {
+ memory = stack.shift();
+ self.fireWith( memory[ 0 ], memory[ 1 ] );
+ }
+ } else if ( memory === true ) {
+ self.disable();
+ } else {
+ list = [];
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ var length = list.length;
+ add( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away, unless previous
+ // firing was halted (stopOnFalse)
+ } else if ( memory && memory !== true ) {
+ firingStart = length;
+ fire( memory[ 0 ], memory[ 1 ] );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ var args = arguments,
+ argIndex = 0,
+ argLength = args.length;
+ for ( ; argIndex < argLength ; argIndex++ ) {
+ for ( var i = 0; i < list.length; i++ ) {
+ if ( args[ argIndex ] === list[ i ] ) {
+ // Handle firingIndex and firingLength
+ if ( firing ) {
+ if ( i <= firingLength ) {
+ firingLength--;
+ if ( i <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ // Remove the element
+ list.splice( i--, 1 );
+ // If we have some unicity property then
+ // we only need to do this once
+ if ( flags.unique ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+ return this;
+ },
+ // Control if a given callback is in the list
+ has: function( fn ) {
+ if ( list ) {
+ var i = 0,
+ length = list.length;
+ for ( ; i < length; i++ ) {
+ if ( fn === list[ i ] ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory || memory === true ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( stack ) {
+ if ( firing ) {
+ if ( !flags.once ) {
+ stack.push( [ context, args ] );
+ }
+ } else if ( !( flags.once && memory ) ) {
+ fire( context, args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+
+
+var // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var doneList = jQuery.Callbacks( "once memory" ),
+ failList = jQuery.Callbacks( "once memory" ),
+ progressList = jQuery.Callbacks( "memory" ),
+ state = "pending",
+ lists = {
+ resolve: doneList,
+ reject: failList,
+ notify: progressList
+ },
+ promise = {
+ done: doneList.add,
+ fail: failList.add,
+ progress: progressList.add,
+
+ state: function() {
+ return state;
+ },
+
+ // Deprecated
+ isResolved: doneList.fired,
+ isRejected: failList.fired,
+
+ then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
+ return this;
+ },
+ always: function() {
+ deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
+ return this;
+ },
+ pipe: function( fnDone, fnFail, fnProgress ) {
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( {
+ done: [ fnDone, "resolve" ],
+ fail: [ fnFail, "reject" ],
+ progress: [ fnProgress, "notify" ]
+ }, function( handler, data ) {
+ var fn = data[ 0 ],
+ action = data[ 1 ],
+ returned;
+ if ( jQuery.isFunction( fn ) ) {
+ deferred[ handler ](function() {
+ returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+ }
+ });
+ } else {
+ deferred[ handler ]( newDefer[ action ] );
+ }
+ });
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ obj = promise;
+ } else {
+ for ( var key in promise ) {
+ obj[ key ] = promise[ key ];
+ }
+ }
+ return obj;
+ }
+ },
+ deferred = promise.promise({}),
+ key;
+
+ for ( key in lists ) {
+ deferred[ key ] = lists[ key ].fire;
+ deferred[ key + "With" ] = lists[ key ].fireWith;
+ }
+
+ // Handle state
+ deferred.done( function() {
+ state = "resolved";
+ }, failList.disable, progressList.lock ).fail( function() {
+ state = "rejected";
+ }, doneList.disable, progressList.lock );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = sliceDeferred.call( arguments, 0 ),
+ i = 0,
+ length = args.length,
+ pValues = new Array( length ),
+ count = length,
+ pCount = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred(),
+ promise = deferred.promise();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ deferred.resolveWith( deferred, args );
+ }
+ };
+ }
+ function progressFunc( i ) {
+ return function( value ) {
+ pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ deferred.notifyWith( promise, pValues );
+ };
+ }
+ if ( length > 1 ) {
+ for ( ; i < length; i++ ) {
+ if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+ }
+ return promise;
+ }
+});
+
+
+
+
+jQuery.support = (function() {
+
+ var support,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ fragment,
+ tds,
+ events,
+ eventName,
+ i,
+ isSupported,
+ div = document.createElement( "div" ),
+ documentElement = document.documentElement;
+
+ // Preliminary tests
+ div.setAttribute("className", "t");
+ div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ all = div.getElementsByTagName( "*" );
+ a = div.getElementsByTagName( "a" )[ 0 ];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return {};
+ }
+
+ // First batch of supports tests
+ select = document.createElement( "select" );
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName( "input" )[ 0 ];
+
+ support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: ( a.getAttribute("href") === "/a" ),
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: ( input.value === "on" ),
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
+
+ // Tests for enctype support on a form(#6743)
+ enctype: !!document.createElement("form").enctype,
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
+
+ // Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
+ deleteExpando: true,
+ noCloneEvent: true,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true,
+ pixelMargin: true
+ };
+
+ // jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
+ jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", function() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ support.noCloneEvent = false;
+ });
+ div.cloneNode( true ).fireEvent( "onclick" );
+ }
+
+ // Check if a radio maintains its value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute("type", "radio");
+ support.radioValue = input.value === "t";
+
+ input.setAttribute("checked", "checked");
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( div.lastChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ fragment.removeChild( input );
+ fragment.appendChild( div );
+
+ // Technique from Juriy Zaytsev
+ // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for ( i in {
+ submit: 1,
+ change: 1,
+ focusin: 1
+ }) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
+
+ fragment.removeChild( div );
+
+ // Null elements to avoid leaks in IE
+ fragment = select = opt = div = input = null;
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, outer, inner, table, td, offsetSupport,
+ marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
+ paddingMarginBorderVisibility, paddingMarginBorder,
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ conMarginTop = 1;
+ paddingMarginBorder = "padding:0;margin:0;border:";
+ positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
+ paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
+ style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
+ html = "<div " + style + "display:block;'><div style='" + paddingMarginBorder + "0;display:block;overflow:hidden;'></div></div>" +
+ "<table " + style + "' cellpadding='0' cellspacing='0'>" +
+ "<tr><td></td></tr></table>";
+
+ container = document.createElement("div");
+ container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
+ body.insertBefore( container, body.firstChild );
+
+ // Construct the test element
+ div = document.createElement("div");
+ container.appendChild( div );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ div.innerHTML = "<table><tr><td style='" + paddingMarginBorder + "0;display:none'></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName( "td" );
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE <= 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( window.getComputedStyle ) {
+ div.innerHTML = "";
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.style.width = "2px";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
+
+ if ( typeof div.style.zoom !== "undefined" ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.innerHTML = "";
+ div.style.width = div.style.padding = "1px";
+ div.style.border = 0;
+ div.style.overflow = "hidden";
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "block";
+ div.style.overflow = "visible";
+ div.innerHTML = "<div style='width:5px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+ }
+
+ div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
+ div.innerHTML = html;
+
+ outer = div.firstChild;
+ inner = outer.firstChild;
+ td = outer.nextSibling.firstChild.firstChild;
+
+ offsetSupport = {
+ doesNotAddBorder: ( inner.offsetTop !== 5 ),
+ doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
+ };
+
+ inner.style.position = "fixed";
+ inner.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
+ inner.style.position = inner.style.top = "";
+
+ outer.style.overflow = "hidden";
+ outer.style.position = "relative";
+
+ offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
+ offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
+
+ if ( window.getComputedStyle ) {
+ div.style.marginTop = "1%";
+ support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
+ }
+
+ if ( typeof container.style.zoom !== "undefined" ) {
+ container.style.zoom = 1;
+ }
+
+ body.removeChild( container );
+ marginDiv = div = container = null;
+
+ jQuery.extend( support, offsetSupport );
+ });
+
+ return support;
+})();
+
+
+
+
+var rbrace = /^(?:{.*}|\[.*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var privateCache, thisCache, ret,
+ internalKey = jQuery.expando,
+ getByName = typeof name === "string",
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
+ isEvents = name === "events";
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ internalKey ] = id = ++jQuery.uuid;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // Avoids exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ privateCache = thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Users should not attempt to inspect the internal events object using jQuery.data,
+ // it is undocumented and subject to change. But does anyone listen? No.
+ if ( isEvents && !thisCache[ name ] ) {
+ return privateCache.events;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( getByName ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i, l,
+
+ // Reference to internal data cache key
+ internalKey = jQuery.expando,
+
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ internalKey ] : internalKey;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split( " " );
+ }
+ }
+ }
+
+ for ( i = 0, l = name.length; i < l; i++ ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ // Ensure that `cache` is not a window object #10080
+ if ( jQuery.support.deleteExpando || !cache.setInterval ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the cache and need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ internalKey ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( internalKey );
+ } else {
+ elem[ internalKey ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var parts, part, attr, name, l,
+ elem = this[0],
+ i = 0,
+ data = null;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attr = elem.attributes;
+ for ( l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ parts = key.split( ".", 2 );
+ parts[1] = parts[1] ? "." + parts[1] : "";
+ part = parts[1] + "!";
+
+ return jQuery.access( this, function( value ) {
+
+ if ( value === undefined ) {
+ data = this.triggerHandler( "getData" + part, [ parts[0] ] );
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && elem ) {
+ data = jQuery.data( elem, key );
+ data = dataAttr( elem, key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ }
+
+ parts[1] = value;
+ this.each(function() {
+ var self = jQuery( this );
+
+ self.triggerHandler( "setData" + part, parts );
+ jQuery.data( this, key, value );
+ self.triggerHandler( "changeData" + part, parts );
+ });
+ }, null, value, arguments.length > 1, null, false );
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ jQuery.isNumeric( data ) ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery._data( elem, deferDataKey );
+ if ( defer &&
+ ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
+ ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery._data( elem, queueDataKey ) &&
+ !jQuery._data( elem, markDataKey ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.fire();
+ }
+ }, 0 );
+ }
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = ( type || "fx" ) + "mark";
+ jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
+ }
+ },
+
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
+ if ( count ) {
+ jQuery._data( elem, key, count );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ var q;
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ q = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ hooks = {};
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ jQuery._data( elem, type + ".run", hooks );
+ fn.call( elem, function() {
+ jQuery.dequeue( elem, type );
+ }, hooks );
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue " + type + ".run", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
+ count++;
+ tmp.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( object );
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ nodeHook, boolHook, fixSpecified;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classNames, i, l, elem,
+ setClass, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ classNames = value.split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className && classNames.length === 1 ) {
+ elem.className = value;
+
+ } else {
+ setClass = " " + elem.className + " ";
+
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+ setClass += classNames[ c ] + " ";
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classNames, i, l, elem, className, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ classNames = ( value || "" ).split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ className = (" " + elem.className + " ").replace( rclass, " " );
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[ c ] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var self = jQuery(this), val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, i, max, option,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ i = one ? index : 0;
+ max = one ? index + 1 : options.length;
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
+
+ jQuery(elem).find("option").each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery( elem )[ name ]( value );
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( notxml ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, "" + value );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var propName, attrNames, name, l, isBool,
+ i = 0;
+
+ if ( value && elem.nodeType === 1 ) {
+ attrNames = value.toLowerCase().split( rspace );
+ l = attrNames.length;
+
+ for ( ; i < l; i++ ) {
+ name = attrNames[ i ];
+
+ if ( name ) {
+ propName = jQuery.propFix[ name ] || name;
+ isBool = rboolean.test( name );
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ // Do not do this for boolean attributes (see #10870)
+ if ( !isBool ) {
+ jQuery.attr( elem, name, "" );
+ }
+ elem.removeAttribute( getSetAttribute ? name : propName );
+
+ // Set corresponding property to false for boolean attributes
+ if ( isBool && propName in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ },
+ // Use the value property for back compat
+ // Use the nodeHook for button elements in IE6/7 (#1954)
+ value: {
+ get: function( elem, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.get( elem, name );
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+ }
+ },
+
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return ( elem[ name ] = value );
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ var attributeNode = elem.getAttributeNode("tabindex");
+
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ }
+ }
+});
+
+// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
+jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ // Fall back to attribute presence where some booleans are not supported
+ var attrNode,
+ property = jQuery.prop( elem, name );
+ return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ fixSpecified = {
+ name: true,
+ id: true,
+ coords: true
+ };
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
+ ret.nodeValue :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ ret = document.createAttribute( name );
+ elem.setAttributeNode( ret );
+ }
+ return ( ret.nodeValue = value + "" );
+ }
+ };
+
+ // Apply the nodeHook to tabindex
+ jQuery.attrHooks.tabindex.set = nodeHook.set;
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ });
+ });
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ get: nodeHook.get,
+ set: function( elem, value, name ) {
+ if ( value === "" ) {
+ value = "false";
+ }
+ nodeHook.set( elem, value, name );
+ }
+ };
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = "" + value );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ });
+}
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ });
+});
+
+
+
+
+var rformElems = /^(?:textarea|input|select)$/i,
+ rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
+ rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
+ quickParse = function( selector ) {
+ var quick = rquickIs.exec( selector );
+ if ( quick ) {
+ // 0 1 2 3
+ // [ _, tag, id, class ]
+ quick[1] = ( quick[1] || "" ).toLowerCase();
+ quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
+ }
+ return quick;
+ },
+ quickIs = function( elem, m ) {
+ var attrs = elem.attributes || {};
+ return (
+ (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
+ (!m[2] || (attrs.id || {}).value === m[2]) &&
+ (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
+ );
+ },
+ hoverHack = function( events ) {
+ return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+ };
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var elemData, eventHandle, events,
+ t, tns, type, namespaces, handleObj,
+ handleObjIn, quick, handlers, special;
+
+ // Don't attach events to noData or text/comment nodes (allow plain objects tho)
+ if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ events = elemData.events;
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+ eventHandle = elemData.handle;
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = jQuery.trim( hoverHack(types) ).split( " " );
+ for ( t = 0; t < types.length; t++ ) {
+
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = tns[1];
+ namespaces = ( tns[2] || "" ).split( "." ).sort();
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: tns[1],
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ quick: selector && quickParse( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ handlers = events[ type ];
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ t, tns, type, origType, namespaces, origCount,
+ j, events, special, handle, eventType, handleObj;
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
+ for ( t = 0; t < types.length; t++ ) {
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tns[1];
+ namespaces = tns[2];
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector? special.delegateType : special.bindType ) || type;
+ eventType = events[ type ] || [];
+ origCount = eventType.length;
+ namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+
+ // Remove matching events
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ eventType.splice( j--, 1 );
+
+ if ( handleObj.selector ) {
+ eventType.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( eventType.length === 0 && origCount !== eventType.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery.removeData( elem, [ "events", "handle" ], true );
+ }
+ },
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ // Don't do events on text and comment nodes
+ if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
+ return;
+ }
+
+ // Event object or event type
+ var type = event.type || event,
+ namespaces = [],
+ cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "!" ) >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
+
+ if ( type.indexOf( "." ) >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
+
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
+
+ event.type = type;
+ event.isTrigger = true;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join( "." );
+ event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+ ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+
+ // Handle a global trigger
+ if ( !elem ) {
+
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ cache = jQuery.cache;
+ for ( i in cache ) {
+ if ( cache[ i ].events && cache[ i ].events[ type ] ) {
+ jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
+ }
+ }
+ return;
+ }
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data != null ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ eventPath = [[ elem, special.bindType || type ]];
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
+ old = null;
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push([ cur, bubbleType ]);
+ old = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( old && old === elem.ownerDocument ) {
+ eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
+ }
+ }
+
+ // Fire handlers on the event path
+ for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
+
+ cur = eventPath[i][0];
+ event.type = eventPath[i][1];
+
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+ // Note that this is a bare JS function and not a jQuery handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ // IE<9 dies on focus/blur to hidden element (#1486)
+ if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
+
+ if ( old ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event || window.event );
+
+ var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
+ delegateCount = handlers.delegateCount,
+ args = [].slice.call( arguments, 0 ),
+ run_all = !event.exclusive && !event.namespace,
+ special = jQuery.event.special[ event.type ] || {},
+ handlerQueue = [],
+ i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers that should run if there are delegated events
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && !(event.button && event.type === "click") ) {
+
+ // Pregenerate a single jQuery object for reuse with .is()
+ jqcur = jQuery(this);
+ jqcur.context = this.ownerDocument || this;
+
+ for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
+
+ // Don't process events on disabled elements (#6911, #8165)
+ if ( cur.disabled !== true ) {
+ selMatch = {};
+ matches = [];
+ jqcur[0] = cur;
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+ sel = handleObj.selector;
+
+ if ( selMatch[ sel ] === undefined ) {
+ selMatch[ sel ] = (
+ handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
+ );
+ }
+ if ( selMatch[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, matches: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( handlers.length > delegateCount ) {
+ handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
+ }
+
+ // Run delegates first; they may want to stop propagation beneath us
+ for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
+ matched = handlerQueue[ i ];
+ event.currentTarget = matched.elem;
+
+ for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
+ handleObj = matched.matches[ j ];
+
+ // Triggered event must either 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
+ props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop,
+ originalEvent = event,
+ fixHook = jQuery.event.fixHooks[ event.type ] || {},
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = jQuery.Event( originalEvent );
+
+ for ( i = copy.length; i; ) {
+ prop = copy[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Target should not be a text node (#504, Safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
+ if ( event.metaKey === undefined ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady
+ },
+
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+
+ focus: {
+ delegateType: "focusin"
+ },
+ blur: {
+ delegateType: "focusout"
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ { type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+// Some plugins are using, but it's undocumented/deprecated and will be removed.
+// The 1.7 special event interface should provide all the hooks needed now.
+jQuery.event.handle = jQuery.event.dispatch;
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj,
+ selector = handleObj.selector,
+ ret;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !form._submit_attached ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ form._submit_attached = true;
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ jQuery.event.simulate( "change", this, event, true );
+ }
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ elem._change_attached = true;
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) { // && selector != null
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ var handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( var type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ live: function( types, data, fn ) {
+ jQuery( this.context ).on( types, this.selector, data, fn );
+ return this;
+ },
+ die: function( types, fn ) {
+ jQuery( this.context ).off( types, this.selector || "**", fn );
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ return jQuery.event.trigger( type, data, this[0], true );
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+
+ if ( rkeyEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
+ }
+
+ if ( rmouseEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
+ }
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ expando = "sizcache" + (Math.random() + '').replace('.', ''),
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rReturn = /\r\n/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context, seed );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set, seed );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set, i, len, match, type, left;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( i = 0, len = Expr.order.length; i < len; i++ ) {
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ type, found, item, filter, left,
+ i, pass,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ filter = Expr.filter[ type ];
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ pass = not ^ found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Utility function for retreiving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+var getText = Sizzle.getText = function( elem ) {
+ var i, node,
+ nodeType = elem.nodeType,
+ ret = "";
+
+ if ( nodeType ) {
+ if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent || innerText for elements
+ if ( typeof elem.textContent === 'string' ) {
+ return elem.textContent;
+ } else if ( typeof elem.innerText === 'string' ) {
+ // Replace IE's carriage returns
+ return elem.innerText.replace( rReturn, '' );
+ } else {
+ // Traverse it's children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ } else {
+
+ // If no nodeType, this is expected to be an array
+ for ( i = 0; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ if ( node.nodeType !== 8 ) {
+ ret += getText( node );
+ }
+ }
+ }
+ return ret;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+ },
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+ },
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ },
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var first, last,
+ doneName, parent, cache,
+ count, diff,
+ type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ /* falls through */
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ first = match[2];
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ doneName = match[0];
+ parent = elem.parentNode;
+
+ if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
+ count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent[ expando ] = doneName;
+ }
+
+ diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Sizzle.attr ?
+ Sizzle.attr( elem, name ) :
+ Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ !type && Sizzle.attr ?
+ result != null :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+// Expose origPOS
+// "global" as in regardless of relation to brackets/parens
+Expr.match.globalPOS = origPOS;
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem[ expando ] === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem[ expando ] = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem[ expando ] === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem[ expando ] = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context, seed ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet, seed );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+Sizzle.selectors.attrMap = {};
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.globalPOS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var self = this,
+ i, l;
+
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
+ }
+
+ var ret = this.pushStack( "", "find", selector ),
+ length, n, r;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && (
+ typeof selector === "string" ?
+ // If this is a positional selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ POS.test( selector ) ?
+ jQuery( selector, this.context ).index( this[0] ) >= 0 :
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ // Array (deprecated as of jQuery 1.7)
+ if ( jQuery.isArray( selectors ) ) {
+ var level = 1;
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( i = 0; i < selectors.length; i++ ) {
+
+ if ( jQuery( cur ).is( selectors[ i ] ) ) {
+ ret.push({ selector: selectors[ i ], elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+
+ return ret;
+ }
+
+ // String
+ var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, slice.call( arguments ).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return ( elem === qualifier ) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
+ });
+}
+
+
+
+
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style)/i,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ },
+ safeFragment = createSafeFragment( document );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery.clean( arguments );
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery.clean(arguments) );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ null;
+ }
+
+
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName( "*" ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || ( l > 1 && i < lastIndex ) ?
+ jQuery.clone( fragment, true, true ) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, function( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ type: "GET",
+ global: false,
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ });
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+
+ // IE blanks contents when cloning scripts
+ } else if ( nodeName === "script" && dest.text !== src.text ) {
+ dest.text = src.text;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+
+ // Clear flags for bubbling special change/submit events, they must
+ // be reattached when the newly cloned events are first activated
+ dest.removeAttribute( "_submit_attached" );
+ dest.removeAttribute( "_change_attached" );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults, doc,
+ first = args[ 0 ];
+
+ // nodes may contain either an explicit document object,
+ // a jQuery collection or context object.
+ // If nodes[0] contains a valid object to assign to doc
+ if ( nodes && nodes[0] ) {
+ doc = nodes[0].ownerDocument || nodes[0];
+ }
+
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
+ // Chrome and Firefox seem to allow this to occur and will throw exception
+ // Fixes #8950
+ if ( !doc.createDocumentFragment ) {
+ doc = document;
+ }
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
+ if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
+ first.charAt(0) === "<" && !rnocache.test( first ) &&
+ (jQuery.support.checkClone || !rchecked.test( first )) &&
+ (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
+
+ cacheable = true;
+
+ cacheresults = jQuery.fragments[ first ];
+ if ( cacheresults && cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ first ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = ( i > 0 ? this.clone(true) : this ).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( typeof elem.querySelectorAll !== "undefined" ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( elem.type === "checkbox" || elem.type === "radio" ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+ var nodeName = ( elem.nodeName || "" ).toLowerCase();
+ if ( nodeName === "input" ) {
+ fixDefaultChecked( elem );
+ // Skip scripts, get other children
+ } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+}
+
+// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
+function shimCloneNode( elem ) {
+ var div = document.createElement( "div" );
+ safeFragment.appendChild( div );
+
+ div.innerHTML = elem.outerHTML;
+ return div.firstChild;
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var srcElements,
+ destElements,
+ i,
+ // IE<=8 does not properly clone detached, unknown element nodes
+ clone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ?
+ elem.cloneNode( true ) :
+ shimCloneNode( elem );
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ srcElements = destElements = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ clean: function( elems, context, fragment, scripts ) {
+ var checkScriptType, script, j,
+ ret = [];
+
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div"),
+ safeChildNodes = safeFragment.childNodes,
+ remove;
+
+ // Append wrapper element to unknown element safe doc fragment
+ if ( context === document ) {
+ // Use the fragment we've already created for this document
+ safeFragment.appendChild( div );
+ } else {
+ // Use a fragment created with the owner document
+ createSafeFragment( context ).appendChild( div );
+ }
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+
+ // Clear elements from DocumentFragment (safeFragment or otherwise)
+ // to avoid hoarding elements. Fixes #11356
+ if ( div ) {
+ div.parentNode.removeChild( div );
+
+ // Guard against -1 index exceptions in FF3.6
+ if ( safeChildNodes.length > 0 ) {
+ remove = safeChildNodes[ safeChildNodes.length - 1 ];
+
+ if ( remove && remove.parentNode ) {
+ remove.parentNode.removeChild( remove );
+ }
+ }
+ }
+ }
+ }
+
+ // Resets defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ var len;
+ if ( !jQuery.support.appendChecked ) {
+ if ( elem[0] && typeof (len = elem.length) === "number" ) {
+ for ( j = 0; j < len; j++ ) {
+ findInputs( elem[j] );
+ }
+ } else {
+ findInputs( elem );
+ }
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ checkScriptType = function( elem ) {
+ return !elem.type || rscriptType.test( elem.type );
+ };
+ for ( i = 0; ret[i]; i++ ) {
+ script = ret[i];
+ if ( scripts && jQuery.nodeName( script, "script" ) && (!script.type || rscriptType.test( script.type )) ) {
+ scripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );
+
+ } else {
+ if ( script.nodeType === 1 ) {
+ var jsTags = jQuery.grep( script.getElementsByTagName( "script" ), checkScriptType );
+
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ }
+ fragment.appendChild( script );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id,
+ cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
+ rnum = /^[\-+]?(?:\d*\.)?\d+$/i,
+ rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
+ rrelNum = /^([\-+])=([\-+.\de]+)/,
+ rmargin = /^margin/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+
+ // order is important!
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+
+ curCSS,
+
+ getComputedStyle,
+ currentStyle;
+
+jQuery.fn.css = function( name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ var ret, hooks;
+
+ // Make sure that we're working with the right name
+ name = jQuery.camelCase( name );
+ hooks = jQuery.cssHooks[ name ];
+ name = jQuery.cssProps[ name ] || name;
+
+ // cssFloat needs a special treatment
+ if ( name === "cssFloat" ) {
+ name = "float";
+ }
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {},
+ ret, name;
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
+});
+
+// DEPRECATED in 1.3, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, name ) {
+ var ret, defaultView, computedStyle, width,
+ style = elem.style;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( (defaultView = elem.ownerDocument.defaultView) &&
+ (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // WebKit uses "computed value (percentage if specified)" instead of "used value" for margins
+ // which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {
+ width = style.width;
+ style.width = ret;
+ ret = computedStyle.width;
+ style.width = width;
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left, rsLeft, uncomputed,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret == null && style && (uncomputed = style[ name ]) ) {
+ ret = uncomputed;
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( rnumnonpx.test( ret ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ret;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ i = name === "width" ? 1 : 0,
+ len = 4;
+
+ if ( val > 0 ) {
+ if ( extra !== "border" ) {
+ for ( ; i < len; i += 2 ) {
+ if ( !extra ) {
+ val -= parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;
+ } else {
+ val -= parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
+ }
+ }
+ }
+
+ return val + "px";
+ }
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Add padding, border, margin
+ if ( extra ) {
+ for ( ; i < len; i += 2 ) {
+ val += parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
+ if ( extra !== "padding" ) {
+ val += parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;
+ }
+ }
+ }
+
+ return val + "px";
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ return getWidthOrHeight( elem, name, extra );
+ } else {
+ return jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ });
+ }
+ }
+ },
+
+ set: function( elem, value ) {
+ return rnum.test( value ) ?
+ value + "px" :
+ value;
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there there is no filter style applied in a css rule, we are done
+ if ( currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ return curCSS( elem, "margin-right" );
+ } else {
+ return elem.style.marginRight;
+ }
+ });
+ }
+ };
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i,
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ],
+ expanded = {};
+
+ for ( i = 0; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+});
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts,
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for ( ; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for ( ; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+}
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf( " " );
+ if ( off >= 0 ) {
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
+ // If successful, inject the HTML into all the matched elements
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [ responseText, status, jqXHR ] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.on( o, f );
+ };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+});
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ if ( settings ) {
+ // Building a settings object
+ ajaxExtend( target, jQuery.ajaxSettings );
+ } else {
+ // Extending ajaxSettings
+ settings = target;
+ target = jQuery.ajaxSettings;
+ }
+ ajaxExtend( target, settings );
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": allTypes
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ context: true,
+ url: true
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, nativeStatusText, responses, headers ) {
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ var isSuccess,
+ success,
+ error,
+ statusText = nativeStatusText,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = "" + ( nativeStatusText || statusText );
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.add;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for ( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return false;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
+ }
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for ( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for ( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for ( key in s.converters ) {
+ if ( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if ( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for ( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var inspectData = ( typeof s.data === "string" ) && /^application\/x\-www\-form\-urlencoded/.test( s.contentType );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ inspectData && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2";
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( inspectData ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
+ }
+ }
+
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Clean-up function
+ jqXHR.always(function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ });
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0,
+ xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ try {
+ responses.text = xhr.responseText;
+ } catch( _ ) {
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
+var elemdisplay = {},
+ iframe, iframeDoc,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ],
+ fxNow;
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback );
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( (display === "" && jQuery.css(elem, "display") === "none") ||
+ !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
+ }
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ var elem, display,
+ i = 0,
+ j = this.length;
+
+ for ( ; i < j; i++ ) {
+ elem = this[i];
+ if ( elem.style ) {
+ display = jQuery.css( elem, "display" );
+
+ if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
+ jQuery._data( elem, "olddisplay", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ if ( this[i].style ) {
+ this[i].style.display = "none";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed( speed, easing, callback );
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete, [ false ] );
+ }
+
+ // Do not change referenced properties as per-property easing will be lost
+ prop = jQuery.extend( {}, prop );
+
+ function doAnimation() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ if ( optall.queue === false ) {
+ jQuery._mark( this );
+ }
+
+ var opt = jQuery.extend( {}, optall ),
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ name, val, p, e, hooks, replace,
+ parts, start, end, unit,
+ method;
+
+ // will store per property easing and be used to determine when an animation is complete
+ opt.animatedProperties = {};
+
+ // first pass over propertys to expand / normalize
+ for ( p in prop ) {
+ name = jQuery.camelCase( p );
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ }
+
+ if ( ( hooks = jQuery.cssHooks[ name ] ) && "expand" in hooks ) {
+ replace = hooks.expand( prop[ name ] );
+ delete prop[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'p' from above because we have the correct "name"
+ for ( p in replace ) {
+ if ( ! ( p in prop ) ) {
+ prop[ p ] = replace[ p ];
+ }
+ }
+ }
+ }
+
+ for ( name in prop ) {
+ val = prop[ name ];
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+ if ( jQuery.isArray( val ) ) {
+ opt.animatedProperties[ name ] = val[ 1 ];
+ val = prop[ name ] = val[ 0 ];
+ } else {
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+ }
+
+ if ( val === "hide" && hidden || val === "show" && !hidden ) {
+ return opt.complete.call( this );
+ }
+
+ if ( isElement && ( name === "height" || name === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ for ( p in prop ) {
+ e = new jQuery.fx( this, opt, p );
+ val = prop[ p ];
+
+ if ( rfxtypes.test( val ) ) {
+
+ // Tracks whether to show or hide based on private
+ // data attached to the element
+ method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
+ if ( method ) {
+ jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
+ e[ method ]();
+ } else {
+ e[ val ]();
+ }
+
+ } else {
+ parts = rfxnum.exec( val );
+ start = e.cur();
+
+ if ( parts ) {
+ end = parseFloat( parts[2] );
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( this, p, (end || 1) + unit);
+ start = ( (end || 1) / e.cur() ) * start;
+ jQuery.style( this, p, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ }
+
+ // For JS strict compliance
+ return true;
+ }
+
+ return optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+
+ stop: function( type, clearQueue, gotoEnd ) {
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var index,
+ hadTimers = false,
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ // clear marker counters if we know they won't be
+ if ( !gotoEnd ) {
+ jQuery._unmark( true, this );
+ }
+
+ function stopQueue( elem, data, index ) {
+ var hooks = data[ index ];
+ jQuery.removeData( elem, index, true );
+ hooks.stop( gotoEnd );
+ }
+
+ if ( type == null ) {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
+ stopQueue( this, data, index );
+ }
+ }
+ } else if ( data[ index = type + ".run" ] && data[ index ].stop ){
+ stopQueue( this, data, index );
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ if ( gotoEnd ) {
+
+ // force the next step to be the last
+ timers[ index ]( true );
+ } else {
+ timers[ index ].saveState();
+ }
+ hadTimers = true;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( !( gotoEnd && hadTimers ) ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ }
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout( clearFxNow, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+ fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx( "show", 1 ),
+ slideUp: genFx( "hide", 1 ),
+ slideToggle: genFx( "toggle", 1 ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function( noUnmark ) {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ } else if ( noUnmark !== false ) {
+ jQuery._unmark( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ options.orig = options.orig || {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ ( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = fxNow || createFxNow();
+ this.end = to;
+ this.now = this.start = from;
+ this.pos = this.state = 0;
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+
+ function t( gotoEnd ) {
+ return self.step( gotoEnd );
+ }
+
+ t.queue = this.options.queue;
+ t.elem = this.elem;
+ t.saveState = function() {
+ if ( jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
+ if ( self.options.hide ) {
+ jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+ } else if ( self.options.show ) {
+ jQuery._data( self.elem, "fxshow" + self.prop, self.end );
+ }
+ }
+ };
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval( fx.tick, fx.interval );
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
+
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any flash of content
+ if ( dataShow !== undefined ) {
+ // This show is picking up where a previous hide or show left off
+ this.custom( this.cur(), dataShow );
+ } else {
+ this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
+ }
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom( this.cur(), 0 );
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var p, n, complete,
+ t = fxNow || createFxNow(),
+ done = true,
+ elem = this.elem,
+ options = this.options;
+
+ if ( gotoEnd || t >= options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ options.animatedProperties[ this.prop ] = true;
+
+ for ( p in options.animatedProperties ) {
+ if ( options.animatedProperties[ p ] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+ jQuery.each( [ "", "X", "Y" ], function( index, value ) {
+ elem.style[ "overflow" + value ] = options.overflow[ index ];
+ });
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( options.hide ) {
+ jQuery( elem ).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( options.hide || options.show ) {
+ for ( p in options.animatedProperties ) {
+ jQuery.style( elem, p, options.orig[ p ] );
+ jQuery.removeData( elem, "fxshow" + p, true );
+ // Toggle data is no longer needed
+ jQuery.removeData( elem, "toggle" + p, true );
+ }
+ }
+
+ // Execute the complete function
+ // in the event that the complete function throws an exception
+ // we must ensure it won't be called twice. #5684
+
+ complete = options.complete;
+ if ( complete ) {
+
+ options.complete = false;
+ complete.call( elem );
+ }
+ }
+
+ return false;
+
+ } else {
+ // classical easing cannot be used with an Infinity duration
+ if ( options.duration == Infinity ) {
+ this.now = t;
+ } else {
+ n = t - this.startTime;
+ this.state = n / options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
+ this.now = this.start + ( (this.end - this.start) * this.pos );
+ }
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+// Ensure props that can't be negative don't go there on undershoot easing
+jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {
+ // exclude marginTop, marginLeft, marginBottom and marginRight from this list
+ if ( prop.indexOf( "margin" ) ) {
+ jQuery.fx.step[ prop ] = function( fx ) {
+ jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
+ };
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+ if ( !elemdisplay[ nodeName ] ) {
+
+ var body = document.body,
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+ display = elem.css( "display" );
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // No iframe to use yet, so create it
+ if ( !iframe ) {
+ iframe = document.createElement( "iframe" );
+ iframe.frameBorder = iframe.width = iframe.height = 0;
+ }
+
+ body.appendChild( iframe );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write( ( jQuery.support.boxModel ? "<!doctype html>" : "" ) + "<html><body>" );
+ iframeDoc.close();
+ }
+
+ elem = iframeDoc.createElement( nodeName );
+
+ iframeDoc.body.appendChild( elem );
+
+ display = jQuery.css( elem, "display" );
+ body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var getOffset,
+ rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ getOffset = function( elem, doc, docElem, box ) {
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow( doc ),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ getOffset = function( elem, doc, docElem ) {
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var elem = this[0],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return null;
+ }
+
+ if ( elem === doc.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ return getOffset( elem, doc, doc.documentElement );
+};
+
+jQuery.offset = {
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ var clientProp = "client" + name,
+ scrollProp = "scroll" + name,
+ offsetProp = "offset" + name;
+
+ // innerHeight and innerWidth
+ jQuery.fn[ "inner" + name ] = function() {
+ var elem = this[0];
+ return elem ?
+ elem.style ?
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
+ this[ type ]() :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn[ "outer" + name ] = function( margin ) {
+ var elem = this[0];
+ return elem ?
+ elem.style ?
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
+ this[ type ]() :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( value ) {
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc, docElemProp, orig, ret;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ doc = elem.document;
+ docElemProp = doc.documentElement[ clientProp ];
+ return jQuery.support.boxModel && docElemProp ||
+ doc.body && doc.body[ clientProp ] || docElemProp;
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ doc = elem.documentElement;
+
+ // when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]
+ // so we can't use max, as it'll choose the incorrect offset[Width/Height]
+ // instead we use the correct client[Width/Height]
+ // support:IE6
+ if ( doc[ clientProp ] >= doc[ scrollProp ] ) {
+ return doc[ clientProp ];
+ }
+
+ return Math.max(
+ elem.body[ scrollProp ], doc[ scrollProp ],
+ elem.body[ offsetProp ], doc[ offsetProp ]
+ );
+ }
+
+ // Get width or height on the element
+ if ( value === undefined ) {
+ orig = jQuery.css( elem, type );
+ ret = parseFloat( orig );
+ return jQuery.isNumeric( ret ) ? ret : orig;
+ }
+
+ // Set the width or height on the element
+ jQuery( elem ).css( type, value );
+ }, type, value, arguments.length, null );
+ };
+});
+
+
+
+
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+// Do this after creating the global so that if an AMD module wants to call
+// noConflict to hide this version of jQuery, it will work.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+ define( "jquery", [], function () { return jQuery; } );
+}
+
+
+
+})( window );
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/minus.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/minus.png
new file mode 100644
index 0000000..da1c562
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/minus.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/plus.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/plus.png
new file mode 100644
index 0000000..b3cb374
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/plus.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/pygments.css b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/pygments.css
new file mode 100644
index 0000000..d79caa1
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/pygments.css
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/searchtools.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/searchtools.js
new file mode 100644
index 0000000..6e1f06b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/searchtools.js
@@ -0,0 +1,622 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+
+
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+ // Implement the following function to further tweak the score for each result
+ // The function takes a result array [filename, title, anchor, descr, score]
+ // and returns the new score.
+ /*
+ score: function(result) {
+ return result[4];
+ },
+ */
+
+ // query matches the full name of an object
+ objNameMatch: 11,
+ // or matches in the last dotted part of the object name
+ objPartialMatch: 6,
+ // Additive scores depending on the priority of the object
+ objPrio: {0: 15, // used to be importantResults
+ 1: 5, // used to be objectResults
+ 2: -5}, // used to be unimportantResults
+ // Used when the priority is not in the mapping.
+ objPrioDefault: 0,
+
+ // query found in title
+ title: 15,
+ // query found in terms
+ term: 5
+};
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+ _index : null,
+ _queued_query : null,
+ _pulse_status : -1,
+
+ init : function() {
+ var params = $.getQueryParameters();
+ if (params.q) {
+ var query = params.q[0];
+ $('input[name="q"]')[0].value = query;
+ this.performSearch(query);
+ }
+ },
+
+ loadIndex : function(url) {
+ $.ajax({type: "GET", url: url, data: null,
+ dataType: "script", cache: true,
+ complete: function(jqxhr, textstatus) {
+ if (textstatus != "success") {
+ document.getElementById("searchindexloader").src = url;
+ }
+ }});
+ },
+
+ setIndex : function(index) {
+ var q;
+ this._index = index;
+ if ((q = this._queued_query) !== null) {
+ this._queued_query = null;
+ Search.query(q);
+ }
+ },
+
+ hasIndex : function() {
+ return this._index !== null;
+ },
+
+ deferQuery : function(query) {
+ this._queued_query = query;
+ },
+
+ stopPulse : function() {
+ this._pulse_status = 0;
+ },
+
+ startPulse : function() {
+ if (this._pulse_status >= 0)
+ return;
+ function pulse() {
+ var i;
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ var dotString = '';
+ for (i = 0; i < Search._pulse_status; i++)
+ dotString += '.';
+ Search.dots.text(dotString);
+ if (Search._pulse_status > -1)
+ window.setTimeout(pulse, 500);
+ }
+ pulse();
+ },
+
+ /**
+ * perform a search for something (or wait until index is loaded)
+ */
+ performSearch : function(query) {
+ // create the required interface elements
+ this.out = $('#search-results');
+ this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+ this.dots = $('<span></span>').appendTo(this.title);
+ this.status = $('<p style="display: none"></p>').appendTo(this.out);
+ this.output = $('<ul class="search"/>').appendTo(this.out);
+
+ $('#search-progress').text(_('Preparing search...'));
+ this.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (this.hasIndex())
+ this.query(query);
+ else
+ this.deferQuery(query);
+ },
+
+ /**
+ * execute search (requires search index to be loaded)
+ */
+ query : function(query) {
+ var i;
+ var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+ // stem the searchterms and add them to the correct list
+ var stemmer = new Stemmer();
+ var searchterms = [];
+ var excluded = [];
+ var hlterms = [];
+ var tmp = query.split(/\s+/);
+ var objectterms = [];
+ for (i = 0; i < tmp.length; i++) {
+ if (tmp[i] !== "") {
+ objectterms.push(tmp[i].toLowerCase());
+ }
+
+ if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+ tmp[i] === "") {
+ // skip this "word"
+ continue;
+ }
+ // stem the word
+ var word = stemmer.stemWord(tmp[i].toLowerCase());
+ var toAppend;
+ // select the correct list
+ if (word[0] == '-') {
+ toAppend = excluded;
+ word = word.substr(1);
+ }
+ else {
+ toAppend = searchterms;
+ hlterms.push(tmp[i].toLowerCase());
+ }
+ // only add if not already in the list
+ if (!$u.contains(toAppend, word))
+ toAppend.push(word);
+ }
+ var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+ // console.debug('SEARCH: searching for:');
+ // console.info('required: ', searchterms);
+ // console.info('excluded: ', excluded);
+
+ // prepare search
+ var terms = this._index.terms;
+ var titleterms = this._index.titleterms;
+
+ // array of [filename, title, anchor, descr, score]
+ var results = [];
+ $('#search-progress').empty();
+
+ // lookup as object
+ for (i = 0; i < objectterms.length; i++) {
+ var others = [].concat(objectterms.slice(0, i),
+ objectterms.slice(i+1, objectterms.length));
+ results = results.concat(this.performObjectSearch(objectterms[i], others));
+ }
+
+ // lookup as search terms in fulltext
+ results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
+ .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
+
+ // let the scorer override scores with a custom scoring function
+ if (Scorer.score) {
+ for (i = 0; i < results.length; i++)
+ results[i][4] = Scorer.score(results[i]);
+ }
+
+ // now sort the results by score (in opposite order of appearance, since the
+ // display function below uses pop() to retrieve items) and then
+ // alphabetically
+ results.sort(function(a, b) {
+ var left = a[4];
+ var right = b[4];
+ if (left > right) {
+ return 1;
+ } else if (left < right) {
+ return -1;
+ } else {
+ // same score: sort alphabetically
+ left = a[1].toLowerCase();
+ right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ }
+ });
+
+ // for debugging
+ //Search.lastresults = results.slice(); // a copy
+ //console.info('search results:', Search.lastresults);
+
+ // print the results
+ var resultCount = results.length;
+ function displayNextItem() {
+ // results left, load the summary and display it
+ if (results.length) {
+ var item = results.pop();
+ var listItem = $('<li style="display:none"></li>');
+ if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+ // dirhtml builder
+ var dirname = item[0] + '/';
+ if (dirname.match(/\/index\/$/)) {
+ dirname = dirname.substring(0, dirname.length-6);
+ } else if (dirname == 'index/') {
+ dirname = '';
+ }
+ listItem.append($('<a/>').attr('href',
+ DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+ highlightstring + item[2]).html(item[1]));
+ } else {
+ // normal html builders
+ listItem.append($('<a/>').attr('href',
+ item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+ highlightstring + item[2]).html(item[1]));
+ }
+ if (item[3]) {
+ listItem.append($('<span> (' + item[3] + ')</span>'));
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+ $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+ dataType: "text",
+ complete: function(jqxhr, textstatus) {
+ var data = jqxhr.responseText;
+ if (data !== '') {
+ listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+ }
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }});
+ } else {
+ // no source available, just display title
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }
+ }
+ // search finished, update title and status message
+ else {
+ Search.stopPulse();
+ Search.title.text(_('Search Results'));
+ if (!resultCount)
+ Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+ else
+ Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+ Search.status.fadeIn(500);
+ }
+ }
+ displayNextItem();
+ },
+
+ /**
+ * search for object names
+ */
+ performObjectSearch : function(object, otherterms) {
+ var filenames = this._index.filenames;
+ var objects = this._index.objects;
+ var objnames = this._index.objnames;
+ var titles = this._index.titles;
+
+ var i;
+ var results = [];
+
+ for (var prefix in objects) {
+ for (var name in objects[prefix]) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
+ var score = 0;
+ var parts = fullname.split('.');
+ // check for different match types: exact matches of full name or
+ // "last name" (i.e. last dotted part)
+ if (fullname == object || parts[parts.length - 1] == object) {
+ score += Scorer.objNameMatch;
+ // matches in last name
+ } else if (parts[parts.length - 1].indexOf(object) > -1) {
+ score += Scorer.objPartialMatch;
+ }
+ var match = objects[prefix][name];
+ var objname = objnames[match[1]][2];
+ var title = titles[match[0]];
+ // If more than one term searched for, we require other words to be
+ // found in the name/title/description
+ if (otherterms.length > 0) {
+ var haystack = (prefix + ' ' + name + ' ' +
+ objname + ' ' + title).toLowerCase();
+ var allfound = true;
+ for (i = 0; i < otherterms.length; i++) {
+ if (haystack.indexOf(otherterms[i]) == -1) {
+ allfound = false;
+ break;
+ }
+ }
+ if (!allfound) {
+ continue;
+ }
+ }
+ var descr = objname + _(', in ') + title;
+
+ var anchor = match[3];
+ if (anchor === '')
+ anchor = fullname;
+ else if (anchor == '-')
+ anchor = objnames[match[1]][1] + '-' + fullname;
+ // add custom score for some objects according to scorer
+ if (Scorer.objPrio.hasOwnProperty(match[2])) {
+ score += Scorer.objPrio[match[2]];
+ } else {
+ score += Scorer.objPrioDefault;
+ }
+ results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
+ }
+ }
+ }
+
+ return results;
+ },
+
+ /**
+ * search for full-text terms in the index
+ */
+ performTermsSearch : function(searchterms, excluded, terms, score) {
+ var filenames = this._index.filenames;
+ var titles = this._index.titles;
+
+ var i, j, file, files;
+ var fileMap = {};
+ var results = [];
+
+ // perform the search on the required terms
+ for (i = 0; i < searchterms.length; i++) {
+ var word = searchterms[i];
+ // no match but word was a required one
+ if ((files = terms[word]) === undefined)
+ break;
+ if (files.length === undefined) {
+ files = [files];
+ }
+ // create the mapping
+ for (j = 0; j < files.length; j++) {
+ file = files[j];
+ if (file in fileMap)
+ fileMap[file].push(word);
+ else
+ fileMap[file] = [word];
+ }
+ }
+
+ // now check if the files don't contain excluded terms
+ for (file in fileMap) {
+ var valid = true;
+
+ // check if all requirements are matched
+ if (fileMap[file].length != searchterms.length)
+ continue;
+
+ // ensure that none of the excluded terms is in the search result
+ for (i = 0; i < excluded.length; i++) {
+ if (terms[excluded[i]] == file ||
+ $u.contains(terms[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it to the result list
+ if (valid) {
+ results.push([filenames[file], titles[file], '', null, score]);
+ }
+ }
+ return results;
+ },
+
+ /**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurance, the
+ * latter for highlighting it.
+ */
+ makeSearchSummary : function(text, keywords, hlwords) {
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1)
+ start = i;
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlighted');
+ });
+ return rv;
+ }
+};
+
+$(document).ready(function() {
+ Search.init();
+}); \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/sidebar.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/sidebar.js
new file mode 100644
index 0000000..4f09a0d
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/sidebar.js
@@ -0,0 +1,159 @@
+/*
+ * sidebar.js
+ * ~~~~~~~~~~
+ *
+ * This script makes the Sphinx sidebar collapsible.
+ *
+ * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
+ * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
+ * used to collapse and expand the sidebar.
+ *
+ * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
+ * and the width of the sidebar and the margin-left of the document
+ * are decreased. When the sidebar is expanded the opposite happens.
+ * This script saves a per-browser/per-session cookie used to
+ * remember the position of the sidebar among the pages.
+ * Once the browser is closed the cookie is deleted and the position
+ * reset to the default (expanded).
+ *
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+$(function() {
+
+
+
+
+
+
+
+
+ // global elements used by the functions.
+ // the 'sidebarbutton' element is defined as global after its
+ // creation, in the add_sidebar_button function
+ var bodywrapper = $('.bodywrapper');
+ var sidebar = $('.sphinxsidebar');
+ var sidebarwrapper = $('.sphinxsidebarwrapper');
+
+ // for some reason, the document has no sidebar; do not run into errors
+ if (!sidebar.length) return;
+
+ // original margin-left of the bodywrapper and width of the sidebar
+ // with the sidebar expanded
+ var bw_margin_expanded = bodywrapper.css('margin-left');
+ var ssb_width_expanded = sidebar.width();
+
+ // margin-left of the bodywrapper and width of the sidebar
+ // with the sidebar collapsed
+ var bw_margin_collapsed = '.8em';
+ var ssb_width_collapsed = '.8em';
+
+ // colors used by the current theme
+ var dark_color = $('.related').css('background-color');
+ var light_color = $('.document').css('background-color');
+
+ function sidebar_is_collapsed() {
+ return sidebarwrapper.is(':not(:visible)');
+ }
+
+ function toggle_sidebar() {
+ if (sidebar_is_collapsed())
+ expand_sidebar();
+ else
+ collapse_sidebar();
+ }
+
+ function collapse_sidebar() {
+ sidebarwrapper.hide();
+ sidebar.css('width', ssb_width_collapsed);
+ bodywrapper.css('margin-left', bw_margin_collapsed);
+ sidebarbutton.css({
+ 'margin-left': '0',
+ 'height': bodywrapper.height()
+ });
+ sidebarbutton.find('span').text('»');
+ sidebarbutton.attr('title', _('Expand sidebar'));
+ document.cookie = 'sidebar=collapsed';
+ }
+
+ function expand_sidebar() {
+ bodywrapper.css('margin-left', bw_margin_expanded);
+ sidebar.css('width', ssb_width_expanded);
+ sidebarwrapper.show();
+ sidebarbutton.css({
+ 'margin-left': ssb_width_expanded-12,
+ 'height': bodywrapper.height()
+ });
+ sidebarbutton.find('span').text('«');
+ sidebarbutton.attr('title', _('Collapse sidebar'));
+ document.cookie = 'sidebar=expanded';
+ }
+
+ function add_sidebar_button() {
+ sidebarwrapper.css({
+ 'float': 'left',
+ 'margin-right': '0',
+ 'width': ssb_width_expanded - 28
+ });
+ // create the button
+ sidebar.append(
+ '<div id="sidebarbutton"><span>&laquo;</span></div>'
+ );
+ var sidebarbutton = $('#sidebarbutton');
+ light_color = sidebarbutton.css('background-color');
+ // find the height of the viewport to center the '<<' in the page
+ var viewport_height;
+ if (window.innerHeight)
+ viewport_height = window.innerHeight;
+ else
+ viewport_height = $(window).height();
+ sidebarbutton.find('span').css({
+ 'display': 'block',
+ 'margin-top': (viewport_height - sidebar.position().top - 20) / 2
+ });
+
+ sidebarbutton.click(toggle_sidebar);
+ sidebarbutton.attr('title', _('Collapse sidebar'));
+ sidebarbutton.css({
+ 'color': '#FFFFFF',
+ 'border-left': '1px solid ' + dark_color,
+ 'font-size': '1.2em',
+ 'cursor': 'pointer',
+ 'height': bodywrapper.height(),
+ 'padding-top': '1px',
+ 'margin-left': ssb_width_expanded - 12
+ });
+
+ sidebarbutton.hover(
+ function () {
+ $(this).css('background-color', dark_color);
+ },
+ function () {
+ $(this).css('background-color', light_color);
+ }
+ );
+ }
+
+ function set_position_from_cookie() {
+ if (!document.cookie)
+ return;
+ var items = document.cookie.split(';');
+ for(var k=0; k<items.length; k++) {
+ var key_val = items[k].split('=');
+ var key = key_val[0].replace(/ /, ""); // strip leading spaces
+ if (key == 'sidebar') {
+ var value = key_val[1];
+ if ((value == 'collapsed') && (!sidebar_is_collapsed()))
+ collapse_sidebar();
+ else if ((value == 'expanded') && (sidebar_is_collapsed()))
+ expand_sidebar();
+ }
+ }
+ }
+
+ add_sidebar_button();
+ var sidebarbutton = $('#sidebarbutton');
+ set_position_from_cookie();
+}); \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/underscore.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/underscore.js
new file mode 100644
index 0000000..a12f0d9
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/underscore.js
@@ -0,0 +1,1226 @@
+// Underscore.js 1.4.4
+// http://underscorejs.org
+// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+ // Baseline setup
+ // --------------
+
+ // Establish the root object, `window` in the browser, or `global` on the server.
+ var root = this;
+
+ // Save the previous value of the `_` variable.
+ var previousUnderscore = root._;
+
+ // Establish the object that gets returned to break out of a loop iteration.
+ var breaker = {};
+
+ // Save bytes in the minified (but not gzipped) version:
+ var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+ // Create quick reference variables for speed access to core prototypes.
+ var push = ArrayProto.push,
+ slice = ArrayProto.slice,
+ concat = ArrayProto.concat,
+ toString = ObjProto.toString,
+ hasOwnProperty = ObjProto.hasOwnProperty;
+
+ // All **ECMAScript 5** native function implementations that we hope to use
+ // are declared here.
+ var
+ nativeForEach = ArrayProto.forEach,
+ nativeMap = ArrayProto.map,
+ nativeReduce = ArrayProto.reduce,
+ nativeReduceRight = ArrayProto.reduceRight,
+ nativeFilter = ArrayProto.filter,
+ nativeEvery = ArrayProto.every,
+ nativeSome = ArrayProto.some,
+ nativeIndexOf = ArrayProto.indexOf,
+ nativeLastIndexOf = ArrayProto.lastIndexOf,
+ nativeIsArray = Array.isArray,
+ nativeKeys = Object.keys,
+ nativeBind = FuncProto.bind;
+
+ // Create a safe reference to the Underscore object for use below.
+ var _ = function(obj) {
+ if (obj instanceof _) return obj;
+ if (!(this instanceof _)) return new _(obj);
+ this._wrapped = obj;
+ };
+
+ // Export the Underscore object for **Node.js**, with
+ // backwards-compatibility for the old `require()` API. If we're in
+ // the browser, add `_` as a global object via a string identifier,
+ // for Closure Compiler "advanced" mode.
+ if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ exports = module.exports = _;
+ }
+ exports._ = _;
+ } else {
+ root._ = _;
+ }
+
+ // Current version.
+ _.VERSION = '1.4.4';
+
+ // Collection Functions
+ // --------------------
+
+ // The cornerstone, an `each` implementation, aka `forEach`.
+ // Handles objects with the built-in `forEach`, arrays, and raw objects.
+ // Delegates to **ECMAScript 5**'s native `forEach` if available.
+ var each = _.each = _.forEach = function(obj, iterator, context) {
+ if (obj == null) return;
+ if (nativeForEach && obj.forEach === nativeForEach) {
+ obj.forEach(iterator, context);
+ } else if (obj.length === +obj.length) {
+ for (var i = 0, l = obj.length; i < l; i++) {
+ if (iterator.call(context, obj[i], i, obj) === breaker) return;
+ }
+ } else {
+ for (var key in obj) {
+ if (_.has(obj, key)) {
+ if (iterator.call(context, obj[key], key, obj) === breaker) return;
+ }
+ }
+ }
+ };
+
+ // Return the results of applying the iterator to each element.
+ // Delegates to **ECMAScript 5**'s native `map` if available.
+ _.map = _.collect = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+ each(obj, function(value, index, list) {
+ results[results.length] = iterator.call(context, value, index, list);
+ });
+ return results;
+ };
+
+ var reduceError = 'Reduce of empty array with no initial value';
+
+ // **Reduce** builds up a single result from a list of values, aka `inject`,
+ // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+ _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+ var initial = arguments.length > 2;
+ if (obj == null) obj = [];
+ if (nativeReduce && obj.reduce === nativeReduce) {
+ if (context) iterator = _.bind(iterator, context);
+ return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+ }
+ each(obj, function(value, index, list) {
+ if (!initial) {
+ memo = value;
+ initial = true;
+ } else {
+ memo = iterator.call(context, memo, value, index, list);
+ }
+ });
+ if (!initial) throw new TypeError(reduceError);
+ return memo;
+ };
+
+ // The right-associative version of reduce, also known as `foldr`.
+ // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+ _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+ var initial = arguments.length > 2;
+ if (obj == null) obj = [];
+ if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+ if (context) iterator = _.bind(iterator, context);
+ return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+ }
+ var length = obj.length;
+ if (length !== +length) {
+ var keys = _.keys(obj);
+ length = keys.length;
+ }
+ each(obj, function(value, index, list) {
+ index = keys ? keys[--length] : --length;
+ if (!initial) {
+ memo = obj[index];
+ initial = true;
+ } else {
+ memo = iterator.call(context, memo, obj[index], index, list);
+ }
+ });
+ if (!initial) throw new TypeError(reduceError);
+ return memo;
+ };
+
+ // Return the first value which passes a truth test. Aliased as `detect`.
+ _.find = _.detect = function(obj, iterator, context) {
+ var result;
+ any(obj, function(value, index, list) {
+ if (iterator.call(context, value, index, list)) {
+ result = value;
+ return true;
+ }
+ });
+ return result;
+ };
+
+ // Return all the elements that pass a truth test.
+ // Delegates to **ECMAScript 5**'s native `filter` if available.
+ // Aliased as `select`.
+ _.filter = _.select = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+ each(obj, function(value, index, list) {
+ if (iterator.call(context, value, index, list)) results[results.length] = value;
+ });
+ return results;
+ };
+
+ // Return all the elements for which a truth test fails.
+ _.reject = function(obj, iterator, context) {
+ return _.filter(obj, function(value, index, list) {
+ return !iterator.call(context, value, index, list);
+ }, context);
+ };
+
+ // Determine whether all of the elements match a truth test.
+ // Delegates to **ECMAScript 5**'s native `every` if available.
+ // Aliased as `all`.
+ _.every = _.all = function(obj, iterator, context) {
+ iterator || (iterator = _.identity);
+ var result = true;
+ if (obj == null) return result;
+ if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+ each(obj, function(value, index, list) {
+ if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+ });
+ return !!result;
+ };
+
+ // Determine if at least one element in the object matches a truth test.
+ // Delegates to **ECMAScript 5**'s native `some` if available.
+ // Aliased as `any`.
+ var any = _.some = _.any = function(obj, iterator, context) {
+ iterator || (iterator = _.identity);
+ var result = false;
+ if (obj == null) return result;
+ if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+ each(obj, function(value, index, list) {
+ if (result || (result = iterator.call(context, value, index, list))) return breaker;
+ });
+ return !!result;
+ };
+
+ // Determine if the array or object contains a given value (using `===`).
+ // Aliased as `include`.
+ _.contains = _.include = function(obj, target) {
+ if (obj == null) return false;
+ if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+ return any(obj, function(value) {
+ return value === target;
+ });
+ };
+
+ // Invoke a method (with arguments) on every item in a collection.
+ _.invoke = function(obj, method) {
+ var args = slice.call(arguments, 2);
+ var isFunc = _.isFunction(method);
+ return _.map(obj, function(value) {
+ return (isFunc ? method : value[method]).apply(value, args);
+ });
+ };
+
+ // Convenience version of a common use case of `map`: fetching a property.
+ _.pluck = function(obj, key) {
+ return _.map(obj, function(value){ return value[key]; });
+ };
+
+ // Convenience version of a common use case of `filter`: selecting only objects
+ // containing specific `key:value` pairs.
+ _.where = function(obj, attrs, first) {
+ if (_.isEmpty(attrs)) return first ? null : [];
+ return _[first ? 'find' : 'filter'](obj, function(value) {
+ for (var key in attrs) {
+ if (attrs[key] !== value[key]) return false;
+ }
+ return true;
+ });
+ };
+
+ // Convenience version of a common use case of `find`: getting the first object
+ // containing specific `key:value` pairs.
+ _.findWhere = function(obj, attrs) {
+ return _.where(obj, attrs, true);
+ };
+
+ // Return the maximum element or (element-based computation).
+ // Can't optimize arrays of integers longer than 65,535 elements.
+ // See: https://bugs.webkit.org/show_bug.cgi?id=80797
+ _.max = function(obj, iterator, context) {
+ if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+ return Math.max.apply(Math, obj);
+ }
+ if (!iterator && _.isEmpty(obj)) return -Infinity;
+ var result = {computed : -Infinity, value: -Infinity};
+ each(obj, function(value, index, list) {
+ var computed = iterator ? iterator.call(context, value, index, list) : value;
+ computed >= result.computed && (result = {value : value, computed : computed});
+ });
+ return result.value;
+ };
+
+ // Return the minimum element (or element-based computation).
+ _.min = function(obj, iterator, context) {
+ if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+ return Math.min.apply(Math, obj);
+ }
+ if (!iterator && _.isEmpty(obj)) return Infinity;
+ var result = {computed : Infinity, value: Infinity};
+ each(obj, function(value, index, list) {
+ var computed = iterator ? iterator.call(context, value, index, list) : value;
+ computed < result.computed && (result = {value : value, computed : computed});
+ });
+ return result.value;
+ };
+
+ // Shuffle an array.
+ _.shuffle = function(obj) {
+ var rand;
+ var index = 0;
+ var shuffled = [];
+ each(obj, function(value) {
+ rand = _.random(index++);
+ shuffled[index - 1] = shuffled[rand];
+ shuffled[rand] = value;
+ });
+ return shuffled;
+ };
+
+ // An internal function to generate lookup iterators.
+ var lookupIterator = function(value) {
+ return _.isFunction(value) ? value : function(obj){ return obj[value]; };
+ };
+
+ // Sort the object's values by a criterion produced by an iterator.
+ _.sortBy = function(obj, value, context) {
+ var iterator = lookupIterator(value);
+ return _.pluck(_.map(obj, function(value, index, list) {
+ return {
+ value : value,
+ index : index,
+ criteria : iterator.call(context, value, index, list)
+ };
+ }).sort(function(left, right) {
+ var a = left.criteria;
+ var b = right.criteria;
+ if (a !== b) {
+ if (a > b || a === void 0) return 1;
+ if (a < b || b === void 0) return -1;
+ }
+ return left.index < right.index ? -1 : 1;
+ }), 'value');
+ };
+
+ // An internal function used for aggregate "group by" operations.
+ var group = function(obj, value, context, behavior) {
+ var result = {};
+ var iterator = lookupIterator(value || _.identity);
+ each(obj, function(value, index) {
+ var key = iterator.call(context, value, index, obj);
+ behavior(result, key, value);
+ });
+ return result;
+ };
+
+ // Groups the object's values by a criterion. Pass either a string attribute
+ // to group by, or a function that returns the criterion.
+ _.groupBy = function(obj, value, context) {
+ return group(obj, value, context, function(result, key, value) {
+ (_.has(result, key) ? result[key] : (result[key] = [])).push(value);
+ });
+ };
+
+ // Counts instances of an object that group by a certain criterion. Pass
+ // either a string attribute to count by, or a function that returns the
+ // criterion.
+ _.countBy = function(obj, value, context) {
+ return group(obj, value, context, function(result, key) {
+ if (!_.has(result, key)) result[key] = 0;
+ result[key]++;
+ });
+ };
+
+ // Use a comparator function to figure out the smallest index at which
+ // an object should be inserted so as to maintain order. Uses binary search.
+ _.sortedIndex = function(array, obj, iterator, context) {
+ iterator = iterator == null ? _.identity : lookupIterator(iterator);
+ var value = iterator.call(context, obj);
+ var low = 0, high = array.length;
+ while (low < high) {
+ var mid = (low + high) >>> 1;
+ iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
+ }
+ return low;
+ };
+
+ // Safely convert anything iterable into a real, live array.
+ _.toArray = function(obj) {
+ if (!obj) return [];
+ if (_.isArray(obj)) return slice.call(obj);
+ if (obj.length === +obj.length) return _.map(obj, _.identity);
+ return _.values(obj);
+ };
+
+ // Return the number of elements in an object.
+ _.size = function(obj) {
+ if (obj == null) return 0;
+ return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
+ };
+
+ // Array Functions
+ // ---------------
+
+ // Get the first element of an array. Passing **n** will return the first N
+ // values in the array. Aliased as `head` and `take`. The **guard** check
+ // allows it to work with `_.map`.
+ _.first = _.head = _.take = function(array, n, guard) {
+ if (array == null) return void 0;
+ return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+ };
+
+ // Returns everything but the last entry of the array. Especially useful on
+ // the arguments object. Passing **n** will return all the values in
+ // the array, excluding the last N. The **guard** check allows it to work with
+ // `_.map`.
+ _.initial = function(array, n, guard) {
+ return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+ };
+
+ // Get the last element of an array. Passing **n** will return the last N
+ // values in the array. The **guard** check allows it to work with `_.map`.
+ _.last = function(array, n, guard) {
+ if (array == null) return void 0;
+ if ((n != null) && !guard) {
+ return slice.call(array, Math.max(array.length - n, 0));
+ } else {
+ return array[array.length - 1];
+ }
+ };
+
+ // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+ // Especially useful on the arguments object. Passing an **n** will return
+ // the rest N values in the array. The **guard**
+ // check allows it to work with `_.map`.
+ _.rest = _.tail = _.drop = function(array, n, guard) {
+ return slice.call(array, (n == null) || guard ? 1 : n);
+ };
+
+ // Trim out all falsy values from an array.
+ _.compact = function(array) {
+ return _.filter(array, _.identity);
+ };
+
+ // Internal implementation of a recursive `flatten` function.
+ var flatten = function(input, shallow, output) {
+ each(input, function(value) {
+ if (_.isArray(value)) {
+ shallow ? push.apply(output, value) : flatten(value, shallow, output);
+ } else {
+ output.push(value);
+ }
+ });
+ return output;
+ };
+
+ // Return a completely flattened version of an array.
+ _.flatten = function(array, shallow) {
+ return flatten(array, shallow, []);
+ };
+
+ // Return a version of the array that does not contain the specified value(s).
+ _.without = function(array) {
+ return _.difference(array, slice.call(arguments, 1));
+ };
+
+ // Produce a duplicate-free version of the array. If the array has already
+ // been sorted, you have the option of using a faster algorithm.
+ // Aliased as `unique`.
+ _.uniq = _.unique = function(array, isSorted, iterator, context) {
+ if (_.isFunction(isSorted)) {
+ context = iterator;
+ iterator = isSorted;
+ isSorted = false;
+ }
+ var initial = iterator ? _.map(array, iterator, context) : array;
+ var results = [];
+ var seen = [];
+ each(initial, function(value, index) {
+ if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
+ seen.push(value);
+ results.push(array[index]);
+ }
+ });
+ return results;
+ };
+
+ // Produce an array that contains the union: each distinct element from all of
+ // the passed-in arrays.
+ _.union = function() {
+ return _.uniq(concat.apply(ArrayProto, arguments));
+ };
+
+ // Produce an array that contains every item shared between all the
+ // passed-in arrays.
+ _.intersection = function(array) {
+ var rest = slice.call(arguments, 1);
+ return _.filter(_.uniq(array), function(item) {
+ return _.every(rest, function(other) {
+ return _.indexOf(other, item) >= 0;
+ });
+ });
+ };
+
+ // Take the difference between one array and a number of other arrays.
+ // Only the elements present in just the first array will remain.
+ _.difference = function(array) {
+ var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
+ return _.filter(array, function(value){ return !_.contains(rest, value); });
+ };
+
+ // Zip together multiple lists into a single array -- elements that share
+ // an index go together.
+ _.zip = function() {
+ var args = slice.call(arguments);
+ var length = _.max(_.pluck(args, 'length'));
+ var results = new Array(length);
+ for (var i = 0; i < length; i++) {
+ results[i] = _.pluck(args, "" + i);
+ }
+ return results;
+ };
+
+ // Converts lists into objects. Pass either a single array of `[key, value]`
+ // pairs, or two parallel arrays of the same length -- one of keys, and one of
+ // the corresponding values.
+ _.object = function(list, values) {
+ if (list == null) return {};
+ var result = {};
+ for (var i = 0, l = list.length; i < l; i++) {
+ if (values) {
+ result[list[i]] = values[i];
+ } else {
+ result[list[i][0]] = list[i][1];
+ }
+ }
+ return result;
+ };
+
+ // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+ // we need this function. Return the position of the first occurrence of an
+ // item in an array, or -1 if the item is not included in the array.
+ // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+ // If the array is large and already in sort order, pass `true`
+ // for **isSorted** to use binary search.
+ _.indexOf = function(array, item, isSorted) {
+ if (array == null) return -1;
+ var i = 0, l = array.length;
+ if (isSorted) {
+ if (typeof isSorted == 'number') {
+ i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted);
+ } else {
+ i = _.sortedIndex(array, item);
+ return array[i] === item ? i : -1;
+ }
+ }
+ if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
+ for (; i < l; i++) if (array[i] === item) return i;
+ return -1;
+ };
+
+ // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+ _.lastIndexOf = function(array, item, from) {
+ if (array == null) return -1;
+ var hasIndex = from != null;
+ if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
+ return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
+ }
+ var i = (hasIndex ? from : array.length);
+ while (i--) if (array[i] === item) return i;
+ return -1;
+ };
+
+ // Generate an integer Array containing an arithmetic progression. A port of
+ // the native Python `range()` function. See
+ // [the Python documentation](http://docs.python.org/library/functions.html#range).
+ _.range = function(start, stop, step) {
+ if (arguments.length <= 1) {
+ stop = start || 0;
+ start = 0;
+ }
+ step = arguments[2] || 1;
+
+ var len = Math.max(Math.ceil((stop - start) / step), 0);
+ var idx = 0;
+ var range = new Array(len);
+
+ while(idx < len) {
+ range[idx++] = start;
+ start += step;
+ }
+
+ return range;
+ };
+
+ // Function (ahem) Functions
+ // ------------------
+
+ // Create a function bound to a given object (assigning `this`, and arguments,
+ // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+ // available.
+ _.bind = function(func, context) {
+ if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+ var args = slice.call(arguments, 2);
+ return function() {
+ return func.apply(context, args.concat(slice.call(arguments)));
+ };
+ };
+
+ // Partially apply a function by creating a version that has had some of its
+ // arguments pre-filled, without changing its dynamic `this` context.
+ _.partial = function(func) {
+ var args = slice.call(arguments, 1);
+ return function() {
+ return func.apply(this, args.concat(slice.call(arguments)));
+ };
+ };
+
+ // Bind all of an object's methods to that object. Useful for ensuring that
+ // all callbacks defined on an object belong to it.
+ _.bindAll = function(obj) {
+ var funcs = slice.call(arguments, 1);
+ if (funcs.length === 0) funcs = _.functions(obj);
+ each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+ return obj;
+ };
+
+ // Memoize an expensive function by storing its results.
+ _.memoize = function(func, hasher) {
+ var memo = {};
+ hasher || (hasher = _.identity);
+ return function() {
+ var key = hasher.apply(this, arguments);
+ return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+ };
+ };
+
+ // Delays a function for the given number of milliseconds, and then calls
+ // it with the arguments supplied.
+ _.delay = function(func, wait) {
+ var args = slice.call(arguments, 2);
+ return setTimeout(function(){ return func.apply(null, args); }, wait);
+ };
+
+ // Defers a function, scheduling it to run after the current call stack has
+ // cleared.
+ _.defer = function(func) {
+ return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+ };
+
+ // Returns a function, that, when invoked, will only be triggered at most once
+ // during a given window of time.
+ _.throttle = function(func, wait) {
+ var context, args, timeout, result;
+ var previous = 0;
+ var later = function() {
+ previous = new Date;
+ timeout = null;
+ result = func.apply(context, args);
+ };
+ return function() {
+ var now = new Date;
+ var remaining = wait - (now - previous);
+ context = this;
+ args = arguments;
+ if (remaining <= 0) {
+ clearTimeout(timeout);
+ timeout = null;
+ previous = now;
+ result = func.apply(context, args);
+ } else if (!timeout) {
+ timeout = setTimeout(later, remaining);
+ }
+ return result;
+ };
+ };
+
+ // Returns a function, that, as long as it continues to be invoked, will not
+ // be triggered. The function will be called after it stops being called for
+ // N milliseconds. If `immediate` is passed, trigger the function on the
+ // leading edge, instead of the trailing.
+ _.debounce = function(func, wait, immediate) {
+ var timeout, result;
+ return function() {
+ var context = this, args = arguments;
+ var later = function() {
+ timeout = null;
+ if (!immediate) result = func.apply(context, args);
+ };
+ var callNow = immediate && !timeout;
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+ if (callNow) result = func.apply(context, args);
+ return result;
+ };
+ };
+
+ // Returns a function that will be executed at most one time, no matter how
+ // often you call it. Useful for lazy initialization.
+ _.once = function(func) {
+ var ran = false, memo;
+ return function() {
+ if (ran) return memo;
+ ran = true;
+ memo = func.apply(this, arguments);
+ func = null;
+ return memo;
+ };
+ };
+
+ // Returns the first function passed as an argument to the second,
+ // allowing you to adjust arguments, run code before and after, and
+ // conditionally execute the original function.
+ _.wrap = function(func, wrapper) {
+ return function() {
+ var args = [func];
+ push.apply(args, arguments);
+ return wrapper.apply(this, args);
+ };
+ };
+
+ // Returns a function that is the composition of a list of functions, each
+ // consuming the return value of the function that follows.
+ _.compose = function() {
+ var funcs = arguments;
+ return function() {
+ var args = arguments;
+ for (var i = funcs.length - 1; i >= 0; i--) {
+ args = [funcs[i].apply(this, args)];
+ }
+ return args[0];
+ };
+ };
+
+ // Returns a function that will only be executed after being called N times.
+ _.after = function(times, func) {
+ if (times <= 0) return func();
+ return function() {
+ if (--times < 1) {
+ return func.apply(this, arguments);
+ }
+ };
+ };
+
+ // Object Functions
+ // ----------------
+
+ // Retrieve the names of an object's properties.
+ // Delegates to **ECMAScript 5**'s native `Object.keys`
+ _.keys = nativeKeys || function(obj) {
+ if (obj !== Object(obj)) throw new TypeError('Invalid object');
+ var keys = [];
+ for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+ return keys;
+ };
+
+ // Retrieve the values of an object's properties.
+ _.values = function(obj) {
+ var values = [];
+ for (var key in obj) if (_.has(obj, key)) values.push(obj[key]);
+ return values;
+ };
+
+ // Convert an object into a list of `[key, value]` pairs.
+ _.pairs = function(obj) {
+ var pairs = [];
+ for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]);
+ return pairs;
+ };
+
+ // Invert the keys and values of an object. The values must be serializable.
+ _.invert = function(obj) {
+ var result = {};
+ for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key;
+ return result;
+ };
+
+ // Return a sorted list of the function names available on the object.
+ // Aliased as `methods`
+ _.functions = _.methods = function(obj) {
+ var names = [];
+ for (var key in obj) {
+ if (_.isFunction(obj[key])) names.push(key);
+ }
+ return names.sort();
+ };
+
+ // Extend a given object with all the properties in passed-in object(s).
+ _.extend = function(obj) {
+ each(slice.call(arguments, 1), function(source) {
+ if (source) {
+ for (var prop in source) {
+ obj[prop] = source[prop];
+ }
+ }
+ });
+ return obj;
+ };
+
+ // Return a copy of the object only containing the whitelisted properties.
+ _.pick = function(obj) {
+ var copy = {};
+ var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+ each(keys, function(key) {
+ if (key in obj) copy[key] = obj[key];
+ });
+ return copy;
+ };
+
+ // Return a copy of the object without the blacklisted properties.
+ _.omit = function(obj) {
+ var copy = {};
+ var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+ for (var key in obj) {
+ if (!_.contains(keys, key)) copy[key] = obj[key];
+ }
+ return copy;
+ };
+
+ // Fill in a given object with default properties.
+ _.defaults = function(obj) {
+ each(slice.call(arguments, 1), function(source) {
+ if (source) {
+ for (var prop in source) {
+ if (obj[prop] == null) obj[prop] = source[prop];
+ }
+ }
+ });
+ return obj;
+ };
+
+ // Create a (shallow-cloned) duplicate of an object.
+ _.clone = function(obj) {
+ if (!_.isObject(obj)) return obj;
+ return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+ };
+
+ // Invokes interceptor with the obj, and then returns obj.
+ // The primary purpose of this method is to "tap into" a method chain, in
+ // order to perform operations on intermediate results within the chain.
+ _.tap = function(obj, interceptor) {
+ interceptor(obj);
+ return obj;
+ };
+
+ // Internal recursive comparison function for `isEqual`.
+ var eq = function(a, b, aStack, bStack) {
+ // Identical objects are equal. `0 === -0`, but they aren't identical.
+ // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+ if (a === b) return a !== 0 || 1 / a == 1 / b;
+ // A strict comparison is necessary because `null == undefined`.
+ if (a == null || b == null) return a === b;
+ // Unwrap any wrapped objects.
+ if (a instanceof _) a = a._wrapped;
+ if (b instanceof _) b = b._wrapped;
+ // Compare `[[Class]]` names.
+ var className = toString.call(a);
+ if (className != toString.call(b)) return false;
+ switch (className) {
+ // Strings, numbers, dates, and booleans are compared by value.
+ case '[object String]':
+ // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+ // equivalent to `new String("5")`.
+ return a == String(b);
+ case '[object Number]':
+ // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+ // other numeric values.
+ return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+ case '[object Date]':
+ case '[object Boolean]':
+ // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+ // millisecond representations. Note that invalid dates with millisecond representations
+ // of `NaN` are not equivalent.
+ return +a == +b;
+ // RegExps are compared by their source patterns and flags.
+ case '[object RegExp]':
+ return a.source == b.source &&
+ a.global == b.global &&
+ a.multiline == b.multiline &&
+ a.ignoreCase == b.ignoreCase;
+ }
+ if (typeof a != 'object' || typeof b != 'object') return false;
+ // Assume equality for cyclic structures. The algorithm for detecting cyclic
+ // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+ var length = aStack.length;
+ while (length--) {
+ // Linear search. Performance is inversely proportional to the number of
+ // unique nested structures.
+ if (aStack[length] == a) return bStack[length] == b;
+ }
+ // Add the first object to the stack of traversed objects.
+ aStack.push(a);
+ bStack.push(b);
+ var size = 0, result = true;
+ // Recursively compare objects and arrays.
+ if (className == '[object Array]') {
+ // Compare array lengths to determine if a deep comparison is necessary.
+ size = a.length;
+ result = size == b.length;
+ if (result) {
+ // Deep compare the contents, ignoring non-numeric properties.
+ while (size--) {
+ if (!(result = eq(a[size], b[size], aStack, bStack))) break;
+ }
+ }
+ } else {
+ // Objects with different constructors are not equivalent, but `Object`s
+ // from different frames are.
+ var aCtor = a.constructor, bCtor = b.constructor;
+ if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+ _.isFunction(bCtor) && (bCtor instanceof bCtor))) {
+ return false;
+ }
+ // Deep compare objects.
+ for (var key in a) {
+ if (_.has(a, key)) {
+ // Count the expected number of properties.
+ size++;
+ // Deep compare each member.
+ if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
+ }
+ }
+ // Ensure that both objects contain the same number of properties.
+ if (result) {
+ for (key in b) {
+ if (_.has(b, key) && !(size--)) break;
+ }
+ result = !size;
+ }
+ }
+ // Remove the first object from the stack of traversed objects.
+ aStack.pop();
+ bStack.pop();
+ return result;
+ };
+
+ // Perform a deep comparison to check if two objects are equal.
+ _.isEqual = function(a, b) {
+ return eq(a, b, [], []);
+ };
+
+ // Is a given array, string, or object empty?
+ // An "empty" object has no enumerable own-properties.
+ _.isEmpty = function(obj) {
+ if (obj == null) return true;
+ if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+ for (var key in obj) if (_.has(obj, key)) return false;
+ return true;
+ };
+
+ // Is a given value a DOM element?
+ _.isElement = function(obj) {
+ return !!(obj && obj.nodeType === 1);
+ };
+
+ // Is a given value an array?
+ // Delegates to ECMA5's native Array.isArray
+ _.isArray = nativeIsArray || function(obj) {
+ return toString.call(obj) == '[object Array]';
+ };
+
+ // Is a given variable an object?
+ _.isObject = function(obj) {
+ return obj === Object(obj);
+ };
+
+ // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
+ each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
+ _['is' + name] = function(obj) {
+ return toString.call(obj) == '[object ' + name + ']';
+ };
+ });
+
+ // Define a fallback version of the method in browsers (ahem, IE), where
+ // there isn't any inspectable "Arguments" type.
+ if (!_.isArguments(arguments)) {
+ _.isArguments = function(obj) {
+ return !!(obj && _.has(obj, 'callee'));
+ };
+ }
+
+ // Optimize `isFunction` if appropriate.
+ if (typeof (/./) !== 'function') {
+ _.isFunction = function(obj) {
+ return typeof obj === 'function';
+ };
+ }
+
+ // Is a given object a finite number?
+ _.isFinite = function(obj) {
+ return isFinite(obj) && !isNaN(parseFloat(obj));
+ };
+
+ // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+ _.isNaN = function(obj) {
+ return _.isNumber(obj) && obj != +obj;
+ };
+
+ // Is a given value a boolean?
+ _.isBoolean = function(obj) {
+ return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+ };
+
+ // Is a given value equal to null?
+ _.isNull = function(obj) {
+ return obj === null;
+ };
+
+ // Is a given variable undefined?
+ _.isUndefined = function(obj) {
+ return obj === void 0;
+ };
+
+ // Shortcut function for checking if an object has a given property directly
+ // on itself (in other words, not on a prototype).
+ _.has = function(obj, key) {
+ return hasOwnProperty.call(obj, key);
+ };
+
+ // Utility Functions
+ // -----------------
+
+ // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+ // previous owner. Returns a reference to the Underscore object.
+ _.noConflict = function() {
+ root._ = previousUnderscore;
+ return this;
+ };
+
+ // Keep the identity function around for default iterators.
+ _.identity = function(value) {
+ return value;
+ };
+
+ // Run a function **n** times.
+ _.times = function(n, iterator, context) {
+ var accum = Array(n);
+ for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
+ return accum;
+ };
+
+ // Return a random integer between min and max (inclusive).
+ _.random = function(min, max) {
+ if (max == null) {
+ max = min;
+ min = 0;
+ }
+ return min + Math.floor(Math.random() * (max - min + 1));
+ };
+
+ // List of HTML entities for escaping.
+ var entityMap = {
+ escape: {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;',
+ '"': '&quot;',
+ "'": '&#x27;',
+ '/': '&#x2F;'
+ }
+ };
+ entityMap.unescape = _.invert(entityMap.escape);
+
+ // Regexes containing the keys and values listed immediately above.
+ var entityRegexes = {
+ escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
+ unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
+ };
+
+ // Functions for escaping and unescaping strings to/from HTML interpolation.
+ _.each(['escape', 'unescape'], function(method) {
+ _[method] = function(string) {
+ if (string == null) return '';
+ return ('' + string).replace(entityRegexes[method], function(match) {
+ return entityMap[method][match];
+ });
+ };
+ });
+
+ // If the value of the named property is a function then invoke it;
+ // otherwise, return it.
+ _.result = function(object, property) {
+ if (object == null) return null;
+ var value = object[property];
+ return _.isFunction(value) ? value.call(object) : value;
+ };
+
+ // Add your own custom functions to the Underscore object.
+ _.mixin = function(obj) {
+ each(_.functions(obj), function(name){
+ var func = _[name] = obj[name];
+ _.prototype[name] = function() {
+ var args = [this._wrapped];
+ push.apply(args, arguments);
+ return result.call(this, func.apply(_, args));
+ };
+ });
+ };
+
+ // Generate a unique integer id (unique within the entire client session).
+ // Useful for temporary DOM ids.
+ var idCounter = 0;
+ _.uniqueId = function(prefix) {
+ var id = ++idCounter + '';
+ return prefix ? prefix + id : id;
+ };
+
+ // By default, Underscore uses ERB-style template delimiters, change the
+ // following template settings to use alternative delimiters.
+ _.templateSettings = {
+ evaluate : /<%([\s\S]+?)%>/g,
+ interpolate : /<%=([\s\S]+?)%>/g,
+ escape : /<%-([\s\S]+?)%>/g
+ };
+
+ // When customizing `templateSettings`, if you don't want to define an
+ // interpolation, evaluation or escaping regex, we need one that is
+ // guaranteed not to match.
+ var noMatch = /(.)^/;
+
+ // Certain characters need to be escaped so that they can be put into a
+ // string literal.
+ var escapes = {
+ "'": "'",
+ '\\': '\\',
+ '\r': 'r',
+ '\n': 'n',
+ '\t': 't',
+ '\u2028': 'u2028',
+ '\u2029': 'u2029'
+ };
+
+ var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+
+ // JavaScript micro-templating, similar to John Resig's implementation.
+ // Underscore templating handles arbitrary delimiters, preserves whitespace,
+ // and correctly escapes quotes within interpolated code.
+ _.template = function(text, data, settings) {
+ var render;
+ settings = _.defaults({}, settings, _.templateSettings);
+
+ // Combine delimiters into one regular expression via alternation.
+ var matcher = new RegExp([
+ (settings.escape || noMatch).source,
+ (settings.interpolate || noMatch).source,
+ (settings.evaluate || noMatch).source
+ ].join('|') + '|$', 'g');
+
+ // Compile the template source, escaping string literals appropriately.
+ var index = 0;
+ var source = "__p+='";
+ text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+ source += text.slice(index, offset)
+ .replace(escaper, function(match) { return '\\' + escapes[match]; });
+
+ if (escape) {
+ source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+ }
+ if (interpolate) {
+ source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+ }
+ if (evaluate) {
+ source += "';\n" + evaluate + "\n__p+='";
+ }
+ index = offset + match.length;
+ return match;
+ });
+ source += "';\n";
+
+ // If a variable is not specified, place data values in local scope.
+ if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+ source = "var __t,__p='',__j=Array.prototype.join," +
+ "print=function(){__p+=__j.call(arguments,'');};\n" +
+ source + "return __p;\n";
+
+ try {
+ render = new Function(settings.variable || 'obj', '_', source);
+ } catch (e) {
+ e.source = source;
+ throw e;
+ }
+
+ if (data) return render(data, _);
+ var template = function(data) {
+ return render.call(this, data, _);
+ };
+
+ // Provide the compiled function source as a convenience for precompilation.
+ template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+
+ return template;
+ };
+
+ // Add a "chain" function, which will delegate to the wrapper.
+ _.chain = function(obj) {
+ return _(obj).chain();
+ };
+
+ // OOP
+ // ---------------
+ // If Underscore is called as a function, it returns a wrapped object that
+ // can be used OO-style. This wrapper holds altered versions of all the
+ // underscore functions. Wrapped objects may be chained.
+
+ // Helper function to continue chaining intermediate results.
+ var result = function(obj) {
+ return this._chain ? _(obj).chain() : obj;
+ };
+
+ // Add all of the Underscore functions to the wrapper object.
+ _.mixin(_);
+
+ // Add all mutator Array functions to the wrapper.
+ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+ var method = ArrayProto[name];
+ _.prototype[name] = function() {
+ var obj = this._wrapped;
+ method.apply(obj, arguments);
+ if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
+ return result.call(this, obj);
+ };
+ });
+
+ // Add all accessor Array functions to the wrapper.
+ each(['concat', 'join', 'slice'], function(name) {
+ var method = ArrayProto[name];
+ _.prototype[name] = function() {
+ return result.call(this, method.apply(this._wrapped, arguments));
+ };
+ });
+
+ _.extend(_.prototype, {
+
+ // Start chaining a wrapped Underscore object.
+ chain: function() {
+ this._chain = true;
+ return this;
+ },
+
+ // Extracts the result from a wrapped and chained object.
+ value: function() {
+ return this._wrapped;
+ }
+
+ });
+
+}).call(this);
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up-pressed.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up-pressed.png
new file mode 100644
index 0000000..8bd587a
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up-pressed.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up.png b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up.png
new file mode 100644
index 0000000..b946256
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/up.png
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/websupport.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/websupport.js
new file mode 100644
index 0000000..71c0a13
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/_static/websupport.js
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilties for all documentation.
+ *
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+ $.fn.autogrow = function() {
+ return this.each(function() {
+ var textarea = this;
+
+ $.fn.autogrow.resize(textarea);
+
+ $(textarea)
+ .focus(function() {
+ textarea.interval = setInterval(function() {
+ $.fn.autogrow.resize(textarea);
+ }, 500);
+ })
+ .blur(function() {
+ clearInterval(textarea.interval);
+ });
+ });
+ };
+
+ $.fn.autogrow.resize = function(textarea) {
+ var lineHeight = parseInt($(textarea).css('line-height'), 10);
+ var lines = textarea.value.split('\n');
+ var columns = textarea.cols;
+ var lineCount = 0;
+ $.each(lines, function() {
+ lineCount += Math.ceil(this.length / columns) || 1;
+ });
+ var height = lineHeight * (lineCount + 1);
+ $(textarea).css('height', height);
+ };
+})(jQuery);
+
+(function($) {
+ var comp, by;
+
+ function init() {
+ initEvents();
+ initComparator();
+ }
+
+ function initEvents() {
+ $('a.comment-close').live("click", function(event) {
+ event.preventDefault();
+ hide($(this).attr('id').substring(2));
+ });
+ $('a.vote').live("click", function(event) {
+ event.preventDefault();
+ handleVote($(this));
+ });
+ $('a.reply').live("click", function(event) {
+ event.preventDefault();
+ openReply($(this).attr('id').substring(2));
+ });
+ $('a.close-reply').live("click", function(event) {
+ event.preventDefault();
+ closeReply($(this).attr('id').substring(2));
+ });
+ $('a.sort-option').live("click", function(event) {
+ event.preventDefault();
+ handleReSort($(this));
+ });
+ $('a.show-proposal').live("click", function(event) {
+ event.preventDefault();
+ showProposal($(this).attr('id').substring(2));
+ });
+ $('a.hide-proposal').live("click", function(event) {
+ event.preventDefault();
+ hideProposal($(this).attr('id').substring(2));
+ });
+ $('a.show-propose-change').live("click", function(event) {
+ event.preventDefault();
+ showProposeChange($(this).attr('id').substring(2));
+ });
+ $('a.hide-propose-change').live("click", function(event) {
+ event.preventDefault();
+ hideProposeChange($(this).attr('id').substring(2));
+ });
+ $('a.accept-comment').live("click", function(event) {
+ event.preventDefault();
+ acceptComment($(this).attr('id').substring(2));
+ });
+ $('a.delete-comment').live("click", function(event) {
+ event.preventDefault();
+ deleteComment($(this).attr('id').substring(2));
+ });
+ $('a.comment-markup').live("click", function(event) {
+ event.preventDefault();
+ toggleCommentMarkupBox($(this).attr('id').substring(2));
+ });
+ }
+
+ /**
+ * Set comp, which is a comparator function used for sorting and
+ * inserting comments into the list.
+ */
+ function setComparator() {
+ // If the first three letters are "asc", sort in ascending order
+ // and remove the prefix.
+ if (by.substring(0,3) == 'asc') {
+ var i = by.substring(3);
+ comp = function(a, b) { return a[i] - b[i]; };
+ } else {
+ // Otherwise sort in descending order.
+ comp = function(a, b) { return b[by] - a[by]; };
+ }
+
+ // Reset link styles and format the selected sort option.
+ $('a.sel').attr('href', '#').removeClass('sel');
+ $('a.by' + by).removeAttr('href').addClass('sel');
+ }
+
+ /**
+ * Create a comp function. If the user has preferences stored in
+ * the sortBy cookie, use those, otherwise use the default.
+ */
+ function initComparator() {
+ by = 'rating'; // Default to sort by rating.
+ // If the sortBy cookie is set, use that instead.
+ if (document.cookie.length > 0) {
+ var start = document.cookie.indexOf('sortBy=');
+ if (start != -1) {
+ start = start + 7;
+ var end = document.cookie.indexOf(";", start);
+ if (end == -1) {
+ end = document.cookie.length;
+ by = unescape(document.cookie.substring(start, end));
+ }
+ }
+ }
+ setComparator();
+ }
+
+ /**
+ * Show a comment div.
+ */
+ function show(id) {
+ $('#ao' + id).hide();
+ $('#ah' + id).show();
+ var context = $.extend({id: id}, opts);
+ var popup = $(renderTemplate(popupTemplate, context)).hide();
+ popup.find('textarea[name="proposal"]').hide();
+ popup.find('a.by' + by).addClass('sel');
+ var form = popup.find('#cf' + id);
+ form.submit(function(event) {
+ event.preventDefault();
+ addComment(form);
+ });
+ $('#s' + id).after(popup);
+ popup.slideDown('fast', function() {
+ getComments(id);
+ });
+ }
+
+ /**
+ * Hide a comment div.
+ */
+ function hide(id) {
+ $('#ah' + id).hide();
+ $('#ao' + id).show();
+ var div = $('#sc' + id);
+ div.slideUp('fast', function() {
+ div.remove();
+ });
+ }
+
+ /**
+ * Perform an ajax request to get comments for a node
+ * and insert the comments into the comments tree.
+ */
+ function getComments(id) {
+ $.ajax({
+ type: 'GET',
+ url: opts.getCommentsURL,
+ data: {node: id},
+ success: function(data, textStatus, request) {
+ var ul = $('#cl' + id);
+ var speed = 100;
+ $('#cf' + id)
+ .find('textarea[name="proposal"]')
+ .data('source', data.source);
+
+ if (data.comments.length === 0) {
+ ul.html('<li>No comments yet.</li>');
+ ul.data('empty', true);
+ } else {
+ // If there are comments, sort them and put them in the list.
+ var comments = sortComments(data.comments);
+ speed = data.comments.length * 100;
+ appendComments(comments, ul);
+ ul.data('empty', false);
+ }
+ $('#cn' + id).slideUp(speed + 200);
+ ul.slideDown(speed);
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem retrieving the comments.');
+ },
+ dataType: 'json'
+ });
+ }
+
+ /**
+ * Add a comment via ajax and insert the comment into the comment tree.
+ */
+ function addComment(form) {
+ var node_id = form.find('input[name="node"]').val();
+ var parent_id = form.find('input[name="parent"]').val();
+ var text = form.find('textarea[name="comment"]').val();
+ var proposal = form.find('textarea[name="proposal"]').val();
+
+ if (text == '') {
+ showError('Please enter a comment.');
+ return;
+ }
+
+ // Disable the form that is being submitted.
+ form.find('textarea,input').attr('disabled', 'disabled');
+
+ // Send the comment to the server.
+ $.ajax({
+ type: "POST",
+ url: opts.addCommentURL,
+ dataType: 'json',
+ data: {
+ node: node_id,
+ parent: parent_id,
+ text: text,
+ proposal: proposal
+ },
+ success: function(data, textStatus, error) {
+ // Reset the form.
+ if (node_id) {
+ hideProposeChange(node_id);
+ }
+ form.find('textarea')
+ .val('')
+ .add(form.find('input'))
+ .removeAttr('disabled');
+ var ul = $('#cl' + (node_id || parent_id));
+ if (ul.data('empty')) {
+ $(ul).empty();
+ ul.data('empty', false);
+ }
+ insertComment(data.comment);
+ var ao = $('#ao' + node_id);
+ ao.find('img').attr({'src': opts.commentBrightImage});
+ if (node_id) {
+ // if this was a "root" comment, remove the commenting box
+ // (the user can get it back by reopening the comment popup)
+ $('#ca' + node_id).slideUp();
+ }
+ },
+ error: function(request, textStatus, error) {
+ form.find('textarea,input').removeAttr('disabled');
+ showError('Oops, there was a problem adding the comment.');
+ }
+ });
+ }
+
+ /**
+ * Recursively append comments to the main comment list and children
+ * lists, creating the comment tree.
+ */
+ function appendComments(comments, ul) {
+ $.each(comments, function() {
+ var div = createCommentDiv(this);
+ ul.append($(document.createElement('li')).html(div));
+ appendComments(this.children, div.find('ul.comment-children'));
+ // To avoid stagnating data, don't store the comments children in data.
+ this.children = null;
+ div.data('comment', this);
+ });
+ }
+
+ /**
+ * After adding a new comment, it must be inserted in the correct
+ * location in the comment tree.
+ */
+ function insertComment(comment) {
+ var div = createCommentDiv(comment);
+
+ // To avoid stagnating data, don't store the comments children in data.
+ comment.children = null;
+ div.data('comment', comment);
+
+ var ul = $('#cl' + (comment.node || comment.parent));
+ var siblings = getChildren(ul);
+
+ var li = $(document.createElement('li'));
+ li.hide();
+
+ // Determine where in the parents children list to insert this comment.
+ for(i=0; i < siblings.length; i++) {
+ if (comp(comment, siblings[i]) <= 0) {
+ $('#cd' + siblings[i].id)
+ .parent()
+ .before(li.html(div));
+ li.slideDown('fast');
+ return;
+ }
+ }
+
+ // If we get here, this comment rates lower than all the others,
+ // or it is the only comment in the list.
+ ul.append(li.html(div));
+ li.slideDown('fast');
+ }
+
+ function acceptComment(id) {
+ $.ajax({
+ type: 'POST',
+ url: opts.acceptCommentURL,
+ data: {id: id},
+ success: function(data, textStatus, request) {
+ $('#cm' + id).fadeOut('fast');
+ $('#cd' + id).removeClass('moderate');
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem accepting the comment.');
+ }
+ });
+ }
+
+ function deleteComment(id) {
+ $.ajax({
+ type: 'POST',
+ url: opts.deleteCommentURL,
+ data: {id: id},
+ success: function(data, textStatus, request) {
+ var div = $('#cd' + id);
+ if (data == 'delete') {
+ // Moderator mode: remove the comment and all children immediately
+ div.slideUp('fast', function() {
+ div.remove();
+ });
+ return;
+ }
+ // User mode: only mark the comment as deleted
+ div
+ .find('span.user-id:first')
+ .text('[deleted]').end()
+ .find('div.comment-text:first')
+ .text('[deleted]').end()
+ .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+ ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+ .remove();
+ var comment = div.data('comment');
+ comment.username = '[deleted]';
+ comment.text = '[deleted]';
+ div.data('comment', comment);
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem deleting the comment.');
+ }
+ });
+ }
+
+ function showProposal(id) {
+ $('#sp' + id).hide();
+ $('#hp' + id).show();
+ $('#pr' + id).slideDown('fast');
+ }
+
+ function hideProposal(id) {
+ $('#hp' + id).hide();
+ $('#sp' + id).show();
+ $('#pr' + id).slideUp('fast');
+ }
+
+ function showProposeChange(id) {
+ $('#pc' + id).hide();
+ $('#hc' + id).show();
+ var textarea = $('#pt' + id);
+ textarea.val(textarea.data('source'));
+ $.fn.autogrow.resize(textarea[0]);
+ textarea.slideDown('fast');
+ }
+
+ function hideProposeChange(id) {
+ $('#hc' + id).hide();
+ $('#pc' + id).show();
+ var textarea = $('#pt' + id);
+ textarea.val('').removeAttr('disabled');
+ textarea.slideUp('fast');
+ }
+
+ function toggleCommentMarkupBox(id) {
+ $('#mb' + id).toggle();
+ }
+
+ /** Handle when the user clicks on a sort by link. */
+ function handleReSort(link) {
+ var classes = link.attr('class').split(/\s+/);
+ for (var i=0; i<classes.length; i++) {
+ if (classes[i] != 'sort-option') {
+ by = classes[i].substring(2);
+ }
+ }
+ setComparator();
+ // Save/update the sortBy cookie.
+ var expiration = new Date();
+ expiration.setDate(expiration.getDate() + 365);
+ document.cookie= 'sortBy=' + escape(by) +
+ ';expires=' + expiration.toUTCString();
+ $('ul.comment-ul').each(function(index, ul) {
+ var comments = getChildren($(ul), true);
+ comments = sortComments(comments);
+ appendComments(comments, $(ul).empty());
+ });
+ }
+
+ /**
+ * Function to process a vote when a user clicks an arrow.
+ */
+ function handleVote(link) {
+ if (!opts.voting) {
+ showError("You'll need to login to vote.");
+ return;
+ }
+
+ var id = link.attr('id');
+ if (!id) {
+ // Didn't click on one of the voting arrows.
+ return;
+ }
+ // If it is an unvote, the new vote value is 0,
+ // Otherwise it's 1 for an upvote, or -1 for a downvote.
+ var value = 0;
+ if (id.charAt(1) != 'u') {
+ value = id.charAt(0) == 'u' ? 1 : -1;
+ }
+ // The data to be sent to the server.
+ var d = {
+ comment_id: id.substring(2),
+ value: value
+ };
+
+ // Swap the vote and unvote links.
+ link.hide();
+ $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+ .show();
+
+ // The div the comment is displayed in.
+ var div = $('div#cd' + d.comment_id);
+ var data = div.data('comment');
+
+ // If this is not an unvote, and the other vote arrow has
+ // already been pressed, unpress it.
+ if ((d.value !== 0) && (data.vote === d.value * -1)) {
+ $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+ $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+ }
+
+ // Update the comments rating in the local data.
+ data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+ data.vote = d.value;
+ div.data('comment', data);
+
+ // Change the rating text.
+ div.find('.rating:first')
+ .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+ // Send the vote information to the server.
+ $.ajax({
+ type: "POST",
+ url: opts.processVoteURL,
+ data: d,
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem casting that vote.');
+ }
+ });
+ }
+
+ /**
+ * Open a reply form used to reply to an existing comment.
+ */
+ function openReply(id) {
+ // Swap out the reply link for the hide link
+ $('#rl' + id).hide();
+ $('#cr' + id).show();
+
+ // Add the reply li to the children ul.
+ var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+ $('#cl' + id)
+ .prepend(div)
+ // Setup the submit handler for the reply form.
+ .find('#rf' + id)
+ .submit(function(event) {
+ event.preventDefault();
+ addComment($('#rf' + id));
+ closeReply(id);
+ })
+ .find('input[type=button]')
+ .click(function() {
+ closeReply(id);
+ });
+ div.slideDown('fast', function() {
+ $('#rf' + id).find('textarea').focus();
+ });
+ }
+
+ /**
+ * Close the reply form opened with openReply.
+ */
+ function closeReply(id) {
+ // Remove the reply div from the DOM.
+ $('#rd' + id).slideUp('fast', function() {
+ $(this).remove();
+ });
+
+ // Swap out the hide link for the reply link
+ $('#cr' + id).hide();
+ $('#rl' + id).show();
+ }
+
+ /**
+ * Recursively sort a tree of comments using the comp comparator.
+ */
+ function sortComments(comments) {
+ comments.sort(comp);
+ $.each(comments, function() {
+ this.children = sortComments(this.children);
+ });
+ return comments;
+ }
+
+ /**
+ * Get the children comments from a ul. If recursive is true,
+ * recursively include childrens' children.
+ */
+ function getChildren(ul, recursive) {
+ var children = [];
+ ul.children().children("[id^='cd']")
+ .each(function() {
+ var comment = $(this).data('comment');
+ if (recursive)
+ comment.children = getChildren($(this).find('#cl' + comment.id), true);
+ children.push(comment);
+ });
+ return children;
+ }
+
+ /** Create a div to display a comment in. */
+ function createCommentDiv(comment) {
+ if (!comment.displayed && !opts.moderator) {
+ return $('<div class="moderate">Thank you! Your comment will show up '
+ + 'once it is has been approved by a moderator.</div>');
+ }
+ // Prettify the comment rating.
+ comment.pretty_rating = comment.rating + ' point' +
+ (comment.rating == 1 ? '' : 's');
+ // Make a class (for displaying not yet moderated comments differently)
+ comment.css_class = comment.displayed ? '' : ' moderate';
+ // Create a div for this comment.
+ var context = $.extend({}, opts, comment);
+ var div = $(renderTemplate(commentTemplate, context));
+
+ // If the user has voted on this comment, highlight the correct arrow.
+ if (comment.vote) {
+ var direction = (comment.vote == 1) ? 'u' : 'd';
+ div.find('#' + direction + 'v' + comment.id).hide();
+ div.find('#' + direction + 'u' + comment.id).show();
+ }
+
+ if (opts.moderator || comment.text != '[deleted]') {
+ div.find('a.reply').show();
+ if (comment.proposal_diff)
+ div.find('#sp' + comment.id).show();
+ if (opts.moderator && !comment.displayed)
+ div.find('#cm' + comment.id).show();
+ if (opts.moderator || (opts.username == comment.username))
+ div.find('#dc' + comment.id).show();
+ }
+ return div;
+ }
+
+ /**
+ * A simple template renderer. Placeholders such as <%id%> are replaced
+ * by context['id'] with items being escaped. Placeholders such as <#id#>
+ * are not escaped.
+ */
+ function renderTemplate(template, context) {
+ var esc = $(document.createElement('div'));
+
+ function handle(ph, escape) {
+ var cur = context;
+ $.each(ph.split('.'), function() {
+ cur = cur[this];
+ });
+ return escape ? esc.text(cur || "").html() : cur;
+ }
+
+ return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+ return handle(arguments[2], arguments[1] == '%' ? true : false);
+ });
+ }
+
+ /** Flash an error message briefly. */
+ function showError(message) {
+ $(document.createElement('div')).attr({'class': 'popup-error'})
+ .append($(document.createElement('div'))
+ .attr({'class': 'error-message'}).text(message))
+ .appendTo('body')
+ .fadeIn("slow")
+ .delay(2000)
+ .fadeOut("slow");
+ }
+
+ /** Add a link the user uses to open the comments popup. */
+ $.fn.comment = function() {
+ return this.each(function() {
+ var id = $(this).attr('id').substring(1);
+ var count = COMMENT_METADATA[id];
+ var title = count + ' comment' + (count == 1 ? '' : 's');
+ var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+ var addcls = count == 0 ? ' nocomment' : '';
+ $(this)
+ .append(
+ $(document.createElement('a')).attr({
+ href: '#',
+ 'class': 'sphinx-comment-open' + addcls,
+ id: 'ao' + id
+ })
+ .append($(document.createElement('img')).attr({
+ src: image,
+ alt: 'comment',
+ title: title
+ }))
+ .click(function(event) {
+ event.preventDefault();
+ show($(this).attr('id').substring(2));
+ })
+ )
+ .append(
+ $(document.createElement('a')).attr({
+ href: '#',
+ 'class': 'sphinx-comment-close hidden',
+ id: 'ah' + id
+ })
+ .append($(document.createElement('img')).attr({
+ src: opts.closeCommentImage,
+ alt: 'close',
+ title: 'close'
+ }))
+ .click(function(event) {
+ event.preventDefault();
+ hide($(this).attr('id').substring(2));
+ })
+ );
+ });
+ };
+
+ var opts = {
+ processVoteURL: '/_process_vote',
+ addCommentURL: '/_add_comment',
+ getCommentsURL: '/_get_comments',
+ acceptCommentURL: '/_accept_comment',
+ deleteCommentURL: '/_delete_comment',
+ commentImage: '/static/_static/comment.png',
+ closeCommentImage: '/static/_static/comment-close.png',
+ loadingImage: '/static/_static/ajax-loader.gif',
+ commentBrightImage: '/static/_static/comment-bright.png',
+ upArrow: '/static/_static/up.png',
+ downArrow: '/static/_static/down.png',
+ upArrowPressed: '/static/_static/up-pressed.png',
+ downArrowPressed: '/static/_static/down-pressed.png',
+ voting: false,
+ moderator: false
+ };
+
+ if (typeof COMMENT_OPTIONS != "undefined") {
+ opts = jQuery.extend(opts, COMMENT_OPTIONS);
+ }
+
+ var popupTemplate = '\
+ <div class="sphinx-comments" id="sc<%id%>">\
+ <p class="sort-options">\
+ Sort by:\
+ <a href="#" class="sort-option byrating">best rated</a>\
+ <a href="#" class="sort-option byascage">newest</a>\
+ <a href="#" class="sort-option byage">oldest</a>\
+ </p>\
+ <div class="comment-header">Comments</div>\
+ <div class="comment-loading" id="cn<%id%>">\
+ loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+ <ul id="cl<%id%>" class="comment-ul"></ul>\
+ <div id="ca<%id%>">\
+ <p class="add-a-comment">Add a comment\
+ (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+ <div class="comment-markup-box" id="mb<%id%>">\
+ reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+ <tt>``code``</tt>, \
+ code blocks: <tt>::</tt> and an indented block after blank line</div>\
+ <form method="post" id="cf<%id%>" class="comment-form" action="">\
+ <textarea name="comment" cols="80"></textarea>\
+ <p class="propose-button">\
+ <a href="#" id="pc<%id%>" class="show-propose-change">\
+ Propose a change &#9657;\
+ </a>\
+ <a href="#" id="hc<%id%>" class="hide-propose-change">\
+ Propose a change &#9663;\
+ </a>\
+ </p>\
+ <textarea name="proposal" id="pt<%id%>" cols="80"\
+ spellcheck="false"></textarea>\
+ <input type="submit" value="Add comment" />\
+ <input type="hidden" name="node" value="<%id%>" />\
+ <input type="hidden" name="parent" value="" />\
+ </form>\
+ </div>\
+ </div>';
+
+ var commentTemplate = '\
+ <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+ <div class="vote">\
+ <div class="arrow">\
+ <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+ <img src="<%upArrow%>" />\
+ </a>\
+ <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+ <img src="<%upArrowPressed%>" />\
+ </a>\
+ </div>\
+ <div class="arrow">\
+ <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+ <img src="<%downArrow%>" id="da<%id%>" />\
+ </a>\
+ <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+ <img src="<%downArrowPressed%>" />\
+ </a>\
+ </div>\
+ </div>\
+ <div class="comment-content">\
+ <p class="tagline comment">\
+ <span class="user-id"><%username%></span>\
+ <span class="rating"><%pretty_rating%></span>\
+ <span class="delta"><%time.delta%></span>\
+ </p>\
+ <div class="comment-text comment"><#text#></div>\
+ <p class="comment-opts comment">\
+ <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
+ <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
+ <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
+ <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
+ <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+ <span id="cm<%id%>" class="moderation hidden">\
+ <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+ </span>\
+ </p>\
+ <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+ </pre>\
+ <ul class="comment-children" id="cl<%id%>"></ul>\
+ </div>\
+ <div class="clearleft"></div>\
+ </div>\
+ </div>';
+
+ var replyTemplate = '\
+ <li>\
+ <div class="reply-div" id="rd<%id%>">\
+ <form id="rf<%id%>">\
+ <textarea name="comment" cols="80"></textarea>\
+ <input type="submit" value="Add reply" />\
+ <input type="button" value="Cancel" />\
+ <input type="hidden" name="parent" value="<%id%>" />\
+ <input type="hidden" name="node" value="" />\
+ </form>\
+ </div>\
+ </li>';
+
+ $(document).ready(function() {
+ init();
+ });
+})(jQuery);
+
+$(document).ready(function() {
+ // add comment anchors for all paragraphs that are commentable
+ $('.sphinx-has-comment').comment();
+
+ // highlight search words in search results
+ $("div.context").each(function() {
+ var params = $.getQueryParameters();
+ var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+ var result = $(this);
+ $.each(terms, function() {
+ result.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ });
+
+ // directly open comment window if requested
+ var anchor = document.location.hash;
+ if (anchor.substring(0, 9) == '#comment-') {
+ $('#ao' + anchor.substring(9)).click();
+ document.location.hash = '#s' + anchor.substring(9);
+ }
+});
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/genindex.html b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/genindex.html
new file mode 100644
index 0000000..9eefcd2
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/genindex.html
@@ -0,0 +1,92 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Index &mdash; hello 1 documentation</title>
+
+ <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: './',
+ VERSION: '1',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="top" title="hello 1 documentation" href="index.html" />
+ </head>
+ <body>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="#" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">hello 1 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+
+
+
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="#" title="General Index"
+ >index</a></li>
+ <li><a href="index.html">hello 1 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="footer">
+ &copy; Copyright 2014, lintian.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/index.html b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/index.html
new file mode 100644
index 0000000..2a7ee05
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/index.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Welcome to hello’s documentation! &mdash; hello 1 documentation</title>
+
+ <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: './',
+ VERSION: '1',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="top" title="hello 1 documentation" href="#" />
+ </head>
+ <body>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="#">hello 1 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="welcome-to-hello-s-documentation">
+<h1>Welcome to hello&#8217;s documentation!<a class="headerlink" href="#welcome-to-hello-s-documentation" title="Permalink to this headline">¶</a></h1>
+<p>Contents:</p>
+<div class="toctree-wrapper compound">
+<ul class="simple">
+</ul>
+</div>
+</div>
+<div class="section" id="indices-and-tables">
+<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
+<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="#">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Welcome to hello&#8217;s documentation!</a></li>
+<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
+</ul>
+
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/index.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li><a href="#">hello 1 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="footer">
+ &copy; Copyright 2014, lintian.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/objects.inv b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/objects.inv
new file mode 100644
index 0000000..c7be278
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/objects.inv
Binary files differ
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/search.html b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/search.html
new file mode 100644
index 0000000..46a39e0
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/search.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Search &mdash; hello 1 documentation</title>
+
+ <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: './',
+ VERSION: '1',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="_static/searchtools.js"></script>
+ <link rel="top" title="hello 1 documentation" href="index.html" />
+ <script type="text/javascript">
+ jQuery(function() { Search.loadIndex("searchindex.js"); });
+ </script>
+
+ <script type="text/javascript" id="searchindexloader"></script>
+
+
+ </head>
+ <body>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">hello 1 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <h1 id="search-documentation">Search</h1>
+ <div id="fallback" class="admonition warning">
+ <script type="text/javascript">$('#fallback').hide();</script>
+ <p>
+ Please activate JavaScript to enable the search
+ functionality.
+ </p>
+ </div>
+ <p>
+ From here you can search these documents. Enter your search
+ words into the box below and click "search". Note that the search
+ function will automatically search for all of the words. Pages
+ containing fewer words won't appear in the result list.
+ </p>
+ <form action="" method="get">
+ <input type="text" name="q" value="" />
+ <input type="submit" value="search" />
+ <span id="search-progress" style="padding-left: 10px"></span>
+ </form>
+
+ <div id="search-results">
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li><a href="index.html">hello 1 documentation</a> &raquo;</li>
+ </ul>
+ </div>
+ <div class="footer">
+ &copy; Copyright 2014, lintian.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/searchindex.js b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/searchindex.js
new file mode 100644
index 0000000..6c954cd
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/_build/html/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({objtypes:{},objects:{},filenames:["index"],objnames:{},terms:{modul:0,index:0,content:0,page:0,search:0},titles:["Welcome to hello&#8217;s documentation!"],envversion:43,titleterms:{document:0,tabl:0,welcom:0,hello:0,indic:0}}) \ No newline at end of file
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/conf.py b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/conf.py
new file mode 100644
index 0000000..af81b04
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/conf.py
@@ -0,0 +1,259 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# hello documentation build configuration file, created by
+# sphinx-quickstart on Mon Mar 31 19:57:16 2014.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = 'hello'
+copyright = '2014, lintian'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '1'
+# The full version, including alpha/beta/rc tags.
+release = '1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+#keep_warnings = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'hellodoc'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ ('index', 'hello.tex', 'hello Documentation',
+ 'lintian', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ ('index', 'hello', 'hello Documentation',
+ ['lintian'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ ('index', 'hello', 'hello Documentation',
+ 'lintian', 'hello', 'One line description of project.',
+ 'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/index.rst b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/index.rst
new file mode 100644
index 0000000..778459b
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/index.rst
@@ -0,0 +1,22 @@
+.. hello documentation master file, created by
+ sphinx-quickstart on Mon Mar 31 19:57:16 2014.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+Welcome to hello's documentation!
+=================================
+
+Contents:
+
+.. toctree::
+ :maxdepth: 2
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/make.bat b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/make.bat
new file mode 100644
index 0000000..5d3e55e
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/build-spec/orig/src/sphinx-1.22/make.bat
@@ -0,0 +1,242 @@
+@ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=_build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
+set I18NSPHINXOPTS=%SPHINXOPTS% .
+if NOT "%PAPER%" == "" (
+ set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+ set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+ :help
+ echo.Please use `make ^<target^>` where ^<target^> is one of
+ echo. html to make standalone HTML files
+ echo. dirhtml to make HTML files named index.html in directories
+ echo. singlehtml to make a single large HTML file
+ echo. pickle to make pickle files
+ echo. json to make JSON files
+ echo. htmlhelp to make HTML files and a HTML help project
+ echo. qthelp to make HTML files and a qthelp project
+ echo. devhelp to make HTML files and a Devhelp project
+ echo. epub to make an epub
+ echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
+ echo. text to make text files
+ echo. man to make manual pages
+ echo. texinfo to make Texinfo files
+ echo. gettext to make PO message catalogs
+ echo. changes to make an overview over all changed/added/deprecated items
+ echo. xml to make Docutils-native XML files
+ echo. pseudoxml to make pseudoxml-XML files for display purposes
+ echo. linkcheck to check all external links for integrity
+ echo. doctest to run all doctests embedded in the documentation if enabled
+ goto end
+)
+
+if "%1" == "clean" (
+ for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
+ del /q /s %BUILDDIR%\*
+ goto end
+)
+
+
+%SPHINXBUILD% 2> nul
+if errorlevel 9009 (
+ echo.
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+ echo.installed, then set the SPHINXBUILD environment variable to point
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
+ echo.may add the Sphinx directory to PATH.
+ echo.
+ echo.If you don't have Sphinx installed, grab it from
+ echo.http://sphinx-doc.org/
+ exit /b 1
+)
+
+if "%1" == "html" (
+ %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/html.
+ goto end
+)
+
+if "%1" == "dirhtml" (
+ %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
+ goto end
+)
+
+if "%1" == "singlehtml" (
+ %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
+ goto end
+)
+
+if "%1" == "pickle" (
+ %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can process the pickle files.
+ goto end
+)
+
+if "%1" == "json" (
+ %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can process the JSON files.
+ goto end
+)
+
+if "%1" == "htmlhelp" (
+ %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can run HTML Help Workshop with the ^
+.hhp project file in %BUILDDIR%/htmlhelp.
+ goto end
+)
+
+if "%1" == "qthelp" (
+ %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can run "qcollectiongenerator" with the ^
+.qhcp project file in %BUILDDIR%/qthelp, like this:
+ echo.^> qcollectiongenerator %BUILDDIR%\qthelp\hello.qhcp
+ echo.To view the help file:
+ echo.^> assistant -collectionFile %BUILDDIR%\qthelp\hello.ghc
+ goto end
+)
+
+if "%1" == "devhelp" (
+ %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished.
+ goto end
+)
+
+if "%1" == "epub" (
+ %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The epub file is in %BUILDDIR%/epub.
+ goto end
+)
+
+if "%1" == "latex" (
+ %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
+ goto end
+)
+
+if "%1" == "latexpdf" (
+ %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+ cd %BUILDDIR%/latex
+ make all-pdf
+ cd %BUILDDIR%/..
+ echo.
+ echo.Build finished; the PDF files are in %BUILDDIR%/latex.
+ goto end
+)
+
+if "%1" == "latexpdfja" (
+ %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+ cd %BUILDDIR%/latex
+ make all-pdf-ja
+ cd %BUILDDIR%/..
+ echo.
+ echo.Build finished; the PDF files are in %BUILDDIR%/latex.
+ goto end
+)
+
+if "%1" == "text" (
+ %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The text files are in %BUILDDIR%/text.
+ goto end
+)
+
+if "%1" == "man" (
+ %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The manual pages are in %BUILDDIR%/man.
+ goto end
+)
+
+if "%1" == "texinfo" (
+ %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
+ goto end
+)
+
+if "%1" == "gettext" (
+ %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
+ goto end
+)
+
+if "%1" == "changes" (
+ %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.The overview file is in %BUILDDIR%/changes.
+ goto end
+)
+
+if "%1" == "linkcheck" (
+ %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Link check complete; look for any errors in the above output ^
+or in %BUILDDIR%/linkcheck/output.txt.
+ goto end
+)
+
+if "%1" == "doctest" (
+ %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Testing of doctests in the sources finished, look at the ^
+results in %BUILDDIR%/doctest/output.txt.
+ goto end
+)
+
+if "%1" == "xml" (
+ %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The XML files are in %BUILDDIR%/xml.
+ goto end
+)
+
+if "%1" == "pseudoxml" (
+ %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
+ goto end
+)
+
+:end
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/eval/desc b/t/recipes/checks/cruft/cruft-sphinx-documentation/eval/desc
new file mode 100644
index 0000000..3b57794
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-sphinx-documentation
+Check: cruft
diff --git a/t/recipes/checks/cruft/cruft-sphinx-documentation/eval/hints b/t/recipes/checks/cruft/cruft-sphinx-documentation/eval/hints
new file mode 100644
index 0000000..cd11c35
--- /dev/null
+++ b/t/recipes/checks/cruft/cruft-sphinx-documentation/eval/hints
@@ -0,0 +1 @@
+cruft-sphinx-documentation (source): source-contains-prebuilt-sphinx-documentation [src/sphinx-1.22/_build/html/]
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in
new file mode 100644
index 0000000..9b17d19
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/rules b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/fill-values b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/fill-values
new file mode 100644
index 0000000..f97b076
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-rules-requires-root-binary-targets
+Description: Test for "Rules-Requires-Root: binary-targets"
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/desc b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/desc
new file mode 100644
index 0000000..e6f5901
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-rules-requires-root-binary-targets
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/hints b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/hints
new file mode 100644
index 0000000..d7a2b62
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-binary-targets/eval/hints
@@ -0,0 +1,2 @@
+control-file-rules-requires-root-binary-targets (binary): data-tarball-compression-format gz
+control-file-rules-requires-root-binary-targets (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/control.in b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/control.in
new file mode 100644
index 0000000..503994d
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/rules b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/fill-values b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/fill-values
new file mode 100644
index 0000000..7359a3f
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-rules-requires-root-no
+Description: Test for "Rules-Requires-Root: no"
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/desc b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/desc
new file mode 100644
index 0000000..ba24431
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-rules-requires-root-no
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/hints b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/hints
new file mode 100644
index 0000000..719dba0
--- /dev/null
+++ b/t/recipes/checks/deb-format/control-file-rules-requires-root-no/eval/hints
@@ -0,0 +1,2 @@
+control-file-rules-requires-root-no (binary): data-tarball-compression-format gz
+control-file-rules-requires-root-no (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/fill-values
new file mode 100644
index 0000000..48e956c
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: deb-format-extra-member
+Description: Test package for an ar archive in the wrong order
diff --git a/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/members/extra-stuff b/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/members/extra-stuff
new file mode 100644
index 0000000..532a22a
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/members/extra-stuff
@@ -0,0 +1 @@
+SOME CONTENTS
diff --git a/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/post-build b/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/post-build
new file mode 100755
index 0000000..b133a2f
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-member/build-spec/post-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+name=$1
+
+ar q $name.deb members/extra-stuff
diff --git a/t/recipes/checks/deb-format/deb-format-extra-member/eval/desc b/t/recipes/checks/deb-format/deb-format-extra-member/eval/desc
new file mode 100644
index 0000000..40f3b06
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-member/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-extra-member
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/deb-format-extra-member/eval/hints b/t/recipes/checks/deb-format/deb-format-extra-member/eval/hints
new file mode 100644
index 0000000..d7355dd
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-member/eval/hints
@@ -0,0 +1,3 @@
+deb-format-extra-member (binary): misplaced-extra-member-in-deb extra-stuff (unexpected member at position 3)
+deb-format-extra-member (binary): data-tarball-compression-format gz
+deb-format-extra-member (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/deb-members b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/deb-members
new file mode 100644
index 0000000..a5a89b2
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/deb-members
@@ -0,0 +1,4 @@
+members/debian-binary
+members/_extra-stuff
+members/control.tar.gz
+members/data.tar.gz
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/fill-values
new file mode 100644
index 0000000..948a3e2
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: deb-format-extra-underscore-member-before-control
+Description: Test package for a deb archive with an extra member with _ before control.tar
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/members/_extra-stuff b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/members/_extra-stuff
new file mode 100644
index 0000000..2517541
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/build-spec/members/_extra-stuff
@@ -0,0 +1 @@
+SOME CONTENT
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/desc b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/desc
new file mode 100644
index 0000000..628ab3e
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-extra-underscore-member-before-control
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/hints b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/hints
new file mode 100644
index 0000000..96f4f12
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-control/eval/hints
@@ -0,0 +1,3 @@
+deb-format-extra-underscore-member-before-control (binary): misplaced-extra-member-in-deb _extra-stuff (unexpected _member at position 1)
+deb-format-extra-underscore-member-before-control (binary): data-tarball-compression-format gz
+deb-format-extra-underscore-member-before-control (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/deb-members b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/deb-members
new file mode 100644
index 0000000..80b1efc
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/deb-members
@@ -0,0 +1,4 @@
+members/debian-binary
+members/control.tar.gz
+members/_extra-stuff
+members/data.tar.gz
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/fill-values
new file mode 100644
index 0000000..be97a37
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: deb-format-extra-underscore-member-before-data
+Description: Test package for a deb archive with an extra member with _ before data.tar
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/members/_extra-stuff b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/members/_extra-stuff
new file mode 100644
index 0000000..2517541
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/build-spec/members/_extra-stuff
@@ -0,0 +1 @@
+SOME CONTENT
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/desc b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/desc
new file mode 100644
index 0000000..d122658
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-extra-underscore-member-before-data
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/hints b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/hints
new file mode 100644
index 0000000..72b71d2
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-extra-underscore-member-before-data/eval/hints
@@ -0,0 +1,3 @@
+deb-format-extra-underscore-member-before-data (binary): misplaced-extra-member-in-deb _extra-stuff (unexpected _member at position 2)
+deb-format-extra-underscore-member-before-data (binary): data-tarball-compression-format gz
+deb-format-extra-underscore-member-before-data (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/deb-format-lzma/build-spec/deb-members b/t/recipes/checks/deb-format/deb-format-lzma/build-spec/deb-members
new file mode 100644
index 0000000..c27e67f
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-lzma/build-spec/deb-members
@@ -0,0 +1,3 @@
+members/debian-binary
+members/control.tar.gz
+members/data.tar.lzma
diff --git a/t/recipes/checks/deb-format/deb-format-lzma/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-lzma/build-spec/fill-values
new file mode 100644
index 0000000..a12cfc9
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-lzma/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: deb-format-lzma
+Description: Test package with LZMA compression
diff --git a/t/recipes/checks/deb-format/deb-format-lzma/build-spec/tar-data b/t/recipes/checks/deb-format/deb-format-lzma/build-spec/tar-data
new file mode 100755
index 0000000..01e430e
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-lzma/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.lzma --use-compress-program=lzma --directory "$rootdir" .
diff --git a/t/recipes/checks/deb-format/deb-format-lzma/eval/desc b/t/recipes/checks/deb-format/deb-format-lzma/eval/desc
new file mode 100644
index 0000000..efc64a2
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-lzma/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-lzma
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/deb-format-lzma/eval/hints b/t/recipes/checks/deb-format/deb-format-lzma/eval/hints
new file mode 100644
index 0000000..a0617ed
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-lzma/eval/hints
@@ -0,0 +1,4 @@
+deb-format-lzma (binary): uses-deprecated-compression-for-data-tarball lzma
+deb-format-lzma (binary): lzma-deb-archive
+deb-format-lzma (binary): data-tarball-compression-format lzma
+deb-format-lzma (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/deb-members b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/deb-members
new file mode 100644
index 0000000..575150e
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/deb-members
@@ -0,0 +1,3 @@
+members/debian-binary
+members/control.tar
+members/data.tar
diff --git a/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/fill-values
new file mode 100644
index 0000000..8f89409
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: deb-format-no-compress
+Description: Test package with no compression
+Extra-Build-Depends: dpkg (>= 1.17.6)
diff --git a/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-control b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-control
new file mode 100755
index 0000000..74dfa1d
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+controlmembers="$2"
+
+tar --create --file members/control.tar --directory "$debiandir" $controlmembers
diff --git a/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-data b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-data
new file mode 100755
index 0000000..5ca2d90
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-no-compress/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar --directory "$rootdir" .
diff --git a/t/recipes/checks/deb-format/deb-format-no-compress/eval/desc b/t/recipes/checks/deb-format/deb-format-no-compress/eval/desc
new file mode 100644
index 0000000..f18b7f2
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-no-compress/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-no-compress
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/deb-format-no-compress/eval/hints b/t/recipes/checks/deb-format/deb-format-no-compress/eval/hints
new file mode 100644
index 0000000..02397c6
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-no-compress/eval/hints
@@ -0,0 +1,4 @@
+deb-format-no-compress (binary): uses-no-compression-for-data-tarball
+deb-format-no-compress (binary): uses-no-compression-for-control-tarball
+deb-format-no-compress (binary): data-tarball-compression-format (none)
+deb-format-no-compress (binary): control-tarball-compression-format (none)
diff --git a/t/recipes/checks/deb-format/deb-format-record-size/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-record-size/build-spec/fill-values
new file mode 100644
index 0000000..d7b73a5
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-record-size/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: deb-format-record-size
+Description: Test package with a non-standard tar record size
diff --git a/t/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-control b/t/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-control
new file mode 100755
index 0000000..5f0a2f8
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+controlmembers="$2"
+
+tar --create --file members/control.tar.gz --gzip --record-size=4096 --directory "$debiandir" $controlmembers
diff --git a/t/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-data b/t/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-data
new file mode 100755
index 0000000..ad41b09
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-record-size/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.gz --gzip --record-size=4096 --directory "$rootdir" .
diff --git a/t/recipes/checks/deb-format/deb-format-record-size/eval/desc b/t/recipes/checks/deb-format/deb-format-record-size/eval/desc
new file mode 100644
index 0000000..2046118
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-record-size/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-record-size
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/deb-format-record-size/eval/hints b/t/recipes/checks/deb-format/deb-format-record-size/eval/hints
new file mode 100644
index 0000000..4b7f610
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-record-size/eval/hints
@@ -0,0 +1,2 @@
+deb-format-record-size (binary): data-tarball-compression-format gz
+deb-format-record-size (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/control.in b/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/control.in
new file mode 100644
index 0000000..1c2ec56
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: debian-installer
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: some-udeb
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Package-Type: udeb
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/rules b/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/rules
new file mode 100644
index 0000000..5287abb
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ # manually call dpkg-deb because dh_builddeb uses -Zxz and does
+ # not allow us to override it.
+ dpkg-deb -Zlzma --build debian/some-udeb ../some-udeb_1.0_all.udeb
diff --git a/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/fill-values
new file mode 100644
index 0000000..9a594b5
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-udeb-compression/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: deb-format-udeb-compression
+Package-Architecture: all
+Description: Test of compression of udeb data member
+Extra-Build-Depends: dpkg (<< 1.18.11)
+# dpkg 1.18.1 Will warn for us
diff --git a/t/recipes/checks/deb-format/deb-format-udeb-compression/eval/desc b/t/recipes/checks/deb-format/deb-format-udeb-compression/eval/desc
new file mode 100644
index 0000000..9b5961a
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-udeb-compression/eval/desc
@@ -0,0 +1,3 @@
+Testname: deb-format-udeb-compression
+Check: deb-format
+# dpkg 1.18.1 Will warn for us
diff --git a/t/recipes/checks/deb-format/deb-format-udeb-compression/eval/hints b/t/recipes/checks/deb-format/deb-format-udeb-compression/eval/hints
new file mode 100644
index 0000000..529a7e3
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-udeb-compression/eval/hints
@@ -0,0 +1 @@
+some-udeb (udeb): udeb-uses-unsupported-compression-for-data-tarball
diff --git a/t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/deb-members b/t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/deb-members
new file mode 100644
index 0000000..58b239b
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/deb-members
@@ -0,0 +1,3 @@
+members/debian-binary
+members/data.tar.gz
+members/control.tar.gz
diff --git a/t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/fill-values b/t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/fill-values
new file mode 100644
index 0000000..2468c16
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-wrong-order/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: deb
+Testname: deb-format-wrong-order
+Description: Test package for an ar archive in the wrong order
+Extra-Build-Depends: dpkg (<< 1.17.2)
+# dpkg 1.17.2 Do not allow deb packages with control
+# and data members swapped
diff --git a/t/recipes/checks/deb-format/deb-format-wrong-order/eval/desc b/t/recipes/checks/deb-format/deb-format-wrong-order/eval/desc
new file mode 100644
index 0000000..a1da169
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-wrong-order/eval/desc
@@ -0,0 +1,4 @@
+Testname: deb-format-wrong-order
+Check: deb-format
+# dpkg 1.17.2 Do not allow deb packages with control
+# and data members swapped
diff --git a/t/recipes/checks/deb-format/deb-format-wrong-order/eval/hints b/t/recipes/checks/deb-format/deb-format-wrong-order/eval/hints
new file mode 100644
index 0000000..b4c7aa6
--- /dev/null
+++ b/t/recipes/checks/deb-format/deb-format-wrong-order/eval/hints
@@ -0,0 +1,2 @@
+deb-format-wrong-order (binary): malformed-deb-archive third (official) member control.tar.gz not data.tar.((gz|xz|bz2|lzma)
+deb-format-wrong-order (binary): malformed-deb-archive second (official) member data.tar.gz not control.tar.(gz|xz)
diff --git a/t/recipes/checks/deb-format/debhelper-compat-old/build-spec/debian/rules b/t/recipes/checks/deb-format/debhelper-compat-old/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/deb-format/debhelper-compat-old/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/deb-format/debhelper-compat-old/build-spec/fill-values b/t/recipes/checks/deb-format/debhelper-compat-old/build-spec/fill-values
new file mode 100644
index 0000000..97909d8
--- /dev/null
+++ b/t/recipes/checks/deb-format/debhelper-compat-old/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-compat-old
+Description: Test for old debian/compat file
diff --git a/t/recipes/checks/deb-format/debhelper-compat-old/eval/desc b/t/recipes/checks/deb-format/debhelper-compat-old/eval/desc
new file mode 100644
index 0000000..50bd090
--- /dev/null
+++ b/t/recipes/checks/deb-format/debhelper-compat-old/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-compat-old
+Options: --include-dir ./lintian-include-dir
+Profile: lintian-test
+Check: deb-format
diff --git a/t/recipes/checks/deb-format/debhelper-compat-old/eval/hints b/t/recipes/checks/deb-format/debhelper-compat-old/eval/hints
new file mode 100644
index 0000000..016cd27
--- /dev/null
+++ b/t/recipes/checks/deb-format/debhelper-compat-old/eval/hints
@@ -0,0 +1,2 @@
+debhelper-compat-old (binary): data-tarball-compression-format gz
+debhelper-compat-old (binary): control-tarball-compression-format gz
diff --git a/t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..d91eeb3
--- /dev/null
+++ b/t/recipes/checks/deb-format/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,3 @@
+@include-parent
+deprecated=1
+recommended=100
diff --git a/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..cbf204c
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ cli-common-dev (>= 0.5.7) [i386 sparc amd64 ia64]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/rules
new file mode 100755
index 0000000..726a39c
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ -dh_clideps
+ dh_prep
+
diff --git a/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/fill-values
new file mode 100644
index 0000000..30c1a35
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-arch-depends/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-arch-depends
+Extra-Build-Depends: cli-common-dev (>= 0.5.7) [i386 sparc amd64 ia64]
+Description: Test arch-specific dependencies on dh commands
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-arch-depends/eval/desc b/t/recipes/checks/debhelper/debhelper-arch-depends/eval/desc
new file mode 100644
index 0000000..3a203cb
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-arch-depends/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-arch-depends
+Test-Against: missing-build-dependency-for-dh_-command
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-arch-depends/eval/hints b/t/recipes/checks/debhelper/debhelper-arch-depends/eval/hints
new file mode 100644
index 0000000..0553144
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-arch-depends/eval/hints
@@ -0,0 +1,3 @@
+debhelper-arch-depends (source): uses-debhelper-compat-file [debian/compat]
+debhelper-arch-depends (source): debian-build-system dh [debian/rules]
+debhelper-arch-depends (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..a63b312
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], debhelper (>= 10)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/rules
new file mode 100755
index 0000000..005519a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_configure:
+ dh_auto_configure
+ dh_autotools-dev_updateconfig
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/fill-values
new file mode 100644
index 0000000..52a12c3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-autoreconf-build-depends-unrel
+Description: Test for useless autoreconf-related build dependencies false positives
+Default-Build-Depends: debhelper (>= 10)
+Dh-Compat-Level: 10
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/desc b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/desc
new file mode 100644
index 0000000..c87476b
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/desc
@@ -0,0 +1,5 @@
+Testname: debhelper-autoreconf-build-depends-unrel
+Test-Against:
+ missing-build-dependency-for-dh_-command
+ useless-autoreconf-build-depends
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/hints b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/hints
new file mode 100644
index 0000000..9ab3ea3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends-unrel/eval/hints
@@ -0,0 +1,4 @@
+debhelper-autoreconf-build-depends-unrel (source): package-uses-old-debhelper-compat-version 10
+debhelper-autoreconf-build-depends-unrel (source): debian-build-system dh [debian/rules]
+debhelper-autoreconf-build-depends-unrel (source): debhelper-tools-from-autotools-dev-are-deprecated dh_autotools-dev_updateconfig [debian/rules:8]
+debhelper-autoreconf-build-depends-unrel (source): debhelper-compat-level 10
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..3aa5eb4
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], debhelper (>= 10), dh-autoreconf, autotools-dev
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/fill-values
new file mode 100644
index 0000000..cc59604
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-autoreconf-build-depends
+Description: Test for useless autoreconf-related build dependencies
+Default-Build-Depends: debhelper (>= 10)
+Dh-Compat-Level: 10
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/desc b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/desc
new file mode 100644
index 0000000..d21d599
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-autoreconf-build-depends
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/hints b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/hints
new file mode 100644
index 0000000..d2ae57f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-autoreconf-build-depends/eval/hints
@@ -0,0 +1,5 @@
+debhelper-autoreconf-build-depends (source): useless-autoreconf-build-depends (does not need to satisfy dh-autoreconf:any)
+debhelper-autoreconf-build-depends (source): useless-autoreconf-build-depends (does not need to satisfy autotools-dev:any)
+debhelper-autoreconf-build-depends (source): package-uses-old-debhelper-compat-version 10
+debhelper-autoreconf-build-depends (source): debian-build-system dh [debian/rules]
+debhelper-autoreconf-build-depends (source): debhelper-compat-level 10
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/control.in
new file mode 100644
index 0000000..dcfb380
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/control.in
@@ -0,0 +1,80 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debhelper-brace-problem-1
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] another extra string
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string. It may be an empty package.
+
+Package: debhelper-brace-problem-2
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] another extra string three
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string three. It may be an empty package.
+
+Package: debhelper-brace-problem-3
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] three test case
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string three test case. It may be an empty package.
+
+Package: debhelper-brace-problem-4
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] fourth test case
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string fourth test case. It may be an empty package.
+
+Package: debhelper-brace-problem-5
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] fifth test case
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string fifth test case. It may be an empty package.
+
+Package: debhelper-brace-problem-6
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] sixth test case
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string sixth test case. It may be an empty package.
+
+Package: debhelper-brace-problem-good
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] good test case
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Should
+ not trigger lintian test. It may be an empty package.
+
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-1.install b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-1.install
new file mode 100644
index 0000000..917db1f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-1.install
@@ -0,0 +1 @@
+{,foo}.txt usr/share/debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-2.install b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-2.install
new file mode 100644
index 0000000..c0a7ccb
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-2.install
@@ -0,0 +1 @@
+{foo,bar}.txt usr/share/debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-3.install b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-3.install
new file mode 100644
index 0000000..7276554
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-3.install
@@ -0,0 +1 @@
+{foo,}.txt usr/share/debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-4.install b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-4.install
new file mode 100644
index 0000000..05031a8
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-4.install
@@ -0,0 +1 @@
+{,,foo}.txt usr/share/debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-5.install b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-5.install
new file mode 100644
index 0000000..576e6a4
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-5.install
@@ -0,0 +1 @@
+{,foo,}.txt usr/share/debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-good.install b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-good.install
new file mode 100644
index 0000000..bf22e94
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/debhelper-brace-problem-good.install
@@ -0,0 +1,5 @@
+{.txt usr/share/debhelper
+{good}.txt usr/share/debhelper
+{}.txt usr/share/debhelper
+{foo} usr/share/debhelper
+{foo}.txt usr/share/debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/rules
new file mode 100755
index 0000000..16d8ba1
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+# Skip dh_install since there are braces in the install configuration file and
+# it would error out on at least some systems.
+override_dh_install:
+
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/fill-values
new file mode 100644
index 0000000..90ac5ed
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-brace-expansion
+Description: Check for brace expansion in debhelper config files
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/eval/desc b/t/recipes/checks/debhelper/debhelper-brace-expansion/eval/desc
new file mode 100644
index 0000000..e213355
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-brace-expansion
+See-Also: Debian Bug#480939
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-brace-expansion/eval/hints b/t/recipes/checks/debhelper/debhelper-brace-expansion/eval/hints
new file mode 100644
index 0000000..b2711de
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-brace-expansion/eval/hints
@@ -0,0 +1,8 @@
+debhelper-brace-expansion (source): debian-build-system dh [debian/rules]
+debhelper-brace-expansion (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-brace-expansion (source): debhelper-compat-level 13
+debhelper-brace-expansion (source): brace-expansion-in-debhelper-config-file {foo,} [debian/debhelper-brace-problem-3.install:1]
+debhelper-brace-expansion (source): brace-expansion-in-debhelper-config-file {foo,bar} [debian/debhelper-brace-problem-2.install:1]
+debhelper-brace-expansion (source): brace-expansion-in-debhelper-config-file {,foo} [debian/debhelper-brace-problem-1.install:1]
+debhelper-brace-expansion (source): brace-expansion-in-debhelper-config-file {,foo,} [debian/debhelper-brace-problem-5.install:1]
+debhelper-brace-expansion (source): brace-expansion-in-debhelper-config-file {,,foo} [debian/debhelper-brace-problem-4.install:1]
diff --git a/t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/debian/compat b/t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/debian/compat
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/debian/compat
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/fill-values
new file mode 100644
index 0000000..99bc50b
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-compat-empty
+Description: Test empty debian/compat file
+Default-Build-Depends: debhelper (<< 9.20151101~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-empty/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-empty/eval/desc
new file mode 100644
index 0000000..31b9eb9
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-compat-empty
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-empty/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-empty/eval/hints
new file mode 100644
index 0000000..b4a096f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-empty/eval/hints
@@ -0,0 +1,2 @@
+debhelper-compat-empty (source): package-uses-deprecated-debhelper-compat-version 1
+debhelper-compat-empty (source): debhelper-compat-file-is-empty
diff --git a/t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/fill-values
new file mode 100644
index 0000000..d40c6eb
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-experimental/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: debhelper-compat-experimental
+Dh-Compat-Level: 13
+Default-Build-Depends: debhelper (>= 12~)
+Description: Test for old debian/compat file
+# Overrides the "data/debhelper/compat-level"
diff --git a/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/desc
new file mode 100644
index 0000000..0213f60
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/desc
@@ -0,0 +1,5 @@
+Testname: debhelper-compat-experimental
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: debhelper
+# Overrides the "data/debhelper/compat-level"
diff --git a/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/hints
new file mode 100644
index 0000000..8517f10
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/hints
@@ -0,0 +1,4 @@
+debhelper-compat-experimental (source): package-uses-experimental-debhelper-compat-version 13
+debhelper-compat-experimental (source): no-versioned-debhelper-prerequisite 13
+debhelper-compat-experimental (source): debian-build-system dh [debian/rules]
+debhelper-compat-experimental (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..5d77b80
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-experimental/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,2 @@
+@include-parent
+experimental=10
diff --git a/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/source/options b/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/source/options
new file mode 100644
index 0000000..ef3297d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/debian/source/options
@@ -0,0 +1,2 @@
+tar-ignore
+tar-ignore=*/compat
diff --git a/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/fill-values
new file mode 100644
index 0000000..942e8e9
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-compat-missing
+Description: Test for missing debian/compat
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-missing/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-missing/eval/desc
new file mode 100644
index 0000000..5eec2be
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-compat-missing
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-missing/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-missing/eval/hints
new file mode 100644
index 0000000..7ff4af0
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-missing/eval/hints
@@ -0,0 +1,3 @@
+debhelper-compat-missing (source): package-uses-deprecated-debhelper-compat-version 1
+debhelper-compat-missing (source): debian-build-system dh [debian/rules]
+debhelper-compat-missing (source): debhelper-compat-file-is-missing
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/debian/compat b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/debian/compat
new file mode 100644
index 0000000..736ea2a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/debian/compat
@@ -0,0 +1,3 @@
+11
+
+# Comment after a skipped line
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/fill-values
new file mode 100644
index 0000000..d3eee2a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-compat-multiple-unrel
+Description: Test debian/compat file with multiple entries (false-positives)
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/desc
new file mode 100644
index 0000000..6627836
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-compat-multiple-unrel
+Test-Against:
+ debhelper-compat-file-contains-multiple-levels
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/hints
new file mode 100644
index 0000000..2ec2a64
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple-unrel/eval/hints
@@ -0,0 +1,4 @@
+debhelper-compat-multiple-unrel (source): uses-debhelper-compat-file [debian/compat]
+debhelper-compat-multiple-unrel (source): package-uses-old-debhelper-compat-version 11
+debhelper-compat-multiple-unrel (source): debian-build-system dh [debian/rules]
+debhelper-compat-multiple-unrel (source): debhelper-compat-level 11
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/debian/compat b/t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/debian/compat
new file mode 100644
index 0000000..58110e6
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/debian/compat
@@ -0,0 +1,3 @@
+11
+
+12
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/fill-values
new file mode 100644
index 0000000..6f579bf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-compat-multiple
+Description: Test debian/compat file with multiple entries
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-multiple/eval/desc
new file mode 100644
index 0000000..a073dba
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-compat-multiple
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-multiple/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-multiple/eval/hints
new file mode 100644
index 0000000..03f9faf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-multiple/eval/hints
@@ -0,0 +1,5 @@
+debhelper-compat-multiple (source): uses-debhelper-compat-file [debian/compat]
+debhelper-compat-multiple (source): package-uses-old-debhelper-compat-version 11
+debhelper-compat-multiple (source): debian-build-system dh [debian/rules]
+debhelper-compat-multiple (source): debhelper-compat-level 11
+debhelper-compat-multiple (source): debhelper-compat-file-contains-multiple-levels [debian/compat:3]
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/fill-values
new file mode 100644
index 0000000..3de27aa
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-compat-old
+Description: Test for old debian/compat file
+Dh-Compat-Level: 8
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-old/eval/desc
new file mode 100644
index 0000000..5659a51
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-compat-old
+Options: --include-dir ./lintian-include-dir
+Profile: lintian-test
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-old/eval/hints
new file mode 100644
index 0000000..21ce42a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/eval/hints
@@ -0,0 +1,3 @@
+debhelper-compat-old (source): package-uses-old-debhelper-compat-version 8
+debhelper-compat-old (source): debian-build-system dh [debian/rules]
+debhelper-compat-old (source): debhelper-compat-level 8
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..d91eeb3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,3 @@
+@include-parent
+deprecated=1
+recommended=100
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/debian/control.in
new file mode 100644
index 0000000..c59a284
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: debhelper (>= 11.3.6~), debhelper-compat (= 10)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/fill-values
new file mode 100644
index 0000000..40b77b3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-compat-virtual-relation-both
+Description: Test both debhelper and debhelper-compat as a build-dependency
+Default-Build-Depends:
+ debhelper (>= 11.3~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/pre-build b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/desc
new file mode 100644
index 0000000..2b36dde
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-compat-virtual-relation-both
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/hints
new file mode 100644
index 0000000..a26bc3a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation-both/eval/hints
@@ -0,0 +1,4 @@
+debhelper-compat-virtual-relation-both (source): package-uses-old-debhelper-compat-version 10
+debhelper-compat-virtual-relation-both (source): debian-build-system dh [debian/rules]
+debhelper-compat-virtual-relation-both (source): debhelper-compat-virtual-relation 10 [debian/control]
+debhelper-compat-virtual-relation-both (source): debhelper-compat-level 10
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/debian/control.in
new file mode 100644
index 0000000..caddd20
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: debhelper-compat (= 11)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/fill-values
new file mode 100644
index 0000000..9d5502e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-compat-virtual-relation
+Description: Test debhelper-compat as a build-dependency
+Default-Build-Depends:
+ debhelper (>= 11.3~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/pre-build b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/desc
new file mode 100644
index 0000000..75c4375
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/desc
@@ -0,0 +1,5 @@
+Testname: debhelper-compat-virtual-relation
+Test-Against:
+ package-uses-debhelper-but-lacks-build-depends
+ no-versioned-debhelper-prerequisite
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/hints
new file mode 100644
index 0000000..74e2f29
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-virtual-relation/eval/hints
@@ -0,0 +1,4 @@
+debhelper-compat-virtual-relation (source): package-uses-old-debhelper-compat-version 11
+debhelper-compat-virtual-relation (source): debian-build-system dh [debian/rules]
+debhelper-compat-virtual-relation (source): debhelper-compat-virtual-relation 11 [debian/control]
+debhelper-compat-virtual-relation (source): debhelper-compat-level 11
diff --git a/t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/debian/compat.in
new file mode 100644
index 0000000..64f7ede
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/debian/compat.in
@@ -0,0 +1 @@
+ [% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/fill-values
new file mode 100644
index 0000000..0301064
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-whitespace/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-compat-whitespace
+Description: Allow whitespace in debian/compat
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/desc b/t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/desc
new file mode 100644
index 0000000..8063998
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-compat-whitespace
+Test-Against: debhelper-compat-not-a-number
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/hints b/t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/hints
new file mode 100644
index 0000000..c3d2ed0
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat-whitespace/eval/hints
@@ -0,0 +1,3 @@
+debhelper-compat-whitespace (source): uses-debhelper-compat-file [debian/compat]
+debhelper-compat-whitespace (source): debian-build-system dh [debian/rules]
+debhelper-compat-whitespace (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-compat/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-compat/build-spec/fill-values
new file mode 100644
index 0000000..11bd35f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-compat
+Description: Test the content of debian/compat
+Default-Build-Depends: debhelper (<< 9.20151101~)
+Dh-Compat-Level: [9-
diff --git a/t/recipes/checks/debhelper/debhelper-compat/eval/desc b/t/recipes/checks/debhelper/debhelper-compat/eval/desc
new file mode 100644
index 0000000..d4f1ad1
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-compat
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-compat/eval/hints b/t/recipes/checks/debhelper/debhelper-compat/eval/hints
new file mode 100644
index 0000000..baa1950
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-compat/eval/hints
@@ -0,0 +1 @@
+debhelper-compat (source): debhelper-compat-not-a-number [9-
diff --git a/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/rules
new file mode 100755
index 0000000..2f7c75e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/debian/rules
@@ -0,0 +1,48 @@
+#!/usr/bin/make -f
+
+pkg = $(shell dh_listpackages)
+VERSION=2
+
+build: build-indep build-arch
+build-arch:
+build-indep:
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+binary: binary-indep binary-arch
+binary-arch:
+binary-indep:
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_install
+ dh_installchangelogs
+ dh_installdocs
+ dh_installmanpages
+
+ #dh_scrollkeeper
+ -dh_python-ply # neither should this
+
+# Check not warning about deprecated commands in optional portions, but
+# commands that have been toast for a long time are still warned about.
+ifneq "$(LENNY_BACKPORT)" "y"
+ -dh_help
+ #dh_scrollkeeper
+endif
+ dh_link
+ dh_compress
+ dh_fixperms
+ #dh_suidregister
+
+ dh_installdeb
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+somewhere:
+ dh $@ --with autotools-dev
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/fill-values
new file mode 100644
index 0000000..7cb64f8
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-deprecated/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-deprecated
+Description: Test for use of deprecated dh_* commands
+Extra-Build-Depends: python-ply (>= 3.4-1~)
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-deprecated/eval/desc b/t/recipes/checks/debhelper/debhelper-deprecated/eval/desc
new file mode 100644
index 0000000..c51b571
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-deprecated/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-deprecated
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-deprecated/eval/hints b/t/recipes/checks/debhelper/debhelper-deprecated/eval/hints
new file mode 100644
index 0000000..15c9729
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-deprecated/eval/hints
@@ -0,0 +1,6 @@
+debhelper-deprecated (source): uses-debhelper-compat-file [debian/compat]
+debhelper-deprecated (source): missing-build-dependency-for-dh-addon autotools_dev (does not satisfy autotools-dev:any) [debian/rules]
+debhelper-deprecated (source): dh_installmanpages-is-obsolete [debian/rules:24]
+debhelper-deprecated (source): debian-build-system dh [debian/rules]
+debhelper-deprecated (source): debhelper-tools-from-autotools-dev-are-deprecated dh ... --with autotools-dev [debian/rules:46]
+debhelper-deprecated (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/debian/rules
new file mode 100755
index 0000000..bd004e3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/debian/rules
@@ -0,0 +1,37 @@
+#!/usr/bin/make -f
+#
+# Use an alternate rules file that doesn't call dh to test not warning
+# about debhelper script tokens if we call no programs that care about
+# them.
+
+pkg = $(shell dh_listpackages)
+
+build: build-arch build-indep
+build-arch:
+build-indep:
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+binary: binary-indep binary-arch
+binary-arch:
+binary-indep:
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_install
+ dh_installchangelogs
+ dh_installdebconf
+ # dh_installdocs may modify maintainer scripts
+ install -m 644 debian/copyright debian/$(pkg)/usr/share/doc/$(pkg)
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/fill-values
new file mode 100644
index 0000000..c836ef5
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-dh-clean-k-deprecated
+Dh-Compat-Level: 11
+Description: Test for debhelper >=7 packages using dh_clean -k
diff --git a/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/desc
new file mode 100644
index 0000000..7742990
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-dh-clean-k-deprecated
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/hints
new file mode 100644
index 0000000..a21c10f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-clean-k-deprecated/eval/hints
@@ -0,0 +1,5 @@
+debhelper-dh-clean-k-deprecated (source): package-uses-old-debhelper-compat-version 11
+debhelper-dh-clean-k-deprecated (source): dh-clean-k-is-deprecated [debian/rules]
+debhelper-dh-clean-k-deprecated (source): debian-build-system debhelper [debian/rules]
+debhelper-dh-clean-k-deprecated (source): debhelper-compat-virtual-relation 11 [debian/control]
+debhelper-dh-clean-k-deprecated (source): debhelper-compat-level 11
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/rules
new file mode 100755
index 0000000..111f495
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+export DH_COMPAT=10
+
+%:
+ dh $@
+
+DH_COMPAT=8
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/fill-values
new file mode 100644
index 0000000..be50f28
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-dh-compat
+Description: Test the value of DH_COMPAT
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/desc
new file mode 100644
index 0000000..d974fa2
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-compat
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/hints
new file mode 100644
index 0000000..86e066e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/hints
@@ -0,0 +1,5 @@
+debhelper-dh-compat (source): uses-debhelper-compat-file [debian/compat]
+debhelper-dh-compat (source): package-uses-old-debhelper-compat-version 8
+debhelper-dh-compat (source): declares-possibly-conflicting-debhelper-compat-versions 13 vs elsewhere 8 [debian/compat]
+debhelper-dh-compat (source): debian-build-system dh [debian/rules]
+debhelper-dh-compat (source): debhelper-compat-level 8
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..d91eeb3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,3 @@
+@include-parent
+deprecated=1
+recommended=100
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/dirs b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/dirs
new file mode 100755
index 0000000..aaac17a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/dirs
@@ -0,0 +1,3 @@
+#! /usr/bin/dh-exec
+usr/lib
+usr/lib/${DEB_HOST_MULTIARCH}/octave/packages
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/install b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/install
new file mode 100755
index 0000000..c79e8ae
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/install
@@ -0,0 +1,6 @@
+#! /usr/bin/dh-exec
+usr/lib/foo [linux-any] [hurd-any] [kfreebsd-any]
+usr/lib/${DEB_HOST_MULTIARCH}
+usr/lib/${DEB_HOST_MULTIARCH} /usr/lib/${DEB_HOST_MULTIARCH}/
+usr/lib/${DEB_BUILD_MULTIARCH} /usr/lib/${DEB_HOST_MULTIARCH}/
+usr/lib/${DEB_HOST_MULTIARCH}/some-package/*.so
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/links b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/links
new file mode 100755
index 0000000..3c907d7
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/links
@@ -0,0 +1,2 @@
+#! /usr/bin/dh-exec
+link-foo => link-bar
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/manpages b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/manpages
new file mode 100755
index 0000000..2209766
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/manpages
@@ -0,0 +1,5 @@
+#! /usr/lib/dh-exec/dh-exec-subst
+## The above works, but is not recommended.
+foo => bar
+this-line-uses-tabs => this-line-uses-tabs
+${DEB_BUILD_WHATEVER}
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/mime b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/mime
new file mode 100755
index 0000000..ce8e762
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/mime
@@ -0,0 +1,2 @@
+#! /usr/bin/dh-exec
+debian/rules
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/rules
new file mode 100755
index 0000000..06b98ae
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/debian/rules
@@ -0,0 +1,16 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+# Ignore the "mime" file as we do not really depend on dh-exec and we
+# do not really need the files listed there for the test.
+override_dh_installmime:
+
+
+override_dh_installman:
+
+override_dh_install:
+
+override_dh_installdirs:
+override_dh_link:
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/fill-values
new file mode 100644
index 0000000..f359531
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-dh-exec
+Dh-Compat-Level: 9
+Description: Tests related to executable, dh-exec using packaging files
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-exec/eval/desc
new file mode 100644
index 0000000..b369e0d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-exec
+Options: --suppress-tags
+ no-versioned-debhelper-prerequisite
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-exec/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-exec/eval/hints
new file mode 100644
index 0000000..dfabcc2
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-exec/eval/hints
@@ -0,0 +1,12 @@
+debhelper-dh-exec (source): package-uses-dh-exec-but-lacks-build-depends [debian/rules]
+debhelper-dh-exec (source): package-uses-deprecated-debhelper-compat-version 9
+debhelper-dh-exec (source): dh-exec-useless-usage usr/lib/${DEB_HOST_MULTIARCH}/some-package/*.so [debian/install:6]
+debhelper-dh-exec (source): dh-exec-useless-usage usr/lib/${DEB_HOST_MULTIARCH} [debian/install:3]
+debhelper-dh-exec (source): dh-exec-useless-usage usr/lib/${DEB_HOST_MULTIARCH} /usr/lib/${DEB_HOST_MULTIARCH}/ [debian/install:4]
+debhelper-dh-exec (source): dh-exec-subst-unknown-variable DEB_BUILD_WHATEVER [debian/manpages:5]
+debhelper-dh-exec (source): dh-exec-script-without-dh-exec-features [debian/mime]
+debhelper-dh-exec (source): dh-exec-private-helper [debian/manpages]
+debhelper-dh-exec (source): dh-exec-install-not-allowed-here [debian/links]
+debhelper-dh-exec (source): debian-build-system dh [debian/rules]
+debhelper-dh-exec (source): debhelper-compat-virtual-relation 9 [debian/control]
+debhelper-dh-exec (source): debhelper-compat-level 9
diff --git a/t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/debian/control.in
new file mode 100644
index 0000000..ac85906
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/debian/control.in
@@ -0,0 +1,31 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-cheshire
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}
+Description: Cheshire cheese for Python 2.X
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ For Python 2.X.
+
+Package: python3-cheshire
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends}
+Description: Cheshire cheese for Python 3.X
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ For Python 3.X.
diff --git a/t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/fill-values
new file mode 100644
index 0000000..e9c9c50
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-dh-python-helpers
+Description: Check if helpers that substitute python:Depends and
+ python3:Depends are called in debian/rules
diff --git a/t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/desc
new file mode 100644
index 0000000..3e864fb
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-dh-python-helpers
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/hints
new file mode 100644
index 0000000..e05749c
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-python-helpers/eval/hints
@@ -0,0 +1,5 @@
+debhelper-dh-python-helpers (source): python3-depends-but-no-python3-helper python3-cheshire
+debhelper-dh-python-helpers (source): python-depends-but-no-python-helper python-cheshire
+debhelper-dh-python-helpers (source): debian-build-system dh [debian/rules]
+debhelper-dh-python-helpers (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-python-helpers (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/README.source b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/README.source
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/README.source
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/patches/series b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/patches/series
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/patches/series
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/rules
new file mode 100755
index 0000000..f6b359a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with quilt
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/fill-values
new file mode 100644
index 0000000..1277df5
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-dh-quilt-addon-but-quilt-source-format-unrel
+Source-Format: 3.0 (native)
+Description: Test for quilt packages that specify dh --with-quilt (false positive)
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/desc
new file mode 100644
index 0000000..9a49fdb
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-quilt-addon-but-quilt-source-format-unrel
+Test-Against:
+ dh-quilt-addon-but-quilt-source-format
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/hints
new file mode 100644
index 0000000..26c00d9
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format-unrel/eval/hints
@@ -0,0 +1,3 @@
+debhelper-dh-quilt-addon-but-quilt-source-format-unrel (source): debian-build-system dh [debian/rules]
+debhelper-dh-quilt-addon-but-quilt-source-format-unrel (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-quilt-addon-but-quilt-source-format-unrel (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/debian/rules
new file mode 100755
index 0000000..f6b359a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with quilt
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/fill-values
new file mode 100644
index 0000000..a022ff6
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: debhelper-dh-quilt-addon-but-quilt-source-format
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Test for quilt packages that specify dh --with-quilt
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/desc
new file mode 100644
index 0000000..cd4818d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-dh-quilt-addon-but-quilt-source-format
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/hints
new file mode 100644
index 0000000..247de1a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-quilt-addon-but-quilt-source-format/eval/hints
@@ -0,0 +1,4 @@
+debhelper-dh-quilt-addon-but-quilt-source-format (source): dh-quilt-addon-but-quilt-source-format dh ... --with quilt [debian/rules:4]
+debhelper-dh-quilt-addon-but-quilt-source-format (source): debian-build-system dh [debian/rules]
+debhelper-dh-quilt-addon-but-quilt-source-format (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-quilt-addon-but-quilt-source-format (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/control.in
new file mode 100644
index 0000000..07c5e61
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/control.in
@@ -0,0 +1,42 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dh-runit
+Rules-Requires-Root: no
+
+Package: [% $source %]-missing
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, runit
+Description: [% $description %] (true positive)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Missing breaks.
+
+Package: [% $source %]-present
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, runit
+Breaks: ${runit:Breaks}
+Description: [% $description %] (false positive)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Has breaks.
+
+Package: [% $source %]-unrelated
+Architecture: all
+Depends: ${misc:Depends}
+Breaks: ${runit:Breaks}
+Description: [% $description %] (unrelated)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ No, breaks, but unrelated.
diff --git a/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/rules
new file mode 100755
index 0000000..25cfa28
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with runit
+
+override_dh_auto_install:
+ dh_auto_install
+ for X in $(shell dh_listpackages); do \
+ mkdir -p debian/$$X/etc/sv; \
+ touch debian/$$X/etc/sv/$$X; \
+ done
diff --git a/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/fill-values
new file mode 100644
index 0000000..1fab39d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-dh-runit-but-lacks-breaks-substvar
+Description: Check Breaks requirements for dh --with dh_runit
diff --git a/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/desc
new file mode 100644
index 0000000..4865688
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-runit-but-lacks-breaks-substvar
+Test-Depends:
+ dh-runit
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/hints
new file mode 100644
index 0000000..8cfba49
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-runit-but-lacks-breaks-substvar/eval/hints
@@ -0,0 +1,4 @@
+debhelper-dh-runit-but-lacks-breaks-substvar (source): package-uses-dh-runit-but-lacks-breaks-substvar debhelper-dh-runit-but-lacks-breaks-substvar-missing [debian/rules]
+debhelper-dh-runit-but-lacks-breaks-substvar (source): debian-build-system dh [debian/rules]
+debhelper-dh-runit-but-lacks-breaks-substvar (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-runit-but-lacks-breaks-substvar (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/debian/rules
new file mode 100755
index 0000000..eab1d8e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --parallel --with=systemd
diff --git a/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/fill-values
new file mode 100644
index 0000000..39d3387
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-dh-unnecessary-arguments
+Description: Check for packages using --parallel
+Dh-Compat-Level: 10
diff --git a/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/desc
new file mode 100644
index 0000000..45c7c4c
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-dh-unnecessary-arguments
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/hints
new file mode 100644
index 0000000..c64d1f3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-unnecessary-arguments/eval/hints
@@ -0,0 +1,6 @@
+debhelper-dh-unnecessary-arguments (source): package-uses-old-debhelper-compat-version 10
+debhelper-dh-unnecessary-arguments (source): debian-rules-uses-unnecessary-dh-argument 10 >= 10 dh ... --with=systemd [debian/rules:4]
+debhelper-dh-unnecessary-arguments (source): debian-rules-uses-unnecessary-dh-argument 10 >= 10 dh ... --parallel [debian/rules:4]
+debhelper-dh-unnecessary-arguments (source): debian-build-system dh [debian/rules]
+debhelper-dh-unnecessary-arguments (source): debhelper-compat-virtual-relation 10 [debian/control]
+debhelper-dh-unnecessary-arguments (source): debhelper-compat-level 10
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..c282714
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3:any, dh-python
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/rules
new file mode 100755
index 0000000..25115de
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with python3
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/fill-values
new file mode 100644
index 0000000..5256ae1
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-dh-with-python3-unrel
+Description: Check dependency requirements for dh --with python3 (false positive)
+Extra-Build-Depends: dh-python
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/desc
new file mode 100644
index 0000000..ab447df
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-with-python3-unrel
+Test-Against:
+ missing-build-dependency-for-dh-addon
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/hints
new file mode 100644
index 0000000..d01c62f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel/eval/hints
@@ -0,0 +1,3 @@
+debhelper-dh-with-python3-unrel (source): debian-build-system dh [debian/rules]
+debhelper-dh-with-python3-unrel (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-with-python3-unrel (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/control.in
new file mode 100644
index 0000000..e0f5096
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3-all-dev:any
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/rules
new file mode 100755
index 0000000..25115de
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with python3
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/fill-values
new file mode 100644
index 0000000..48d35a2
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-dh-with-python3-unrel2
+Description: Check dependency requirements for dh --with python3 (false positive)
+Package-Architecture: any
+Extra-Build-Depends: dh-python
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/desc
new file mode 100644
index 0000000..f811b92
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-with-python3-unrel2
+Test-Against:
+ missing-build-dependency-for-dh-addon
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/hints
new file mode 100644
index 0000000..eb8213b
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3-unrel2/eval/hints
@@ -0,0 +1,3 @@
+debhelper-dh-with-python3-unrel2 (source): debian-build-system dh [debian/rules]
+debhelper-dh-with-python3-unrel2 (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-with-python3-unrel2 (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/control.in
new file mode 100644
index 0000000..faccb15
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3:any
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/rules
new file mode 100755
index 0000000..25115de
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with python3
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/fill-values
new file mode 100644
index 0000000..ca25049
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-dh-with-python3
+Description: Check dependency requirements for dh --with python3
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/desc
new file mode 100644
index 0000000..a063815
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-dh-with-python3
+Test-Depends: dh-python
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/hints
new file mode 100644
index 0000000..c427f79
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-python3/eval/hints
@@ -0,0 +1,4 @@
+debhelper-dh-with-python3 (source): missing-build-dependency-for-dh-addon python3 (does not satisfy dh-python:any | dh-sequence-python3:any | pybuild-plugin-pyproject:any) [debian/rules]
+debhelper-dh-with-python3 (source): debian-build-system dh [debian/rules]
+debhelper-dh-with-python3 (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-with-python3 (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/debian/rules
new file mode 100755
index 0000000..931d500
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/debian/rules
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+%:
+ dh $@ --with quilt
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/fill-values
new file mode 100644
index 0000000..9edcc4c
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-dh-with-quilt
+Description: Check dependency requirements for dh --with quilt
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/desc b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/desc
new file mode 100644
index 0000000..3d1a8df
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-dh-with-quilt
+Test-Depends: quilt
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/hints b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/hints
new file mode 100644
index 0000000..a485a90
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-dh-with-quilt/eval/hints
@@ -0,0 +1,4 @@
+debhelper-dh-with-quilt (source): missing-build-dependency-for-dh-addon quilt (does not satisfy quilt:any) [debian/rules]
+debhelper-dh-with-quilt (source): debian-build-system dh [debian/rules]
+debhelper-dh-with-quilt (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-dh-with-quilt (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/debian/rules
new file mode 100755
index 0000000..f94035a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+# Commands not to run
+override_dh_installcatalogs:
+override_dh_installemacsen override_dh_installifupdown:
+override_dh_installinfo override_dh_installmenu override_dh_installmime:
+override_dh_installmodules override_dh_installlogcheck:
+override_dh_installpam override_dh_installppp override_dh_installudev override_dh_installwm:
+override_dh_installxfonts override_dh_gconf override_dh_icons override_dh_perl override_dh_usrlocal:
+override_dh_installcron override_dh_installdebconf:
+override_dh_installlogrotate override_dh_installgsettings:
diff --git a/t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/fill-values
new file mode 100644
index 0000000..41b2921
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-excessive-overrides/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-excessive-overrides
+Description: Test for excessive number of overrides
diff --git a/t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/desc b/t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/desc
new file mode 100644
index 0000000..155d13a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-excessive-overrides
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/hints b/t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/hints
new file mode 100644
index 0000000..5cce06e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-excessive-overrides/eval/hints
@@ -0,0 +1,5 @@
+debhelper-excessive-overrides (source): typo-in-debhelper-override-target override_dh_gconf => override_dh_icons [debian/rules:12]
+debhelper-excessive-overrides (source): excessive-debhelper-overrides 21
+debhelper-excessive-overrides (source): debian-build-system dh [debian/rules]
+debhelper-excessive-overrides (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-excessive-overrides (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/docs b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/docs
new file mode 100755
index 0000000..438f2fd
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/docs
@@ -0,0 +1,2 @@
+#! /bin/sh
+# This is acceptable (though useless)
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/manpages b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/manpages
new file mode 100755
index 0000000..094e005
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+# /o\ this is bad...
+
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/rules
new file mode 100755
index 0000000..44e34f9
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/debian/rules
@@ -0,0 +1,6 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installman:
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/fill-values
new file mode 100644
index 0000000..b8831df
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-executable-files-compat-9
+Description: Tests related to executable packaging files
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/desc b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/desc
new file mode 100644
index 0000000..ef29e99
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-executable-files-compat-9
+Options: --suppress-tags
+ no-versioned-debhelper-prerequisite
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/hints b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/hints
new file mode 100644
index 0000000..190fbce
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files-compat-9/eval/hints
@@ -0,0 +1,4 @@
+debhelper-executable-files-compat-9 (source): executable-debhelper-file-without-being-executable [debian/manpages]
+debhelper-executable-files-compat-9 (source): debian-build-system dh [debian/rules]
+debhelper-executable-files-compat-9 (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-executable-files-compat-9 (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/manpages b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/manpages
new file mode 100755
index 0000000..1a24852
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/debian/manpages
@@ -0,0 +1 @@
+#!/bin/sh
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/fill-values
new file mode 100644
index 0000000..8c619b1
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-executable-files
+Dh-Compat-Level: 8
+Description: Tests related to executable packaging files
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/pre-build b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/pre-build
new file mode 100755
index 0000000..0bb1b9a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files/build-spec/pre-build
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+DIR="$1"
+
+for FILE in control copyright changelog ; do
+ chmod +x "$DIR/debian/$FILE"
+done
+
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files/eval/desc b/t/recipes/checks/debhelper/debhelper-executable-files/eval/desc
new file mode 100644
index 0000000..ee5dcbc
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-executable-files
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-executable-files/eval/hints b/t/recipes/checks/debhelper/debhelper-executable-files/eval/hints
new file mode 100644
index 0000000..0e2cfcc
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-executable-files/eval/hints
@@ -0,0 +1,7 @@
+debhelper-executable-files (source): package-uses-deprecated-debhelper-compat-version 8
+debhelper-executable-files (source): package-file-is-executable [debian/manpages]
+debhelper-executable-files (source): package-file-is-executable [debian/copyright]
+debhelper-executable-files (source): package-file-is-executable [debian/control]
+debhelper-executable-files (source): package-file-is-executable [debian/changelog]
+debhelper-executable-files (source): debian-build-system dh [debian/rules]
+debhelper-executable-files (source): debhelper-compat-level 8
diff --git a/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/control.in
new file mode 100644
index 0000000..67d485e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: debhelper
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/fill-values
new file mode 100644
index 0000000..438c83e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-lacks-versioned-deps
+Dh-Compat-Level: 9
+Description: Test pedantic dependency requirements for debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/desc b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/desc
new file mode 100644
index 0000000..6daef01
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-lacks-versioned-deps
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/hints b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/hints
new file mode 100644
index 0000000..a300c5e
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-lacks-versioned-deps/eval/hints
@@ -0,0 +1,4 @@
+debhelper-lacks-versioned-deps (source): package-uses-deprecated-debhelper-compat-version 9
+debhelper-lacks-versioned-deps (source): no-versioned-debhelper-prerequisite 9
+debhelper-lacks-versioned-deps (source): debian-build-system dh [debian/rules]
+debhelper-lacks-versioned-deps (source): debhelper-compat-level 9
diff --git a/t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/debian/control.in
new file mode 100644
index 0000000..4cb60a7
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends:${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/fill-values
new file mode 100644
index 0000000..fa932fc
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-misc-depends-fp
+Description: Test against missing reading the Depends field
diff --git a/t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/desc b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/desc
new file mode 100644
index 0000000..d573b79
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-misc-depends-fp
+Test-Against: debhelper-but-no-misc-depends
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/hints b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/hints
new file mode 100644
index 0000000..1ece69c
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-misc-depends-fp/eval/hints
@@ -0,0 +1,3 @@
+debhelper-misc-depends-fp (source): debian-build-system dh [debian/rules]
+debhelper-misc-depends-fp (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-misc-depends-fp (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/compat.in b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..6a7a04d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/control.in
@@ -0,0 +1,33 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debhelper-pre-depends
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Depends}
+Description: [% $description %] extra string
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string to not to trigger duplicated description tags. It may
+ be an empty package.
+
+Package: debhelper-suggests
+Architecture: [% $package_architecture %]
+Suggests: ${misc:Depends}
+Description: [% $description %] another extra string
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string. It may be an empty package.
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/rules
new file mode 100755
index 0000000..a622013
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/debian/rules
@@ -0,0 +1,24 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+binary: binary-arch binary-indep
+binary-arch:
+binary-indep:
+ -dh_clideps
+ -dh_gstscancodecs
+ dh_lisp || true
+ # Should trigger a versioned dependency requirement for dpatch
+ -dh_dpatch_patch
+# We don't warn about commands inside make conditionals, so none of these
+# get any warnings.
+ifeq "$(USE_DH_PYTHON3)" "y"
+ dh_python3
+else
+ ifeq "$(USE_PYSUPPORT)" "y"
+ dh_pysupport
+ endif
+endif
+ dh binary-indep
+ -dh_strip_nondeterminism
+ -dh_scour
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/fill-values
new file mode 100644
index 0000000..7857128
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-no-depends
+Dh-Compat-Level: 9
+Description: Test dependency requirements for debhelper
+# Overrides the "data/debhelper/compat-level"
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/eval/desc b/t/recipes/checks/debhelper/debhelper-no-depends/eval/desc
new file mode 100644
index 0000000..b6b85c4
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/eval/desc
@@ -0,0 +1,5 @@
+Testname: debhelper-no-depends
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: debhelper
+# Overrides the "data/debhelper/compat-level"
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/eval/hints b/t/recipes/checks/debhelper/debhelper-no-depends/eval/hints
new file mode 100644
index 0000000..4beaf2d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/eval/hints
@@ -0,0 +1,12 @@
+debhelper-no-depends (source): weak-dependency-on-misc-depends debhelper-suggests
+debhelper-no-depends (source): package-uses-deprecated-debhelper-compat-version 9
+debhelper-no-depends (source): package-uses-debhelper-but-lacks-build-depends [debian/rules]
+debhelper-no-depends (source): no-versioned-debhelper-prerequisite 9
+debhelper-no-depends (source): missing-build-dependency-for-dh_-command dh_strip_nondeterminism (does not satisfy dh-strip-nondeterminism:any) [debian/rules]
+debhelper-no-depends (source): missing-build-dependency-for-dh_-command dh_scour (does not satisfy scour:any) [debian/rules]
+debhelper-no-depends (source): missing-build-dependency-for-dh_-command dh_lisp (does not satisfy dh-lisp:any) [debian/rules]
+debhelper-no-depends (source): missing-build-dependency-for-dh_-command dh_gstscancodecs (does not satisfy libgstreamer1.0-dev:any) [debian/rules]
+debhelper-no-depends (source): missing-build-dependency-for-dh_-command dh_clideps (does not satisfy cli-common-dev:any) [debian/rules]
+debhelper-no-depends (source): debian-build-system dh [debian/rules]
+debhelper-no-depends (source): debhelper-compat-level 9
+debhelper-no-depends (source): debhelper-but-no-misc-depends debhelper-no-depends
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..67c590a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,2 @@
+@include-parent
+pedantic=8
diff --git a/t/recipes/checks/debhelper/debhelper-override-typos/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-override-typos/build-spec/debian/rules
new file mode 100755
index 0000000..6787305
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-override-typos/build-spec/debian/rules
@@ -0,0 +1,43 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+# Bad
+override_dh_nump: # Multiple matches should emit only one tag
+override_dh_instakk:
+ override_dh_installcrons:
+override_dh_install_examples:
+override_dh_install_changelogs : # Extra space
+override_dh_perls override_dh_python3 : # Bad then good
+override_dh_python3 override_dh_perls : # Good then bad
+override_dh_instakk override_dh_install_examples : # Both broken, with space
+foo override_dh_installdebs bar override_dh_installxmlcatalog: # combining regular and overrides
+
+# Don't worry about anything beyond a colon even if wrong; it will fail anyway.
+override_dh_testdirs: override_dh_ucfs
+
+# Specifically check for missing "auto" ("dh_override_auto_build" has a
+# distance of "5" to "dh_override_build")
+override_dh_build:
+
+# Missing space
+override dh_install:
+
+execute_after_dh_nope:
+execute_before_dh_nope:
+
+# Good
+.PHONY: override_dh_ucfs
+override_dh_install:
+override_dh_install :
+ override_dh_install: #
+prefix_override_dh_gconfs:
+override_dh_will_never_exist:
+override_dh_python3 override_dh_perl :
+override_dh_auto_configure-% override_dh_auto_install-%:
+foo override_dh_installdeb bar override_dh_installxmlcatalogs: # combining regular and overrides
+override_dh_install: $(PY3VERS:%=install-python%)
+# override_dh_instal: would be a typo, but in a comment it doesn't matter
+execute_after_dh_install:
+execute_before_dh_install:
diff --git a/t/recipes/checks/debhelper/debhelper-override-typos/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-override-typos/build-spec/fill-values
new file mode 100644
index 0000000..1b2ed96
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-override-typos/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-override-typos
+Description: Test for typos in override targets
diff --git a/t/recipes/checks/debhelper/debhelper-override-typos/eval/desc b/t/recipes/checks/debhelper/debhelper-override-typos/eval/desc
new file mode 100644
index 0000000..4759fe7
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-override-typos/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-override-typos
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-override-typos/eval/hints b/t/recipes/checks/debhelper/debhelper-override-typos/eval/hints
new file mode 100644
index 0000000..9d2ec32
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-override-typos/eval/hints
@@ -0,0 +1,19 @@
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_testdirs => override_dh_testdir [debian/rules:18]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_perls => override_dh_perl [debian/rules:13]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_perls => override_dh_perl [debian/rules:12]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_nump => override_dh_numpy3 [debian/rules:7]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_installxmlcatalog => override_dh_installxmlcatalogs [debian/rules:15]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_installdebs => override_dh_installdeb [debian/rules:15]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_installcrons => override_dh_installcron [debian/rules:9]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_install_examples => override_dh_installexamples [debian/rules:14]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_install_examples => override_dh_installexamples [debian/rules:10]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_install_changelogs => override_dh_installchangelogs [debian/rules:11]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_instakk => override_dh_install [debian/rules:8]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_instakk => override_dh_install [debian/rules:14]
+debhelper-override-typos (source): typo-in-debhelper-override-target override_dh_build => override_dh_auto_build [debian/rules:22]
+debhelper-override-typos (source): typo-in-debhelper-override-target override dh_install => override_dh_install [debian/rules:25]
+debhelper-override-typos (source): typo-in-debhelper-override-target execute_before_dh_nope => execute_before_dh_gnome [debian/rules:28]
+debhelper-override-typos (source): typo-in-debhelper-override-target execute_after_dh_nope => execute_after_dh_gnome [debian/rules:27]
+debhelper-override-typos (source): debian-build-system dh [debian/rules]
+debhelper-override-typos (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-override-typos (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/control.in b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/control.in
new file mode 100644
index 0000000..19bc99a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/control.in
@@ -0,0 +1,14 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/rules
new file mode 100755
index 0000000..df647f8
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+
+PKG = debhelper-package-does-not-use-debhelper-or-cdbs
+DOCS = debian/tmp/usr/share/doc/$(PKG)
+
+clean:
+ rm -rf debian/tmp
+
+build:
+
+binary:
+ install -d debian/tmp/DEBIAN $(DOCS)
+ install -m 0644 -t $(DOCS) debian/copyright debian/changelog
+ gzip -9n $(DOCS)/changelog
+ cd debian/tmp && \
+ find * -type f ! -regex "DEBIAN/.*" -print0 | \
+ LC_ALL=C sort -z | xargs -0r md5sum > DEBIAN/md5sums
+ chown -R 0:0 debian/tmp
+ chmod -R u+w,go=rX debian/tmp
+ dpkg-gencontrol
+ dpkg --build debian/tmp ..
+
+.PHONY: binary binary-arch binary-indep build-arch build-indep clean
diff --git a/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/fill-values
new file mode 100644
index 0000000..6b83677
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-package-does-not-use-debhelper-or-cdbs
+Description: Test for packages not using debhelper or CDBS
diff --git a/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/desc b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/desc
new file mode 100644
index 0000000..5885652
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-package-does-not-use-debhelper-or-cdbs
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/hints b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/hints
new file mode 100644
index 0000000..06c2ad1
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-does-not-use-debhelper-or-cdbs/eval/hints
@@ -0,0 +1,2 @@
+debhelper-package-does-not-use-debhelper-or-cdbs (source): package-does-not-use-debhelper-or-cdbs [debian/rules]
+debhelper-package-does-not-use-debhelper-or-cdbs (source): debian-build-system other [debian/rules]
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/debian/rules
new file mode 100755
index 0000000..d61a4e0
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ -dh $@
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/fill-values
new file mode 100644
index 0000000..d3cdf73
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-package-uses-debhelper-with-prefix-minus
+Description: Test for packages using debhelper with a - prefix
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/desc b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/desc
new file mode 100644
index 0000000..26a8916
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-package-uses-debhelper-with-prefix-minus
+Test-Against:
+ package-does-not-use-debhelper-or-cdbs
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/hints b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/hints
new file mode 100644
index 0000000..507a553
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-minus/eval/hints
@@ -0,0 +1,3 @@
+debhelper-package-uses-debhelper-with-prefix-minus (source): debian-build-system dh [debian/rules]
+debhelper-package-uses-debhelper-with-prefix-minus (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-package-uses-debhelper-with-prefix-minus (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/debian/rules
new file mode 100755
index 0000000..d6bb780
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ +dh $@
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/fill-values
new file mode 100644
index 0000000..c52b8cb
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-package-uses-debhelper-with-prefix-plus
+Description: Test for packages using debhelper with a + prefix
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/desc b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/desc
new file mode 100644
index 0000000..b04f1e3
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-package-uses-debhelper-with-prefix-plus
+Test-Against:
+ package-does-not-use-debhelper-or-cdbs
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/hints b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/hints
new file mode 100644
index 0000000..5bd08a9
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-package-uses-debhelper-with-prefix-plus/eval/hints
@@ -0,0 +1,3 @@
+debhelper-package-uses-debhelper-with-prefix-plus (source): debian-build-system dh [debian/rules]
+debhelper-package-uses-debhelper-with-prefix-plus (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-package-uses-debhelper-with-prefix-plus (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/postinst b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/postinst
new file mode 100644
index 0000000..185dc3a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+run something
+
+# We should have a debhelper token.
+exit 0
diff --git a/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/rules b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/rules
new file mode 100755
index 0000000..cd6ef15
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/debian/rules
@@ -0,0 +1,38 @@
+#!/usr/bin/make -f
+#
+# Use an alternate rules file that doesn't call dh to test not warning
+# about debhelper script tokens if we call no programs that care about
+# them.
+
+pkg = $(shell dh_listpackages)
+
+build: build-indep build-arch
+build-indep:
+build-arch:
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+binary: binary-indep binary-arch
+binary-arch:
+binary-indep:
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_install
+ dh_installchangelogs
+ # dh_installdocs may modify maintainer scripts
+ install -m 644 debian/copyright debian/$(pkg)/usr/share/doc/$(pkg)
+ dh_link
+ dh_compress
+ dh_fixperms
+ # dh_installdeb needs #DEBHELPER# token too
+ mkdir -p debian/$(pkg)/DEBIAN
+ install -m 755 debian/postinst debian/$(pkg)/DEBIAN
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/fill-values
new file mode 100644
index 0000000..7d19c16
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-script-token-unneeded
+Description: Check unnecessary debhelper script token
diff --git a/t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/desc b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/desc
new file mode 100644
index 0000000..48dee5d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/desc
@@ -0,0 +1,3 @@
+Testname: debhelper-script-token-unneeded
+Test-Against: maintainer-script-lacks-debhelper-token
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/hints b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/hints
new file mode 100644
index 0000000..b803499
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token-unneeded/eval/hints
@@ -0,0 +1,3 @@
+debhelper-script-token-unneeded (source): debian-build-system debhelper [debian/rules]
+debhelper-script-token-unneeded (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-script-token-unneeded (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-script-token/build-spec/debian/postinst b/t/recipes/checks/debhelper/debhelper-script-token/build-spec/debian/postinst
new file mode 100644
index 0000000..185dc3a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+run something
+
+# We should have a debhelper token.
+exit 0
diff --git a/t/recipes/checks/debhelper/debhelper-script-token/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-script-token/build-spec/fill-values
new file mode 100644
index 0000000..0fe87cf
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-script-token
+Description: Check debhelper script token with rule minimization
diff --git a/t/recipes/checks/debhelper/debhelper-script-token/eval/desc b/t/recipes/checks/debhelper/debhelper-script-token/eval/desc
new file mode 100644
index 0000000..64e2d6f
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-script-token
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-script-token/eval/hints b/t/recipes/checks/debhelper/debhelper-script-token/eval/hints
new file mode 100644
index 0000000..ece9068
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-script-token/eval/hints
@@ -0,0 +1,4 @@
+debhelper-script-token (source): maintainer-script-lacks-debhelper-token [debian/postinst]
+debhelper-script-token (source): debian-build-system dh [debian/rules]
+debhelper-script-token (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-script-token (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/debhelper-unused-cdbs/build-spec/fill-values b/t/recipes/checks/debhelper/debhelper-unused-cdbs/build-spec/fill-values
new file mode 100644
index 0000000..33cf67d
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-unused-cdbs/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debhelper-unused-cdbs
+Extra-Build-Depends: cdbs
+Description: Test for unused build-depends on cdbs
diff --git a/t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/desc b/t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/desc
new file mode 100644
index 0000000..8fbad9a
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-unused-cdbs
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/hints b/t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/hints
new file mode 100644
index 0000000..58c11a0
--- /dev/null
+++ b/t/recipes/checks/debhelper/debhelper-unused-cdbs/eval/hints
@@ -0,0 +1,4 @@
+debhelper-unused-cdbs (source): unused-build-dependency-on-cdbs [debian/rules]
+debhelper-unused-cdbs (source): debian-build-system dh [debian/rules]
+debhelper-unused-cdbs (source): debhelper-compat-virtual-relation 13 [debian/control]
+debhelper-unused-cdbs (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debhelper/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debhelper/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debhelper/legacy-debconf/eval/desc b/t/recipes/checks/debhelper/legacy-debconf/eval/desc
new file mode 100644
index 0000000..531436c
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/legacy-debconf/eval/hints b/t/recipes/checks/debhelper/legacy-debconf/eval/hints
new file mode 100644
index 0000000..2984e86
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/eval/hints
@@ -0,0 +1,5 @@
+debconf (source): uses-debhelper-compat-file [debian/compat]
+debconf (source): no-versioned-debhelper-prerequisite 13
+debconf (source): maintainer-script-lacks-debhelper-token [debian/debconf-test.postinst]
+debconf (source): debian-build-system debhelper [debian/rules]
+debconf (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/legacy-debconf/eval/post-test b/t/recipes/checks/debhelper/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/compat.in b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/control b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/rules b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debhelper/legacy-fields/build-spec/fill-values b/t/recipes/checks/debhelper/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/debhelper/legacy-fields/eval/desc b/t/recipes/checks/debhelper/legacy-fields/eval/desc
new file mode 100644
index 0000000..caa4458
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/legacy-fields/eval/hints b/t/recipes/checks/debhelper/legacy-fields/eval/hints
new file mode 100644
index 0000000..704f9a5
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/eval/hints
@@ -0,0 +1,8 @@
+fields (source): uses-debhelper-compat-file [debian/compat]
+fields (source): package-uses-debhelper-but-lacks-build-depends [debian/rules]
+fields (source): no-versioned-debhelper-prerequisite 13
+fields (source): missing-build-dependency-for-dh_-command dh_md5sums (does not satisfy debhelper:any | debhelper-compat:any) [debian/rules]
+fields (source): debian-build-system debhelper [debian/rules]
+fields (source): debhelper-compat-level 13
+fields (source): debhelper-but-no-misc-depends fields
+fields (source): debhelper-but-no-misc-depends another-version
diff --git a/t/recipes/checks/debhelper/legacy-fields/eval/post-test b/t/recipes/checks/debhelper/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/eval/desc b/t/recipes/checks/debhelper/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..cec7741
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/eval/hints b/t/recipes/checks/debhelper/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..2a439ae
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/eval/hints
@@ -0,0 +1,13 @@
+libbaz (source): uses-debhelper-compat-file [debian/compat]
+libbaz (source): no-versioned-debhelper-prerequisite 13
+libbaz (source): maintainer-script-lacks-debhelper-token [debian/lib.prerm]
+libbaz (source): maintainer-script-lacks-debhelper-token [debian/lib.postinst]
+libbaz (source): maintainer-script-lacks-debhelper-token [debian/dev.prerm]
+libbaz (source): maintainer-script-lacks-debhelper-token [debian/dev.postinst]
+libbaz (source): debian-build-system debhelper [debian/rules]
+libbaz (source): debhelper-compat-level 13
+libbaz (source): debhelper-but-no-misc-depends libbaz2-dev
+libbaz (source): debhelper-but-no-misc-depends libbaz2-dbg
+libbaz (source): debhelper-but-no-misc-depends libbaz2
+libbaz (source): debhelper-but-no-misc-depends libbaz1-dev
+libbaz (source): debhelper-but-no-misc-depends libbaz1
diff --git a/t/recipes/checks/debhelper/legacy-libbaz/eval/post-test b/t/recipes/checks/debhelper/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..5ba2249
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..9a512b8
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,4 @@
+maintainer-scripts (source): debian-build-system debhelper [debian/rules]
+maintainer-scripts (source): debhelper-compat-virtual-relation 13 [debian/control]
+maintainer-scripts (source): debhelper-compat-level 13
+maintainer-scripts (source): debhelper-but-no-misc-depends maintainer-scripts
diff --git a/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debhelper/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debhelper/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debhelper/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debhelper/legacy-scripts/eval/desc b/t/recipes/checks/debhelper/legacy-scripts/eval/desc
new file mode 100644
index 0000000..24bff70
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/legacy-scripts/eval/hints b/t/recipes/checks/debhelper/legacy-scripts/eval/hints
new file mode 100644
index 0000000..94a71d9
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/eval/hints
@@ -0,0 +1,7 @@
+scripts (source): package-uses-deprecated-debhelper-compat-version 1
+scripts (source): package-uses-debhelper-but-lacks-build-depends [debian/rules]
+scripts (source): no-versioned-debhelper-prerequisite 1
+scripts (source): missing-build-dependency-for-dh_-command dh_testroot (does not satisfy debhelper:any | debhelper-compat:any) [debian/rules]
+scripts (source): debian-build-system debhelper [debian/rules]
+scripts (source): debhelper-compat-file-is-missing
+scripts (source): debhelper-but-no-misc-depends scripts
diff --git a/t/recipes/checks/debhelper/legacy-scripts/eval/post-test b/t/recipes/checks/debhelper/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debhelper/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debhelper/oeverride-typo/build-spec/debian/rules b/t/recipes/checks/debhelper/oeverride-typo/build-spec/debian/rules
new file mode 100755
index 0000000..c62e10f
--- /dev/null
+++ b/t/recipes/checks/debhelper/oeverride-typo/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+# typo in prefix
+oeverride_dh_missing:
diff --git a/t/recipes/checks/debhelper/oeverride-typo/build-spec/fill-values b/t/recipes/checks/debhelper/oeverride-typo/build-spec/fill-values
new file mode 100644
index 0000000..60aaeb3
--- /dev/null
+++ b/t/recipes/checks/debhelper/oeverride-typo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: oeverride-typo
+Description: Uses the misspelling 'oeverride' in a dh rule target
diff --git a/t/recipes/checks/debhelper/oeverride-typo/eval/desc b/t/recipes/checks/debhelper/oeverride-typo/eval/desc
new file mode 100644
index 0000000..7621bba
--- /dev/null
+++ b/t/recipes/checks/debhelper/oeverride-typo/eval/desc
@@ -0,0 +1,3 @@
+Testname: oeverride-typo
+Check: debhelper
+See-Also: Bug#963765
diff --git a/t/recipes/checks/debhelper/oeverride-typo/eval/hints b/t/recipes/checks/debhelper/oeverride-typo/eval/hints
new file mode 100644
index 0000000..bef4e7c
--- /dev/null
+++ b/t/recipes/checks/debhelper/oeverride-typo/eval/hints
@@ -0,0 +1,4 @@
+oeverride-typo (source): typo-in-debhelper-override-target oeverride_dh_missing => override_dh_missing [debian/rules:7]
+oeverride-typo (source): debian-build-system dh [debian/rules]
+oeverride-typo (source): debhelper-compat-virtual-relation 13 [debian/control]
+oeverride-typo (source): debhelper-compat-level 13
diff --git a/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/debian/rules b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/debian/rules
new file mode 100755
index 0000000..d5fb60d
--- /dev/null
+++ b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_systemd_enable:
+ dh_systemd_enable
+
+override_dh_systemd_start:
+ dh_systemd_start
+
+override_dh_systemd_start-arch:
+ dh_systemd_start
diff --git a/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/fill-values b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/fill-values
new file mode 100644
index 0000000..d418d1d
--- /dev/null
+++ b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: rules-uses-deprecated-systemd-override
+Description: Test for override_dh_systemd_enable with compat levels 11
+Dh-Compat-Level: 12
diff --git a/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/desc b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/desc
new file mode 100644
index 0000000..1eab75d
--- /dev/null
+++ b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-uses-deprecated-systemd-override
+Check: debhelper
diff --git a/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/hints b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/hints
new file mode 100644
index 0000000..466a42e
--- /dev/null
+++ b/t/recipes/checks/debhelper/rules-uses-deprecated-systemd-override/eval/hints
@@ -0,0 +1,6 @@
+rules-uses-deprecated-systemd-override (source): package-uses-old-debhelper-compat-version 12
+rules-uses-deprecated-systemd-override (source): debian-rules-uses-deprecated-systemd-override override_dh_systemd_start-arch [debian/rules:12]
+rules-uses-deprecated-systemd-override (source): debian-rules-uses-deprecated-systemd-override override_dh_systemd_enable [debian/rules:6]
+rules-uses-deprecated-systemd-override (source): debian-build-system dh [debian/rules]
+rules-uses-deprecated-systemd-override (source): debhelper-compat-virtual-relation 12 [debian/control]
+rules-uses-deprecated-systemd-override (source): debhelper-compat-level 12
diff --git a/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.debhelper.log b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.debhelper.log
new file mode 100644
index 0000000..3cb1115
--- /dev/null
+++ b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.debhelper.log
@@ -0,0 +1 @@
+debhelper log file for package
diff --git a/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.postinst.debhelper b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.postinst.debhelper
new file mode 100644
index 0000000..1cd1647
--- /dev/null
+++ b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/package.postinst.debhelper
@@ -0,0 +1 @@
+Internal debhelper file for package
diff --git a/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/rules b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/rules
new file mode 100755
index 0000000..b792adb
--- /dev/null
+++ b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+clean:
+ # No such thing
diff --git a/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/fill-values b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/fill-values
new file mode 100644
index 0000000..78a7192
--- /dev/null
+++ b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-internal-files
+Description: Test for spotting unremoved debhelper temp files
diff --git a/t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/desc b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/desc
new file mode 100644
index 0000000..3653810
--- /dev/null
+++ b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-internal-files
+Check: debhelper/temporary
diff --git a/t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/hints b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/hints
new file mode 100644
index 0000000..1e0d3cf
--- /dev/null
+++ b/t/recipes/checks/debhelper/temporary/debhelper-internal-files/eval/hints
@@ -0,0 +1,2 @@
+debhelper-internal-files (source): temporary-debhelper-file [debian/package.postinst.debhelper]
+debhelper-internal-files (source): temporary-debhelper-file [debian/package.debhelper.log]
diff --git a/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/fill-values
new file mode 100644
index 0000000..a9262a1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-distribution-does-not-match-changes-file
+Skeleton: upload-native
+Distribution: experimental
+Description: Test upload with unstable in changes but experimental in changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/post-build.in b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/post-build.in
new file mode 100755
index 0000000..10a61dc
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/build-spec/post-build.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+perl -pi -e 's/^(Distribution:)\s+\S+/$1 unstable/' [% $build_product %]
diff --git a/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/desc b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/desc
new file mode 100644
index 0000000..d46c519
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-distribution-does-not-match-changes-file
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/hints b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/hints
new file mode 100644
index 0000000..cede117
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-distribution-does-not-match-changes-file/eval/hints
@@ -0,0 +1 @@
+changelog-distribution-does-not-match-changes-file (binary): changelog-distribution-does-not-match-changes-file experimental != unstable [usr/share/doc/changelog-distribution-does-not-match-changes-file/changelog.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/debian/changelog.in
new file mode 100644
index 0000000..36992ba
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.1-2) unstable; urgency=low
+
+ * An earlier non-native version.
+
+ -- [% $author %] Tue, 1 Jan 2008 22:45:57 +0000
diff --git a/t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/fill-values
new file mode 100644
index 0000000..1d3073c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-become-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-become-native
+Description: Test for packages where the version suddenly becomes native
diff --git a/t/recipes/checks/debian/changelog/changelog-file-become-native/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-become-native/eval/desc
new file mode 100644
index 0000000..4294061
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-become-native/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-become-native
+See-Also: Debian Bug #504070
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-become-native/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-become-native/eval/hints
new file mode 100644
index 0000000..05caab0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-become-native/eval/hints
@@ -0,0 +1 @@
+changelog-file-become-native (source): odd-historical-debian-changelog-version 0.1-2 (for native) [debian/changelog:8]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/debian/changelog.in
new file mode 100644
index 0000000..363fcc6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Version reused, new source package name.
+
+ -- [% $author %] [% $date %]
+
+[% $source %]-oldname (1.0-3) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/fill-values
new file mode 100644
index 0000000..0e3cdbf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-consecutive-debian-revision-unrel
+Skeleton: upload-non-native
+Description: Check for false positive in non-consecutive-debian-revision
diff --git a/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/desc
new file mode 100644
index 0000000..a78a0ae
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-consecutive-debian-revision-unrel
+Test-Against: non-consecutive-debian-revision
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-consecutive-debian-revision-unrel/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/debian/rules
new file mode 100755
index 0000000..c8b797a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+PKG:=$(shell dh_listpackages)
+DOC_DIR:=debian/$(PKG)/usr/share/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_md5sums:
+ mv $(DOC_DIR)/changelog.gz $(DOC_DIR)/changelog.Debian.gz
+ dh_md5sums
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/fill-values
new file mode 100644
index 0000000..37405fe
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-dch-wrong-name-native
+Description: Test if Debian changelog has the wrong name
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/desc
new file mode 100644
index 0000000..3595388
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-dch-wrong-name-native
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/hints
new file mode 100644
index 0000000..dae41ee
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name-native/eval/hints
@@ -0,0 +1 @@
+changelog-file-dch-wrong-name-native (binary): wrong-name-for-changelog-of-native-package [usr/share/doc/changelog-file-dch-wrong-name-native/changelog.Debian.gz]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/debian/rules
new file mode 100755
index 0000000..2d5cd31
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+PKG:=$(shell dh_listpackages)
+DOC_DIR:=debian/$(PKG)/usr/share/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_md5sums:
+ mv $(DOC_DIR)/changelog.Debian.gz $(DOC_DIR)/changelog.debian.gz
+ dh_md5sums
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/fill-values
new file mode 100644
index 0000000..80de357
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-dch-wrong-name
+Skeleton: upload-non-native
+Description: Test if Debian changelog has the wrong name
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/orig/ChangeLog b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/orig/ChangeLog
new file mode 100644
index 0000000..a935b07
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/build-spec/orig/ChangeLog
@@ -0,0 +1,5 @@
+2011-09-10 Niels Thykier <niels@thykier.net>
+
+ * This is a non-Debian ChangeLog. Lintian should not be tricked
+ to believe this is a Debian changelog.
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/desc
new file mode 100644
index 0000000..ba278f1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-dch-wrong-name
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/hints
new file mode 100644
index 0000000..b726e93
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-dch-wrong-name/eval/hints
@@ -0,0 +1 @@
+changelog-file-dch-wrong-name (binary): wrong-name-for-debian-changelog-file [usr/share/doc/changelog-file-dch-wrong-name/changelog.debian.gz]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/debian/changelog.in
new file mode 100644
index 0000000..107f854
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) UNRELEASED; urgency=low
+
+ * .
+ *
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.1) unstable; urgency=low
+
+ * First upload (Closes: #123456).
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/fill-values
new file mode 100644
index 0000000..e0f238f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-empty-entry-unrel
+Description: Check changelog empty entry (UNRELEASED)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/desc
new file mode 100644
index 0000000..7e2446f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-empty-entry-unrel
+Test-Against: changelog-empty-entry
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/hints
new file mode 100644
index 0000000..2b08d4c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry-unrel/eval/hints
@@ -0,0 +1 @@
+changelog-file-empty-entry-unrel (binary): debian-changelog-line-too-short . [usr/share/doc/changelog-file-empty-entry-unrel/changelog.gz:3]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/debian/changelog.in
new file mode 100644
index 0000000..27fbf38
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * .
+ *
+
+ --
+
+[% $source %] (0.1) unstable; urgency=low
+
+ * First upload (Closes: #123456).
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/fill-values
new file mode 100644
index 0000000..30bc2c8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-empty-entry
+Description: Check changelog empty entry
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/desc
new file mode 100644
index 0000000..a884875
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-empty-entry
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/hints
new file mode 100644
index 0000000..a1252e4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-empty-entry/eval/hints
@@ -0,0 +1,4 @@
+changelog-file-empty-entry (binary): syntax-error-in-debian-changelog "found start of entry where expected more change data or trailer" [usr/share/doc/changelog-file-empty-entry/changelog.gz:8]
+changelog-file-empty-entry (binary): syntax-error-in-debian-changelog "badly formatted trailer line" [usr/share/doc/changelog-file-empty-entry/changelog.gz:6]
+changelog-file-empty-entry (binary): debian-changelog-line-too-short . [usr/share/doc/changelog-file-empty-entry/changelog.gz:3]
+changelog-file-empty-entry (binary): changelog-empty-entry [usr/share/doc/changelog-file-empty-entry/changelog.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/debian/changelog.in
new file mode 100644
index 0000000..eb930a3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/debian/changelog.in
@@ -0,0 +1,11 @@
+[% $source %] (1:[% $version %]) unstable; urgency=low
+
+ * This changelog entry introduces a version prefix.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (999999) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/fill-values
new file mode 100644
index 0000000..4150aae
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-epoch-change-without-comment-new
+Description: Check changelog for accidental epoch changes
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/desc
new file mode 100644
index 0000000..f91cffa
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-epoch-change-without-comment-new
+Test-Against:
+ epoch-changed-but-upstream-version-did-not-go-backwards
+ latest-debian-changelog-entry-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/hints
new file mode 100644
index 0000000..5a62f5b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-new/eval/hints
@@ -0,0 +1 @@
+changelog-file-epoch-change-without-comment-new (source): epoch-change-without-comment 999999 -> 1:1.0 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/debian/changelog.in
new file mode 100644
index 0000000..c3fcc68
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/debian/changelog.in
@@ -0,0 +1,11 @@
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * This changelog entry has the same prefix as before.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (2:0) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/fill-values
new file mode 100644
index 0000000..986d64d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-epoch-change-without-comment-same
+Description: Check changelog for accidental epoch changes (false positive)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/desc
new file mode 100644
index 0000000..13e9349
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-epoch-change-without-comment-same
+Test-Against:
+ epoch-change-without-comment
+ epoch-changed-but-upstream-version-did-not-go-backwards
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-same/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/debian/changelog.in
new file mode 100644
index 0000000..785572f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * This changelog entry bumps the epoch and references the word in the
+ changelog.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1:999999) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/fill-values
new file mode 100644
index 0000000..2a74c76
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-epoch-change-without-comment-unrel
+Description: Check changelog for accidental epoch changes (false positive)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/desc
new file mode 100644
index 0000000..f2bb59b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/desc
@@ -0,0 +1,6 @@
+Testname: changelog-file-epoch-change-without-comment-unrel
+Test-Against:
+ epoch-change-without-comment
+ epoch-changed-but-upstream-version-did-not-go-backwards
+ latest-debian-changelog-entry-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment-unrel/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/debian/changelog.in
new file mode 100644
index 0000000..c8a9ab0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/debian/changelog.in
@@ -0,0 +1,11 @@
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * This changelog entry bumps the version.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1:99999999) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/fill-values
new file mode 100644
index 0000000..9bcb203
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-epoch-change-without-comment
+Description: Check changelog for accidental epoch changes
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/desc
new file mode 100644
index 0000000..538582f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-epoch-change-without-comment
+Test-Against:
+ epoch-changed-but-upstream-version-did-not-go-backwards
+ latest-debian-changelog-entry-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/hints
new file mode 100644
index 0000000..c8fe1d5
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-change-without-comment/eval/hints
@@ -0,0 +1 @@
+changelog-file-epoch-change-without-comment (source): epoch-change-without-comment 1:99999999 -> 2:1.0 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/debian/changelog.in
new file mode 100644
index 0000000..c7a1b0c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * This changelog entry bumps the epoch and the upstream version number
+ decreased (correctly).
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1:9999999) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/fill-values
new file mode 100644
index 0000000..b39c267
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-epoch-changed-upstream-version-decrease
+Description: Check changelog for accidental epoch changes (decrease)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/desc
new file mode 100644
index 0000000..4239848
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/desc
@@ -0,0 +1,6 @@
+Testname: changelog-file-epoch-changed-upstream-version-decrease
+Test-Against:
+ epoch-change-without-comment
+ epoch-changed-but-upstream-version-did-not-go-backwards
+ latest-debian-changelog-entry-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-decrease/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/debian/changelog.in
new file mode 100644
index 0000000..49c0a3d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * This changelog entry bumps the epoch and the upstream version number
+ increased too.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1:0.9-4) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/fill-values
new file mode 100644
index 0000000..c2167bf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: changelog-file-epoch-changed-upstream-version-increase
+Version: 1.0-3
+Description: Check changelog for accidental epoch changes (increase)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/desc
new file mode 100644
index 0000000..6113173
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-epoch-changed-upstream-version-increase
+Test-Against:
+ epoch-change-without-comment
+ latest-debian-changelog-entry-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/hints
new file mode 100644
index 0000000..2ac17d4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-increase/eval/hints
@@ -0,0 +1 @@
+changelog-file-epoch-changed-upstream-version-increase (source): epoch-changed-but-upstream-version-did-not-go-backwards 1:0.9-4 -> 2:1.0-3 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a992b11
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/debian/changelog.in
@@ -0,0 +1,11 @@
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * This changelog entry bumps the epoch but not the upstream version number,
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1:[% $version %]) unstable; urgency=low
+
+ * Initial upload.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/fill-values
new file mode 100644
index 0000000..86e8493
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: changelog-file-epoch-changed-upstream-version-same
+Version: 1.0-3
+Description: Check changelog for accidental epoch changes (same)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/desc
new file mode 100644
index 0000000..b5c1b45
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-epoch-changed-upstream-version-same
+Test-Against:
+ epoch-change-without-comment
+ latest-debian-changelog-entry-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/hints
new file mode 100644
index 0000000..8bb66ca
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-epoch-changed-upstream-version-same/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-epoch-changed-upstream-version-same (source): latest-debian-changelog-entry-reuses-existing-version 2:1.0-3 ~ 1:1.0-3 (last used: Fri, 06 Feb 2009 22:22:37 -0800) [debian/changelog:1]
+changelog-file-epoch-changed-upstream-version-same (source): epoch-changed-but-upstream-version-did-not-go-backwards 1:1.0-3 -> 2:1.0-3 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/debian/changelog.in
new file mode 100644
index 0000000..71b790a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/fill-values
new file mode 100644
index 0000000..0239f93
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-file-etch-nmu
+Skeleton: upload-non-native
+Version: 1.0-1etch1.1
+Description: Test for a code name in an unstable upload
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/desc
new file mode 100644
index 0000000..5904a7d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-etch-nmu
+Test-Against:
+ malformed-debian-changelog-version
+ version-refers-to-distribution
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch-nmu/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-etch/build-spec/fill-values
new file mode 100644
index 0000000..1d1817f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-file-etch
+Skeleton: upload-non-native
+Version: 1.0-1etch1
+Description: Test for a code name in an unstable upload
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-etch/eval/desc
new file mode 100644
index 0000000..03dd7f8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-file-etch
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-etch/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-etch/eval/hints
new file mode 100644
index 0000000..8b1b701
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-etch/eval/hints
@@ -0,0 +1 @@
+changelog-file-etch (source): version-refers-to-distribution 1.0-1etch1 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/debian/changelog.in
new file mode 100644
index 0000000..01e7403
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Upload to sid.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0-1) experimental; urgency=low
+
+ * First upload to experimental.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/fill-values
new file mode 100644
index 0000000..dc465ac
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: changelog-file-experimental-false-positive
+Version: 1.0-3
+Description: Check experimental to unstable changes false positive
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/desc
new file mode 100644
index 0000000..4e6018a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-experimental-false-positive
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/hints
new file mode 100644
index 0000000..318b4f2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental-false-positive/eval/hints
@@ -0,0 +1 @@
+changelog-file-experimental-false-positive (source): non-consecutive-debian-revision 1.0-1 -> 1.0-3 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b8b07af
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0-1) experimental; urgency=low
+
+ * First upload to experimental.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/fill-values
new file mode 100644
index 0000000..562583b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: changelog-file-experimental
+Version: 1.0-3
+Description: Check experimental to unstable changes
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-experimental/eval/desc
new file mode 100644
index 0000000..e48f09b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-experimental
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-experimental/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-experimental/eval/hints
new file mode 100644
index 0000000..58aaeee
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-experimental/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-experimental (source): non-consecutive-debian-revision 1.0-1 -> 1.0-3 [debian/changelog:1]
+changelog-file-experimental (binary): experimental-to-unstable-without-comment [usr/share/doc/changelog-file-experimental/changelog.Debian.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/debian/docs b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/debian/docs
new file mode 100644
index 0000000..6d10dce
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/debian/docs
@@ -0,0 +1 @@
+changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/fill-values
new file mode 100644
index 0000000..6d6ac8c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-extra-upstream
+Skeleton: upload-non-native
+Description: Check a package with ChangeLog and changelog.gz
diff --git a/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/orig/changelog b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/orig/changelog
new file mode 100644
index 0000000..2d85e10
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/build-spec/orig/changelog
@@ -0,0 +1 @@
+This is some upstream changelog file.
diff --git a/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/desc
new file mode 100644
index 0000000..8520129
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-extra-upstream
+Test-Against: changelog-file-not-compressed
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-extra-upstream/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..d73efdd
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/changelog.in
@@ -0,0 +1,42 @@
+[% $source %] (1:[% $version %]) unstable; urgency=low
+
+
+ * Test: [% $testname %]
+ * Upload to experimental.
+ * improbable-bug-number-in-closes (Closes: #1234)
+ * Another bug closer without a colon (Closes #555555)
+ * This line is too long since it contains words and words and words but doesn't
+ have any wrapping except at column 81.
+ * http://www.example.com/but-a-really-long-url-does-not-count-as-a-long-line-at-all
+ See http://www.example.com/but-a-really-long-url-does-not-count-as-a-long-line-at-all
+ even if preceded by See.
+ * Misspelled Closes (Close: #666666)
+
+ * Here is another really long in the changelog, and it would be really nice if a
+ certain program would report its line number correctly. Especially since,
+ we have an extra empty line in the start of the entry.
+
+ * Below is another very long line (UTF-8), which should have a "visual" width
+ of ~75 characters, but consists of over 200 bytes.
+ üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü
+
+ * It might even fix TEMP-1234567-abcdef, though probably not.
+ * We refer to the epoch bump here.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Duplicate changelog entry to trigger tags.
+
+ -- Unknown <unknown@unknown> [% $date %]
+
+[% $source %] (0.1) unstable; urgency=low
+
+ * Used to be a syntax error here.
+
+ -- [% $author %] [% $date %]
+
+Local variables:
+add-log-mailing-address: "rra@debian.org"
+End:
diff --git a/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/rules
new file mode 100755
index 0000000..9171128
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+pkg = $(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_installchangelogs:
+ install -c -m 644 debian/changelog \
+ debian/$(pkg)/usr/share/doc/$(pkg)/changelog.Debian
+ gzip -1 -n debian/$(pkg)/usr/share/doc/$(pkg)/changelog.Debian
diff --git a/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/fill-values
new file mode 100644
index 0000000..ec70647
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-general
+Skeleton: upload-non-native
+Description: General tests for changelog-file tags
diff --git a/t/recipes/checks/debian/changelog/changelog-file-general/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-general/eval/desc
new file mode 100644
index 0000000..b5e38e0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-file-general
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-general/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-general/eval/hints
new file mode 100644
index 0000000..083916b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-general/eval/hints
@@ -0,0 +1,14 @@
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date [debian/changelog:1]
+changelog-file-general (source): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 ~ 1.0-1 (last used: CURRENT) [debian/changelog:1]
+changelog-file-general (source): epoch-changed-but-upstream-version-did-not-go-backwards 1.0-1 -> 1:1.0-1 [debian/changelog:1]
+changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555 [usr/share/doc/changelog-file-general/changelog.Debian.gz:1]
+changelog-file-general (binary): misspelled-closes-bug Close: #666666 [usr/share/doc/changelog-file-general/changelog.Debian.gz:1]
+changelog-file-general (binary): latest-changelog-entry-without-new-date [usr/share/doc/changelog-file-general/changelog.Debian.gz:1]
+changelog-file-general (binary): improbable-bug-number-in-closes 1234 [usr/share/doc/changelog-file-general/changelog.Debian.gz:1]
+changelog-file-general (binary): debian-changelog-line-too-long [usr/share/doc/changelog-file-general/changelog.Debian.gz:8]
+changelog-file-general (binary): debian-changelog-line-too-long [usr/share/doc/changelog-file-general/changelog.Debian.gz:15]
+changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings [usr/share/doc/changelog-file-general/changelog.Debian.gz:41]
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef [usr/share/doc/changelog-file-general/changelog.Debian.gz:1]
+changelog-file-general (binary): changelog-not-compressed-with-max-compression [usr/share/doc/changelog-file-general/changelog.Debian.gz]
+changelog-file-general (binary): bogus-mail-host-in-debian-changelog unknown@unknown (for version 1.0-1) [usr/share/doc/changelog-file-general/changelog.Debian.gz:28]
+changelog-file-general (binary): bad-intended-distribution intended for experimental but uploaded to unstable [usr/share/doc/changelog-file-general/changelog.Debian.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-general/eval/post-test b/t/recipes/checks/debian/changelog/changelog-file-general/eval/post-test
new file mode 100644
index 0000000..a84cbe8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-general/eval/post-test
@@ -0,0 +1 @@
+s/\(last used: ([^\)]+*)\)/(last used: CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/changelog.in
new file mode 100644
index 0000000..fdf11f7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * Writes out "Sept" and "Thurs"; should be "Sep" and "Thu".
+
+ -- [% $author %] Thurs, 14 Sept 2017 10:47:43 +0000
diff --git a/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/control.in b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/control.in
new file mode 100644
index 0000000..c770eac
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: 4.1.0
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/fill-values
new file mode 100644
index 0000000..d0d3f38
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-invalid-date
+Description: Test for invalid dates
diff --git a/t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/desc
new file mode 100644
index 0000000..d58b493
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-file-invalid-date
+Test-Against:
+ debian-changelog-has-wrong-day-of-week
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/hints
new file mode 100644
index 0000000..472360d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-invalid-date/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-invalid-date (binary): invalid-date-in-debian-changelog (Thurs -> Thu) [usr/share/doc/changelog-file-invalid-date/changelog.gz:1]
+changelog-file-invalid-date (binary): invalid-date-in-debian-changelog (Sept -> Sep) [usr/share/doc/changelog-file-invalid-date/changelog.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b700347
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/debian/changelog.in
@@ -0,0 +1,17 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ * The following lines are too short.
+ * R³
+ * dh 11
+ * 12345
+
+ * The following entries are long enough.
+ * dh 11.
+ * 123456
+
+ * These are false positives.
+ * 123:
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/fill-values
new file mode 100644
index 0000000..719e316
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-line-too-short
+Skeleton: upload-non-native
+Description: Test for short changelog entries
diff --git a/t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/desc
new file mode 100644
index 0000000..9681924
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-line-too-short
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/hints
new file mode 100644
index 0000000..92d4bf6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-line-too-short/eval/hints
@@ -0,0 +1,3 @@
+changelog-file-line-too-short (binary): debian-changelog-line-too-short dh 11 [usr/share/doc/changelog-file-line-too-short/changelog.Debian.gz:7]
+changelog-file-line-too-short (binary): debian-changelog-line-too-short R³ [usr/share/doc/changelog-file-line-too-short/changelog.Debian.gz:6]
+changelog-file-line-too-short (binary): debian-changelog-line-too-short 12345 [usr/share/doc/changelog-file-line-too-short/changelog.Debian.gz:8]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/debian/changelog.in
new file mode 100644
index 0000000..ea010a2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) stable-proposed-updates; urgency=low
+
+ * New version.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.9-1) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] Tue, 1 Jan 2008 22:45:57 +0000
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/fill-values
new file mode 100644
index 0000000..2bdf496
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-file-missing-explicit-entry
+Skeleton: upload-non-native
+Version: 1.2-3+deb9u1
+Description: Test for missing (stable update, etc.) entries
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/desc
new file mode 100644
index 0000000..f2805f3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-missing-explicit-entry
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/hints
new file mode 100644
index 0000000..b24457e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing-explicit-entry/eval/hints
@@ -0,0 +1 @@
+changelog-file-missing-explicit-entry (source): changelog-file-missing-explicit-entry 0.9-1 -> 1.2-3 (missing) -> 1.2-3+deb9u1 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/debian/rules
new file mode 100755
index 0000000..a687494
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+
+override_dh_md5sums:
+ find debian/*/ -type f -a -name 'changelog*' -delete
+ dh_md5sums
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/fill-values
new file mode 100644
index 0000000..fb5b402
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-missing
+Skeleton: upload-non-native
+Description: Test if Debian changelog is missing
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-missing/eval/desc
new file mode 100644
index 0000000..c3c534b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-missing
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-missing/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-missing/eval/hints
new file mode 100644
index 0000000..de5ad15
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-missing/eval/hints
@@ -0,0 +1 @@
+changelog-file-missing (binary): no-changelog usr/share/doc/changelog-file-missing/changelog.Debian.gz (non-native package)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/debian/changelog.in
new file mode 100644
index 0000000..18d0420
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/debian/changelog.in
@@ -0,0 +1,14 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * New upstream bugfix release.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0-1) unstable; urgency=low
+
+ * Old changelog entry to trigger the tag.
+
+ -- [% $author %] Sat, 20 Mar 2010 16:09:18 -0700
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/fill-values
new file mode 100644
index 0000000..c26e446
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-file-new-upstream
+Skeleton: upload-non-native
+Version: 1.0-2
+Description: Check a new upstream version without a version change
diff --git a/t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/desc
new file mode 100644
index 0000000..dca2515
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-new-upstream
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/hints
new file mode 100644
index 0000000..6c35244
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-new-upstream/eval/hints
@@ -0,0 +1 @@
+changelog-file-new-upstream (source): possible-new-upstream-release-without-new-version [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/NEWS b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/NEWS
new file mode 100644
index 0000000..6a69656
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/NEWS
@@ -0,0 +1,7 @@
+changelog-file-news-and-changelog-not-compressed (1.0) unstable; urgency=low
+
+ Something incredibly important... or maybe this is just a
+ lintian test for an uncompressed NEWS file.
+
+ -- Niels Thykier <niels@thykier.net> Wed, 10 Aug 2011 21:09:24 +0200
+ \ No newline at end of file
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/rules
new file mode 100755
index 0000000..f957b51
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+pkg = $(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_installchangelogs:
+ install -c -m 644 debian/changelog \
+ debian/$(pkg)/usr/share/doc/$(pkg)/changelog
+ install -c -m 644 debian/NEWS \
+ debian/$(pkg)/usr/share/doc/$(pkg)/NEWS.Debian
+
+override_dh_compress:
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/fill-values
new file mode 100644
index 0000000..8fc7c20
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-news-and-changelog-not-compressed
+Description: General tests for changelog-file tags
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/desc
new file mode 100644
index 0000000..9d29525
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-news-and-changelog-not-compressed
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/hints
new file mode 100644
index 0000000..2715a6c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-and-changelog-not-compressed/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-news-and-changelog-not-compressed (binary): debian-news-file-not-compressed [usr/share/doc/changelog-file-news-and-changelog-not-compressed/NEWS.Debian]
+changelog-file-news-and-changelog-not-compressed (binary): changelog-file-not-compressed [usr/share/doc/changelog-file-news-and-changelog-not-compressed/changelog]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/debian/NEWS b/t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/debian/NEWS
new file mode 100644
index 0000000..e5ca0f2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/debian/NEWS
@@ -0,0 +1,11 @@
+changelog-file-news-general (1.0) UNRELEASED; urgency=high
+
+ * This is a major change, which shouldn't be using an asterisk. It also
+ has an ISO 8859-1 character: µ and a speling error.
+
+ -- Russ Allbery <rra@debian.org> Fri, 01 Jan 2010 20:57:15 -0800
+changelog-file-news-general (0.9) unstable; urgency=low
+
+ Another entry, this one with a syntax error in the date.
+
+ -- Russ Allbery <rra@debian.org> Fri, 01 Jan 2010 20:57:15 -080
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/fill-values
new file mode 100644
index 0000000..7b9e061
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-news-general
+Description: General checks for NEWS.Debian
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-general/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-news-general/eval/desc
new file mode 100644
index 0000000..83f65c2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-news-general
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-general/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-news-general/eval/hints
new file mode 100644
index 0000000..e04e26e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-general/eval/hints
@@ -0,0 +1,7 @@
+changelog-file-news-general (binary): syntax-error-in-debian-news-file "found eof where expected more change data or trailer" [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz:12]
+changelog-file-news-general (binary): syntax-error-in-debian-news-file "badly formatted trailer line" [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz:11]
+changelog-file-news-general (binary): spelling-error-in-news-debian speling spelling [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz]
+changelog-file-news-general (binary): debian-news-entry-uses-asterisk [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz:1]
+changelog-file-news-general (binary): debian-news-entry-has-strange-distribution UNRELEASED [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz:1]
+changelog-file-news-general (binary): changelog-news-debian-mismatch Urgency low != high [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz:1]
+changelog-file-news-general (binary): changelog-news-debian-mismatch Distribution unstable != UNRELEASED [usr/share/doc/changelog-file-news-general/NEWS.Debian.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/debian/NEWS b/t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/debian/NEWS
new file mode 100644
index 0000000..a4be560
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/debian/NEWS
@@ -0,0 +1,6 @@
+changelog-file-news-version (2.0) unstable; urgency=low
+
+ This is some news entry about something.
+
+ -- Russ Allbery <rra@debian.org> Fri, 01 Jan 2010 22:09:12 -0800
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/fill-values
new file mode 100644
index 0000000..6b75823
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-news-version
+Description: Check mismatches of the NEWS.Debian version
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-version/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-news-version/eval/desc
new file mode 100644
index 0000000..ddeddca
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-news-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-version/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-news-version/eval/hints
new file mode 100644
index 0000000..6f9c9f0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-version/eval/hints
@@ -0,0 +1 @@
+changelog-file-news-version (binary): debian-news-entry-has-unknown-version 2.0 [usr/share/doc/changelog-file-news-version/NEWS.Debian.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/package-news b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/package-news
new file mode 100644
index 0000000..928a48c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/package-news
@@ -0,0 +1,6 @@
+changelog-file-wrong-name (1.0) unstable; urgency=low
+
+ Some interesting information.
+
+ -- Niels Thykier <niels@thykier.net> Sun, 22 Jul 2012 20:30:00 +0000
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/rules
new file mode 100755
index 0000000..952d45a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+PKG=$(shell dh_listpackages)
+DOC=debian/$(PKG)/usr/share/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_installchangelogs:
+ dh_installchangelogs
+ gzip -n -9c < debian/package-news > $(DOC)/news.debian.gz
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/fill-values
new file mode 100644
index 0000000..0e4b849
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-news-wrong-name
+Description: Check for NEWS.Debian installed with wrong name
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/desc
new file mode 100644
index 0000000..86a8f41
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-news-wrong-name
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/hints
new file mode 100644
index 0000000..3636bbb
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-news-wrong-name/eval/hints
@@ -0,0 +1 @@
+changelog-file-news-wrong-name (binary): wrong-name-for-debian-news-file [usr/share/doc/changelog-file-news-wrong-name/news.debian.gz]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/debian/rules
new file mode 100755
index 0000000..f7139c2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_md5sums:
+ find debian/*/ -type f -a -iname 'changelog.*' -delete
+ dh_md5sums
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/fill-values
new file mode 100644
index 0000000..e3dddde
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-no-dch-native
+Description: Test if Debian changelog is missing in native pkg
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/desc
new file mode 100644
index 0000000..6dd8e86
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-no-dch-native
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/hints
new file mode 100644
index 0000000..8172b29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch-native/eval/hints
@@ -0,0 +1 @@
+changelog-file-no-dch-native (binary): no-changelog usr/share/doc/changelog-file-no-dch-native/changelog.gz (native package)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/debian/rules
new file mode 100755
index 0000000..9307919
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installchangelogs:
+ # This is needed for Ubuntu, where debhelper does not install
+ # upstream changelogs by default
+ dh_installchangelogs ChangeLog
+
+override_dh_md5sums:
+ find debian/*/ -type f -a -iname 'changelog.debian*' -delete
+ dh_md5sums
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/fill-values
new file mode 100644
index 0000000..d5a6192
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-no-dch
+Skeleton: upload-non-native
+Description: Test if Debian changelog is missing
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/orig/ChangeLog b/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/orig/ChangeLog
new file mode 100644
index 0000000..a935b07
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch/build-spec/orig/ChangeLog
@@ -0,0 +1,5 @@
+2011-09-10 Niels Thykier <niels@thykier.net>
+
+ * This is a non-Debian ChangeLog. Lintian should not be tricked
+ to believe this is a Debian changelog.
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/desc
new file mode 100644
index 0000000..ff7ebdf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-no-dch
+Test-Against: syntax-error-in-debian-changelog
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/hints
new file mode 100644
index 0000000..e09922f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-no-dch/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-no-dch (binary): syntax-error-in-debian-changelog "not a Debian changelog" [usr/share/doc/changelog-file-no-dch/changelog.gz:1]
+changelog-file-no-dch (binary): debian-changelog-file-missing-or-wrong-name
diff --git a/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7242f97
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/debian/changelog.in
@@ -0,0 +1,45 @@
+[% $source %] (3:[% $version %]) unstable; urgency=low
+
+ * Third use of [% $version %].
+ * This changelog entry bumps the epoch and references the word in the
+ changelog.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (3:0) unstable; urgency=low
+
+ * Bumping epoch to inject a changelog entry to ensure we check later entries.
+
+ -- [% $author %] Fri, 06 Feb 2010 22:22:37 -0800
+
+other ([% $version %]) unstable; urgency=low
+
+ * This has the same version but different source and is thus a
+ false-positive.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
+
+[% $source %] (2:[% $version %]) unstable; urgency=low
+
+ * Second use of version [% $version %]. True positive.
+
+ -- [% $author %] Fri, 06 Feb 2008 22:22:37 -0800
+
+[% $source %] (2:0) unstable; urgency=low
+
+ * Bumping epoch to inject a changelog entry to ensure we check later entries.
+
+ -- [% $author %] Fri, 06 Feb 2007 22:22:37 -0800
+
+[% $source %] (1:[% $version %]) unstable; urgency=low
+
+ * Initial use of version [% $version %]. This is a false positive as we should
+ * stop after 2:[% $version %].
+
+ -- [% $author %] Fri, 06 Feb 2006 22:22:37 -0800
+
+[% $source %] (1:0) unstable; urgency=low
+
+ * Add epoch.
+
+ -- [% $author %] Fri, 06 Feb 2005 22:22:37 -0800
diff --git a/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/fill-values
new file mode 100644
index 0000000..5705b4d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-reuses-existing-version
+Description: Check changelog for re-used version numbers
diff --git a/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/desc
new file mode 100644
index 0000000..a253dba
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-reuses-existing-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/hints
new file mode 100644
index 0000000..5016c57
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-reuses-existing-version/eval/hints
@@ -0,0 +1 @@
+changelog-file-reuses-existing-version (source): latest-debian-changelog-entry-reuses-existing-version 3:1.0 ~ 2:1.0 (last used: Fri, 06 Feb 2008 22:22:37 -0800) [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/debian/changelog.in
new file mode 100644
index 0000000..83189f2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) stable-proposed-updates; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/fill-values
new file mode 100644
index 0000000..e460a9c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-stable/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-file-stable
+Skeleton: upload-non-native
+Version: 1.0-1etch1
+Description: Test a stable-proposed-updates package
diff --git a/t/recipes/checks/debian/changelog/changelog-file-stable/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-stable/eval/desc
new file mode 100644
index 0000000..529ce5a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-stable/eval/desc
@@ -0,0 +1,5 @@
+Testname: changelog-file-stable
+Test-Against:
+ malformed-debian-changelog-version
+ version-refers-to-distribution
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-stable/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-stable/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-stable/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b527316
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0) unstable; urgency=low
+
+ * The date will fail with some dpkg version see #794674
+
+ -- [% $author %] The, 15 Apr 2004 23:33:51 +0200
diff --git a/t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/fill-values
new file mode 100644
index 0000000..dcc2e78
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-strange-date/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: changelog-file-strange-date
+Version: 2.0
+Description: Test some strange date in changelog
+Extra-Build-Depends: dpkg (<< 1.18.2)
diff --git a/t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/desc
new file mode 100644
index 0000000..c866224
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-strange-date
+See-Also: Debian Bug#794674
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/hints
new file mode 100644
index 0000000..d8424c8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-strange-date/eval/hints
@@ -0,0 +1 @@
+changelog-file-strange-date (binary): syntax-error-in-debian-changelog line 12 "couldn't parse date The, 15 Apr 2004 23:33:51 +0200"
diff --git a/t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/debian/rules
new file mode 100755
index 0000000..fa478f6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+
+override_dh_md5sums:
+ DIR=$$(find debian/*/ -type f -a -name 'changelog.gz' \
+ -exec dirname {} \; ) ; \
+ rm -f $$DIR/changelog.gz ; \
+ ln -s ../lintian/changelog.gz $$DIR/changelog.gz
+ dh_md5sums
diff --git a/t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/fill-values
new file mode 100644
index 0000000..3d57c66
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-symlink
+Description: Test if Debian changelog is a symlink
diff --git a/t/recipes/checks/debian/changelog/changelog-file-symlink/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-symlink/eval/desc
new file mode 100644
index 0000000..7278012
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-symlink
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-symlink/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-symlink/eval/hints
new file mode 100644
index 0000000..90d61c4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-symlink/eval/hints
@@ -0,0 +1 @@
+changelog-file-symlink (binary): debian-changelog-file-is-a-symlink [usr/share/doc/changelog-file-symlink/changelog.gz]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/doc/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/doc/changelog.in
new file mode 100644
index 0000000..643d367
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/doc/changelog.in
@@ -0,0 +1,22 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] ([% $prev-version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] Sat, 09 Apr 2016 10:56:49 +0000
+
+[% $source %] () unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] Sat, 02 Apr 2016 10:56:49 +0000
diff --git a/t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/fill-values
new file mode 100644
index 0000000..4f393a2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-syntax/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: changelog-file-syntax
+Description: Test for syntax errors in changelogs
diff --git a/t/recipes/checks/debian/changelog/changelog-file-syntax/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-syntax/eval/desc
new file mode 100644
index 0000000..0e3a67e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-syntax/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-syntax
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-syntax/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-syntax/eval/hints
new file mode 100644
index 0000000..16a73ee
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-syntax/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-syntax (binary): syntax-error-in-debian-changelog "found change data where expected next heading or eof" [usr/share/doc/changelog-file-syntax/changelog.gz:17]
+changelog-file-syntax (binary): syntax-error-in-debian-changelog "badly formatted heading line" [usr/share/doc/changelog-file-syntax/changelog.gz:15]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/fill-values
new file mode 100644
index 0000000..78b1b3f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changelog-file-unreleased-signed-changes
+Distribution: UNRELEASED
+Description: Warn about UNRELEASED distribution in changelog if changes is signed
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/post-build.in b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/post-build.in
new file mode 100755
index 0000000..95e78e4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/post-build.in
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+# create a temporary directory
+TEMPDIR=`mktemp -d`
+
+# import public key
+gpg --homedir "$TEMPDIR" --import "[% $source_path %]/public.key"
+
+# import private key
+gpg --homedir "$TEMPDIR" --allow-secret-key-import --import "[% $source_path %]/private.key"
+
+# sign changes file
+gpg --homedir "$TEMPDIR" --clearsign "[% $build_product %]"
+
+# save unsigned changes file elsewhere
+mv "[% $build_product %]" "[% $build_product %].unsigned"
+
+# move signed changes file to expected location
+mv "[% $build_product %].asc" "[% $build_product %]"
+
+# remove the temporary directory
+rm -rf "$TEMPDIR"
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/private.key b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/private.key
new file mode 100644
index 0000000..dc65e47
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/private.key
@@ -0,0 +1,81 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+lQVYBF1S0+wBDACpWPf3IGIsQ1LAGGYsGZP3jj52oB2SBXde/Uk45bo8il2snTse
+VUUZcxgHUW+/NZescGYyGIUnfAiWPn+kzObMddg5GXWHG2grt1F2LHdIMdLaHBQi
+zIu74JZJ7khnd0OhGdsZVtPQ+ilkh0T/IdcigEcZPG1+0anMsgv+6xZl9+oK6ZBn
+4VZE6DC7+0F5fFtx8osSQrjuorYZ9dHrsfeyAHZxTVOV7ge8RBp3sMKz9mBlNUfw
+ZcyKk8+7M4KMcL7GfZAK8OmfF6cFdRdk3fuEP/6q8UHWNVBAvv4JAr6KG3ZnpJZX
+9jvqOjYkyMpCtNSS3Dkiv8dcOpm+pvR2HsqyyLt4cnozb3Rdz4nLTI2A2wgnHFs2
+rm20Ww4gGblbsh4Ps5Kt8exN1T9cKh/B7TntT2SJKkGp1occAtAAIamv9fSuO81q
+ywuW2x0swNeK+JJADIq0iZh9vvXsnupk60j5m/J9R1emjWWlImAmJ6c8KJkO/iab
+MLZC2Suu7L/rWgUAEQEAAQAL/iC8Qn6iY2fUAcCBVurKbPhrJjbvH5g090zE4G0f
+tz7xrkbqQ93KtOdFAM2VV+kZ1n5uYcroQ4EM8Gn+ndUBCNJYK1pqSfY6fYoJzzTt
+RoeNngksaVYKvS4trU+QQK3Dd67CHUDKMHrSiMLWhSdeZsRUEKpXrIDZzZ10g24d
+CoDeif7fBFuYSwFZ8uW7nX365IBj1q9Kd44lpNbi1lfd2Jgvj7W6MWCnmRYzAfzG
+DfUUuLCHuqbFPuNAzGSPAfrc5itbAyOP2fXdTC+WPbdqFPAU7tjtCl/1FfpzwZsE
++mWG3G+Zspkh7Oz58faOc3Tr86GK/dRNRh36eGJOeUfydQnOLvorPO3S0AC0nHCF
+q+NXyf6xOKOKiNe7Acc6ezGOyn2DgTBXhZDE79r4rOvDDNKyW+J8vM3JpGv4a4jy
+byc3aMd7AU1ai6vfWtbSyB6FtVQ8uPbUBXk3Eo6fvZ8ge7HfIaCAcxCchSCJJevL
+pMYrVOez12uatz/3fTOq4CS7RwYAy7c614xUNTlDzX95UnGelaT4cquGp8hlk9vQ
+pM01QtaAGJPk+JNg+0J9e4qWoSEN+4+2ncfgY3Wahjn+jfkk9cAROmxQMt2JvXvI
+hpcrcvIuMJSAlyp4+HNd4JUzgFP5LCkxs79QbDNVkCZjGDC3zv9UVdVv82IgFCfe
+UwgKhNZZlsQsQatdXs/YiK682JpYnbQLmg5/E5g1rTybbgsiYaYZ3E6Tv4d+FEXN
+PvsVbAxZIk3IeFhGUs2EVX8DJrjzBgDUz6N2moRsuQ2SLYFsr0NlfU95qAZk4r+f
+TZwNhE6ixjiHqfvUuJrgmkhY46GFzcKpJlmxsiCElYrMf+xzhjCE15XLkFoN/jkA
+R9mI97IyiEMqBn+aTvlYmQpRmSV0rEvIRT6Y4jwsG4e7NhtJUP30qUSh2rV42lh4
+BU8mLK+Da1gQtlP4b8XadksdJGIasXvDv3Cna0fd/ZKN4nCc2T5Mz9DGhBM55Il3
+0Z9IBIlzZU8MnKmu7pFJYOVkw3jRXycF/R+TU2BintbbqFszVYw0TMr5+UupyhXh
+2JMBHEjhGrZ40YZpDpUA+9KrfJ6RUfCw0pg4XmA7OI0cpisRuZb1cXWZpdEchdYQ
+N3u/ofUHwCbd6pv86Udmf3Lteeu1zVFBHACnIdsMEVUvMlaO8j5t3nTLYXudaeLe
+WZciXu/3pIU46oWKEbm+XzSl9SiyRRtc4VuB+mMNC5XkkqmaYioVtJ/rv1D6Pq8z
+dvEO35poUStLLdphX/2Wq7i7C0FuKGkYyvEdtCJEdW1teSBrZXkgdG8gc2lnbiB0
+ZXN0IHN1aXRlIGZpbGVziQHOBBMBCgA4FiEE7gdcRYTGSROvlMCvozS9hpbIwjwF
+Al1S0+wCGwMFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AACgkQozS9hpbIwjzxBwv/
+eQXVIgFfCXXxtKuVuae7dLQhu8CBHJZ5PvXLeCjRj8LcERuiEwJz7JRrSP4i7PLn
+zA+vv8WSbYUaJ2Lwg/Gj366U7tlrGVRZUEmHzYj9Bc+qxd3Lf/lZmVP3LavgL89w
+OMzObJZOKNbUs9bAmLEf7lJnObMEpSAiPji7vPHc+wvM5TegtwjjQNLu7o3rGuut
+ARtAA3BxPTBhjKt0Jb30/TrsNE9ecMoC4xcIyy0HY1FPWwwOHFbvJxevyKv84Nng
+RyHErB+8RGqUObhtxNrUkJ7xt+jQvAy2xX8bt2w6nOzG4cST2flEcH+Vbqy1bPD0
+b7hTZFL+dDRq43QzGqgqyNDWmvwM5tFBxbWc4cJKbzynhVDPPC6IqFXPml6EF0PA
+y+o3zMMdacYODBezWix33JBH9vDH/9dSG4JE1ORLGZpVpKqOQ0YxFPoLrOpYXUxE
+2jSDySTrvsCOOpUYl4D7zgVrP9/EkJ2AK5wlVtpv8D5rHrP6/RK2TlfXJt8S6ilt
+nQVYBF1S0+wBDAC25JP4vcHnGINaqyw5sdOAr6+0uCNgqIqdmPgG9ZO0nNJVfZOX
+s6Wp1TYgQr1qmWE5wsVt9HoClQGlP+6TdYv7cnylksI5rrxwi1eWr2JPYS7dP0HK
+nVVXtuqMdak6eNUFHRfjdc896qL5uuHu3VHEpc/3wfqUms6uhsP60xS3AiuwYd6/
+K/nqtA4sz5dh7gLpxT2EpurGohg+q/cf5YegKzjB2J2JYtFKcyHFhX2QiNIrQpVT
+LKQDSDkNykr/wqMpCxJ3cskxKkY7zyColfRa9Vdp4/JNpNkL1IrX2ph+tlQisdJ+
+gcDSvuYz60COJuyFikNVz5+84mfpMCVqYVOt9MGLGSbcQA8IgPOMU4Nv9E63ob/l
+pLEZQMFwqrmo1zfdhj/LW/p7uNEJ7V2Z08FnBqn72g4RmYE+QQohLfqAOecwrcyi
+TcvEeJGDRwX+kZVyTQcrWhm8rchFxJluat7lYsOWFvgS1j8wvRC8QDWQEaODWNUF
+iPVP/bybAeHjXl0AEQEAAQAL/iutqEch7mKGAKzRL3Ux6lyT2KcUyOInLj+YDjf/
+Q0DBqRvgqzRyI3DNailHNxxzt/wG74akedUPB/8SpyQRURaCj5EtXPRQrlFEfe0P
+Qq/Jels9ZbWBYKXbmeVknj9IJzua6J8afh1/4V85ygZ1VbdckC/P5EvEMvMMXVaU
+PaC9RHjRztQiKQPr72y1QSaSpKB2ygvZnz1D7f1drV2xP/Q5DkuBM5JhhrE8kMau
+7D9t5Z+OPcJI6XydLX8FHmc5cL2ZVrGgFBor6Bs4JvCKtXTkPKMTPFDg+cfNPsoi
+Q0kunBwGCLOxFRtvCYxuVdOKRD/usnRk7+AlRui5criGTbJSYl67BkpZay28Dqk0
+vakZhXEPv2xrr/GG3ViJXb/DWb72UC9/ii5gOPivLJnC9Fia2g1q1mj6nTlW+ao/
+9qfRWYsqX8lAjL8INjmqOzGN1Uxo0z0kriRKjmFvswZbMYHTk1Ifo4Q80dRUiE+e
+Ed7snM+Mg4Klar30jm07KF0hIQYA1P08CsWF+3lNHa4tF+rXoBhMa092QLQ1ClCC
+2yqu8t1/pFeCjoJ+81THYBc4oK0XYiLenUYTEEsKCtA/FQoBPjYUY9Ghi5JdSEHi
+yPSA1G7i5Lk2Cewzrjikoqq/eiVguiy8ZLxQOM+89vruBQyk8jP2hCaEspcfi5bS
+FHlZzK6WZ/ytF+VzTFXZLBddq+GHzYh5wttspro0W5WLIuGLjBi8+zHl74hWDdi/
+9elSmW2+BuTx0bZb6J6YaC7L7EdNBgDb03lChbOB+gxgCDOpgMH5wAbHEacS5aeh
+6bmJRsq7Y174voxDjGP92eY+VXyO2GIkcYDihHVTA4NsL4sZPVg7lVliCnyuXR1h
+fZ0QF36fjuYidkxnshribWaW4k9+mgBAqtN1rQqkWr2VaQv7E70Mn0yGamLUoowH
+Vog1PhIo/YA5m9HpamX4VBhtbFdvxuGAlfFahyTc9HEd8R+djSOKA1suFeAp0zJe
+dq91bUt645eP8ayipUtSM6br1kYSi1EF+QE1lHQZ/7kyWJGRAdIb4hwTM+UWJ+3Y
+dxuhyyHeoli7j/Z2313+/LxG5QGHVg6Fyc2wk3kQeQO26LTUUMSngLdHvCgzWYds
+ohPXyE3TJPL5LT0QOqdZyojk7JHYNZB97uUbZQEMRRWZVlec4pyjhKOyAbcQtkjx
+H5ZIhGbwzRdX6eSc2S6dX0D46nij1CLbdasfZVKCt0QtOCmcCp4wzOid0v/R1uxH
+fPdA9V4NSdEjIjPtLVXfips9Yxv2ttYpltpoiQG2BBgBCgAgFiEE7gdcRYTGSROv
+lMCvozS9hpbIwjwFAl1S0+wCGwwACgkQozS9hpbIwjwKxwv9EQ1CO3xsQP+NKI4i
+yEAMCp0zr+3AByiqZONLH7Ggh5ZqlJnwZQaYSFRjvDQQxlegN7MAx14hm1IIzgSO
+bk9e3oCc+yktwLD+I+VOOjSjPFJH5LPPyI0p4oFn4q59dgvMXfsAz0F+GgqVy04t
+XrDrjRSs6b4erbYFuveJPY+JbZLPG068P3L5sFMHCiY623OzaJXSKuGYHlaOvEBO
+97G0NfW7lP8/hWM0tAvgwgISxk6jojA0B3eJTKYwT2hLwmT8bblCmBAyNKyoz+TX
+uAcQYXuVY1hScFzpra4BgJ2o0xCjHg+RkAtc6a1B2zmhrXiE1OMbzKnYUsnMUM0K
+Mgin9Jk6akhCeheEfMoi0OUZNa3BC/D7puDQjupQ+M2xXSb4JGmOJDSumUcg6GnQ
+26JFqamo1H0rXMgFeUd1e9wKsd5FKrt4dZXLGYS5r0hnlgSTJZPmA5y7p89ZKxwC
+J/BnNG5qryGpb0uglf9styQZnIPzZXziiU5W/GOtxONWwXs7
+=mtBa
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/public.key b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/public.key
new file mode 100644
index 0000000..b201834
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/build-spec/public.key
@@ -0,0 +1,41 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBF1S0+wBDACpWPf3IGIsQ1LAGGYsGZP3jj52oB2SBXde/Uk45bo8il2snTse
+VUUZcxgHUW+/NZescGYyGIUnfAiWPn+kzObMddg5GXWHG2grt1F2LHdIMdLaHBQi
+zIu74JZJ7khnd0OhGdsZVtPQ+ilkh0T/IdcigEcZPG1+0anMsgv+6xZl9+oK6ZBn
+4VZE6DC7+0F5fFtx8osSQrjuorYZ9dHrsfeyAHZxTVOV7ge8RBp3sMKz9mBlNUfw
+ZcyKk8+7M4KMcL7GfZAK8OmfF6cFdRdk3fuEP/6q8UHWNVBAvv4JAr6KG3ZnpJZX
+9jvqOjYkyMpCtNSS3Dkiv8dcOpm+pvR2HsqyyLt4cnozb3Rdz4nLTI2A2wgnHFs2
+rm20Ww4gGblbsh4Ps5Kt8exN1T9cKh/B7TntT2SJKkGp1occAtAAIamv9fSuO81q
+ywuW2x0swNeK+JJADIq0iZh9vvXsnupk60j5m/J9R1emjWWlImAmJ6c8KJkO/iab
+MLZC2Suu7L/rWgUAEQEAAbQiRHVtbXkga2V5IHRvIHNpZ24gdGVzdCBzdWl0ZSBm
+aWxlc4kBzgQTAQoAOBYhBO4HXEWExkkTr5TAr6M0vYaWyMI8BQJdUtPsAhsDBQsJ
+CAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEKM0vYaWyMI88QcL/3kF1SIBXwl18bSr
+lbmnu3S0IbvAgRyWeT71y3go0Y/C3BEbohMCc+yUa0j+Iuzy58wPr7/Fkm2FGidi
+8IPxo9+ulO7ZaxlUWVBJh82I/QXPqsXdy3/5WZlT9y2r4C/PcDjMzmyWTijW1LPW
+wJixH+5SZzmzBKUgIj44u7zx3PsLzOU3oLcI40DS7u6N6xrrrQEbQANwcT0wYYyr
+dCW99P067DRPXnDKAuMXCMstB2NRT1sMDhxW7ycXr8ir/ODZ4EchxKwfvERqlDm4
+bcTa1JCe8bfo0LwMtsV/G7dsOpzsxuHEk9n5RHB/lW6stWzw9G+4U2RS/nQ0auN0
+MxqoKsjQ1pr8DObRQcW1nOHCSm88p4VQzzwuiKhVz5pehBdDwMvqN8zDHWnGDgwX
+s1osd9yQR/bwx//XUhuCRNTkSxmaVaSqjkNGMRT6C6zqWF1MRNo0g8kk677AjjqV
+GJeA+84Faz/fxJCdgCucJVbab/A+ax6z+v0Stk5X1ybfEuopbbkBjQRdUtPsAQwA
+tuST+L3B5xiDWqssObHTgK+vtLgjYKiKnZj4BvWTtJzSVX2Tl7OlqdU2IEK9aplh
+OcLFbfR6ApUBpT/uk3WL+3J8pZLCOa68cItXlq9iT2Eu3T9Byp1VV7bqjHWpOnjV
+BR0X43XPPeqi+brh7t1RxKXP98H6lJrOrobD+tMUtwIrsGHevyv56rQOLM+XYe4C
+6cU9hKbqxqIYPqv3H+WHoCs4wdidiWLRSnMhxYV9kIjSK0KVUyykA0g5DcpK/8Kj
+KQsSd3LJMSpGO88gqJX0WvVXaePyTaTZC9SK19qYfrZUIrHSfoHA0r7mM+tAjibs
+hYpDVc+fvOJn6TAlamFTrfTBixkm3EAPCIDzjFODb/ROt6G/5aSxGUDBcKq5qNc3
+3YY/y1v6e7jRCe1dmdPBZwap+9oOEZmBPkEKIS36gDnnMK3Mok3LxHiRg0cF/pGV
+ck0HK1oZvK3IRcSZbmre5WLDlhb4EtY/ML0QvEA1kBGjg1jVBYj1T/28mwHh415d
+ABEBAAGJAbYEGAEKACAWIQTuB1xFhMZJE6+UwK+jNL2GlsjCPAUCXVLT7AIbDAAK
+CRCjNL2GlsjCPArHC/0RDUI7fGxA/40ojiLIQAwKnTOv7cAHKKpk40sfsaCHlmqU
+mfBlBphIVGO8NBDGV6A3swDHXiGbUgjOBI5uT17egJz7KS3AsP4j5U46NKM8Ukfk
+s8/IjSnigWfirn12C8xd+wDPQX4aCpXLTi1esOuNFKzpvh6ttgW694k9j4ltks8b
+Trw/cvmwUwcKJjrbc7NoldIq4ZgeVo68QE73sbQ19buU/z+FYzS0C+DCAhLGTqOi
+MDQHd4lMpjBPaEvCZPxtuUKYEDI0rKjP5Ne4BxBhe5VjWFJwXOmtrgGAnajTEKMe
+D5GQC1zprUHbOaGteITU4xvMqdhSycxQzQoyCKf0mTpqSEJ6F4R8yiLQ5Rk1rcEL
+8Pum4NCO6lD4zbFdJvgkaY4kNK6ZRyDoadDbokWpqajUfStcyAV5R3V73Aqx3kUq
+u3h1lcsZhLmvSGeWBJMlk+YDnLunz1krHAIn8Gc0bmqvIalvS6CV/2y3JBmcg/Nl
+fOKJTlb8Y63E41bBezs=
+=iNsY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/desc
new file mode 100644
index 0000000..00bd85b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-unreleased-signed-changes
+See-Also: #873520
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/hints
new file mode 100644
index 0000000..a4d8b63
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased-signed-changes/eval/hints
@@ -0,0 +1 @@
+changelog-file-unreleased-signed-changes (source): unreleased-changelog-distribution [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/debian/changelog.in
new file mode 100644
index 0000000..adaaa2d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0) unstable; urgency=low
+
+ * An older changelog entry to test suppression of errors about the
+ changelog entry having the same date as the previous one.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/fill-values
new file mode 100644
index 0000000..25da1fa
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: changelog-file-unreleased
+Version: 2.0
+Distribution: UNRELEASED
+Description: Suppress new date warnings for UNRELEASED
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/desc
new file mode 100644
index 0000000..46a21c6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/desc
@@ -0,0 +1,6 @@
+Testname: changelog-file-unreleased
+Test-Against:
+ latest-debian-changelog-entry-without-new-date
+ unreleased-changelog-distribution
+See-Also: Debian Bug#560149
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-unreleased/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/debian/rules
new file mode 100644
index 0000000..12f2c85
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+PKG:=$(shell dh_listpackages)
+DOC:=debian/$(PKG)/usr/share/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_installchangelogs:
+ dh_installchangelogs
+ cp some-changelog.html $(DOC)/changelog.html
diff --git a/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/fill-values
new file mode 100644
index 0000000..684e84e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-upstream-html-only
+Skeleton: upload-non-native
+Description: Check HTML-only upstream changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/orig/some-changelog.html b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/orig/some-changelog.html
new file mode 100644
index 0000000..2a4614a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/build-spec/orig/some-changelog.html
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <titl>Hallo World</title>
+</head>
+<body>
+ <p>A wonderful changelog written in HTML</p>
+</body>
+</html>
diff --git a/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/desc
new file mode 100644
index 0000000..5604fd1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-upstream-html-only
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/hints
new file mode 100644
index 0000000..696aa50
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-upstream-html-only/eval/hints
@@ -0,0 +1 @@
+changelog-file-upstream-html-only (binary): html-changelog-without-text-version [usr/share/doc/changelog-file-upstream-html-only/changelog.html.gz]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/debian/rules b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/debian/rules
new file mode 100644
index 0000000..45fbec8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+PKG:=$(shell dh_listpackages)
+DOC:=debian/$(PKG)/usr/share/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_installchangelogs:
+ dh_installchangelogs
+ cp some-changelog $(DOC)/Changes
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/fill-values
new file mode 100644
index 0000000..2e767c6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: changelog-file-wrong-name-upstream
+Skeleton: upload-non-native
+Description: Check a wrong name for an upstream changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/orig/some-changelog b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/orig/some-changelog
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/build-spec/orig/some-changelog
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/desc
new file mode 100644
index 0000000..5ae1b34
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-wrong-name-upstream
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/hints
new file mode 100644
index 0000000..44bf518
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-name-upstream/eval/hints
@@ -0,0 +1 @@
+changelog-file-wrong-name-upstream (binary): wrong-name-for-upstream-changelog [usr/share/doc/changelog-file-wrong-name-upstream/Changes]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8fcb315
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ * A bit of wishful thinking that the date below was a Friday.
+
+ -- [% $author %] Fri, 07 Apr 2016 17:00:00 +0000
+
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/control.in b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/control.in
new file mode 100644
index 0000000..0818186
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: 3.9.8
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/fill-values
new file mode 100644
index 0000000..0d2c5b7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-file-wrong-weekday
+Description: Test for wrong weekday in changelog date
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/desc b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/desc
new file mode 100644
index 0000000..3411212
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-file-wrong-weekday
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/hints b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/hints
new file mode 100644
index 0000000..22e8a79
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/hints
@@ -0,0 +1 @@
+changelog-file-wrong-weekday (binary): debian-changelog-has-wrong-day-of-week 2016-04-07 was a Thursday [usr/share/doc/changelog-file-wrong-weekday/changelog.gz:1]
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date
new file mode 100644
index 0000000..42f8743
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-file-wrong-weekday/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date
@@ -0,0 +1,7 @@
+# Any Standards Version released before this day is "ancient"
+#
+# Frozen for this test so we do not have to update the test every time
+# we update the real "ancient-date" data file.
+#
+# Format is ANCIENT < Date
+ANCIENT < 20 Feb 2014
diff --git a/t/recipes/checks/debian/changelog/changelog-version-bzr/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-version-bzr/build-spec/fill-values
new file mode 100644
index 0000000..6f39521
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-bzr/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-version-bzr
+Version: 0.7+bzr49+repack1-1
+Description: Test for +bzr in version (vs binNMU)
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/changelog-version-bzr/eval/desc b/t/recipes/checks/debian/changelog/changelog-version-bzr/eval/desc
new file mode 100644
index 0000000..24eb5bf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-bzr/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-version-bzr
+Check: debian/changelog
+Test-Against:
+ malformed-debian-changelog-version
diff --git a/t/recipes/checks/debian/changelog/changelog-version-bzr/eval/hints b/t/recipes/checks/debian/changelog/changelog-version-bzr/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-bzr/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/build-spec/fill-values
new file mode 100644
index 0000000..ba9c466
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-version-non-native-simple
+Version: 1-2
+Description: Test for normal versions
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/desc b/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/desc
new file mode 100644
index 0000000..9d8d284
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-version-non-native-simple
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/hints b/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-non-native-simple/eval/hints
diff --git a/t/recipes/checks/debian/changelog/changelog-version-special-chars/build-spec/fill-values b/t/recipes/checks/debian/changelog/changelog-version-special-chars/build-spec/fill-values
new file mode 100644
index 0000000..913887b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-special-chars/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-version-special-chars
+Version: 2:1.5+important~personal1-stable-7
+Description: Test for weird versions
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/desc b/t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/desc
new file mode 100644
index 0000000..a38571b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/desc
@@ -0,0 +1,4 @@
+Testname: changelog-version-special-chars
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/hints b/t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/hints
new file mode 100644
index 0000000..fddb586
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/changelog-version-special-chars/eval/hints
@@ -0,0 +1,3 @@
+changelog-version-special-chars (source): hyphen-in-upstream-part-of-debian-changelog-version 1.5+important~personal1-stable [debian/changelog:1]
+changelog-version-special-chars (source): epoch-changed-but-upstream-version-did-not-go-backwards 0.0.1-1 -> 2:1.5+important~personal1-stable-7 [debian/changelog:1]
+changelog-version-special-chars (source): epoch-change-without-comment 0.0.1-1 -> 2:1.5+important~personal1-stable-7 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/cruft-native-dash-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/cruft-native-dash-version/build-spec/fill-values
new file mode 100644
index 0000000..4bc587e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/cruft-native-dash-version/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: cruft-native-dash-version
+Source-Format: 1.0
+Version: 1.0-1
+Description: Test for native packages with dash version
diff --git a/t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/desc b/t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/desc
new file mode 100644
index 0000000..8f1baa5
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-native-dash-version
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/hints b/t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/hints
new file mode 100644
index 0000000..0a358d5
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/cruft-native-dash-version/eval/hints
@@ -0,0 +1 @@
+cruft-native-dash-version (source): malformed-debian-changelog-version 1.0-1 (for native) [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/date-based-version/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/date-based-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..d6095db
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/date-based-version/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/changelog/date-based-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/date-based-version/build-spec/fill-values
new file mode 100644
index 0000000..a4fa0ac
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/date-based-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: date-based-version
+Version: 20180219-1
+Description: Date-based version number
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/date-based-version/eval/desc b/t/recipes/checks/debian/changelog/date-based-version/eval/desc
new file mode 100644
index 0000000..f80c48a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/date-based-version/eval/desc
@@ -0,0 +1,4 @@
+Testname: date-based-version
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/date-based-version/eval/hints b/t/recipes/checks/debian/changelog/date-based-version/eval/hints
new file mode 100644
index 0000000..a39ae26
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/date-based-version/eval/hints
@@ -0,0 +1 @@
+date-based-version (binary): new-package-uses-date-based-version-number 20180219-1 (better: 0~20180219-1) [usr/share/doc/date-based-version/changelog.Debian.gz:1]
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad-rc/build-spec/fill-values b/t/recipes/checks/debian/changelog/fields-version-bad-rc/build-spec/fill-values
new file mode 100644
index 0000000..fae232a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad-rc/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-bad-rc
+Version: 1.0+rc3-1
+Description: Test for bad release candidate versions
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/desc b/t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/desc
new file mode 100644
index 0000000..bbb03dd
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-version-bad-rc
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/hints b/t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/hints
new file mode 100644
index 0000000..7a6da94
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad-rc/eval/hints
@@ -0,0 +1 @@
+fields-version-bad-rc (source): rc-version-greater-than-expected-version 1.0+rc3 > 1.0 (consider using 1.0~rc3) [debian/changelog:1]
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2895dec
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/rules b/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/rules
new file mode 100644
index 0000000..ce09a53
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_gencontrol:
+ dh_gencontrol -- -v1.0-0
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/fill-values b/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/fill-values
new file mode 100644
index 0000000..fddcd45
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-bad
+Version: 0-.3
+Description: Test for weird versions
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad/eval/desc b/t/recipes/checks/debian/changelog/fields-version-bad/eval/desc
new file mode 100644
index 0000000..eaa3215
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-version-bad
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/fields-version-bad/eval/hints b/t/recipes/checks/debian/changelog/fields-version-bad/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-bad/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/fields-version-dfsg-native/build-spec/fill-values b/t/recipes/checks/debian/changelog/fields-version-dfsg-native/build-spec/fill-values
new file mode 100644
index 0000000..1246466
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dfsg-native/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-version-dfsg-native
+Version: 1.0.dfsg1
+Description: Use of dfsg in a native package
diff --git a/t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/desc b/t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/desc
new file mode 100644
index 0000000..50df649
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-version-dfsg-native
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/hints b/t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dfsg-native/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/build-spec/fill-values b/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/build-spec/fill-values
new file mode 100644
index 0000000..412adaa
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-dot-dfsg
+Skeleton: upload-non-native
+Version: 1.0.dfsg1-1
+Description: Use of ".dfsg"
diff --git a/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/desc b/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/desc
new file mode 100644
index 0000000..0819a9e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-version-dot-dfsg
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/hints b/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dot-dfsg/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/fields-version-dsfg/build-spec/fill-values b/t/recipes/checks/debian/changelog/fields-version-dsfg/build-spec/fill-values
new file mode 100644
index 0000000..077bc94
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dsfg/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-dsfg
+Skeleton: upload-non-native
+Version: 1.0+dsfg1-1
+Description: Check for the dsfg typo
diff --git a/t/recipes/checks/debian/changelog/fields-version-dsfg/eval/desc b/t/recipes/checks/debian/changelog/fields-version-dsfg/eval/desc
new file mode 100644
index 0000000..da32956
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dsfg/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-version-dsfg
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/fields-version-dsfg/eval/hints b/t/recipes/checks/debian/changelog/fields-version-dsfg/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/fields-version-dsfg/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/desc b/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..ebf79a7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: debian/changelog
+See-Also:
+ Bug#497347
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/hints b/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..0d2065a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/hints
@@ -0,0 +1,3 @@
+generic-dh-make-2008 (binary): wrong-bug-number-in-closes #nnnn [usr/share/doc/generic-dh-make-2008/changelog.Debian.gz:3]
+generic-dh-make-2008 (binary): initial-upload-closes-no-bugs [usr/share/doc/generic-dh-make-2008/changelog.Debian.gz:1]
+generic-dh-make-2008 (binary): changelog-is-dh_make-template [usr/share/doc/generic-dh-make-2008/changelog.Debian.gz:1]
diff --git a/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/post-test b/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..945632a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/eval/desc b/t/recipes/checks/debian/changelog/legacy-binary/eval/desc
new file mode 100644
index 0000000..dcf46fa
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/eval/hints b/t/recipes/checks/debian/changelog/legacy-binary/eval/hints
new file mode 100644
index 0000000..c634eb0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/eval/hints
@@ -0,0 +1,9 @@
+binary (binary): syntax-error-in-debian-news-file "found eof where expected more change data or trailer" [usr/share/doc/binary/NEWS.Debian.gz:13]
+binary (binary): syntax-error-in-debian-news-file "badly formatted trailer line" [usr/share/doc/binary/NEWS.Debian.gz:12]
+binary (binary): spelling-error-in-news-debian usefull useful [usr/share/doc/binary/NEWS.Debian.gz]
+binary (binary): spelling-error-in-news-debian speling spelling [usr/share/doc/binary/NEWS.Debian.gz]
+binary (binary): debian-news-entry-has-strange-distribution UNRELEASED [usr/share/doc/binary/NEWS.Debian.gz:1]
+binary (binary): debian-changelog-file-missing-or-wrong-name
+binary (binary): changelog-news-debian-mismatch Urgency low != high [usr/share/doc/binary/NEWS.Debian.gz:1]
+binary (binary): changelog-news-debian-mismatch Distribution unstable != UNRELEASED [usr/share/doc/binary/NEWS.Debian.gz:1]
+binary (binary): changelog-file-not-compressed [usr/share/doc/binary/changelog]
diff --git a/t/recipes/checks/debian/changelog/legacy-binary/eval/post-test b/t/recipes/checks/debian/changelog/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/desc b/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..9e1392d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/hints b/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..49072d6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (binary): changelog-file-not-compressed [usr/share/doc/etcfiles/changelog]
diff --git a/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/post-test b/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/eval/desc b/t/recipes/checks/debian/changelog/legacy-fields/eval/desc
new file mode 100644
index 0000000..cdb6b18
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/eval/hints b/t/recipes/checks/debian/changelog/legacy-fields/eval/hints
new file mode 100644
index 0000000..33e2889
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/eval/hints
@@ -0,0 +1,2 @@
+fields (binary): debian-changelog-file-missing-or-wrong-name
+another-version (binary): no-changelog usr/share/doc/another-version/changelog.Debian.gz (non-native package)
diff --git a/t/recipes/checks/debian/changelog/legacy-fields/eval/post-test b/t/recipes/checks/debian/changelog/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/eval/desc b/t/recipes/checks/debian/changelog/legacy-filenames/eval/desc
new file mode 100644
index 0000000..b528ba4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/eval/desc
@@ -0,0 +1,3 @@
+Testname: legacy-filenames
+Test-Against: epoch-change-without-comment
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/eval/hints b/t/recipes/checks/debian/changelog/legacy-filenames/eval/hints
new file mode 100644
index 0000000..7ff07b2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/eval/hints
@@ -0,0 +1,4 @@
+filenames (source): odd-historical-debian-changelog-version 11 (for non-native) [debian/changelog:7]
+filenames (binary): wrong-name-for-debian-news-file [usr/share/doc/filenames/news.debian.gz]
+filenames (binary): debian-news-file-not-compressed [usr/share/doc/filenames/NEWS.Debian]
+filenames (binary): debian-changelog-file-is-a-symlink [usr/share/doc/filenames/changelog.gz]
diff --git a/t/recipes/checks/debian/changelog/legacy-filenames/eval/post-test b/t/recipes/checks/debian/changelog/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..3da7954
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..3e86b96
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses non-UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/eval/desc b/t/recipes/checks/debian/changelog/legacy-foo++/eval/desc
new file mode 100644
index 0000000..1907a84
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/eval/hints b/t/recipes/checks/debian/changelog/legacy-foo++/eval/hints
new file mode 100644
index 0000000..2775f3f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/eval/hints
@@ -0,0 +1,4 @@
+foo++ (source): latest-debian-changelog-entry-without-new-date [debian/changelog:1]
+foo++ (binary): latest-changelog-entry-without-new-date [usr/share/doc/foo++/changelog.gz:1]
+foo++ (binary): debian-changelog-has-wrong-day-of-week 2003-04-14 was a Monday [usr/share/doc/foo++/changelog.gz:1]
+foo++ (binary): bogus-mail-host-in-debian-changelog he@unknown (for version 5) [usr/share/doc/foo++/changelog.gz:1]
diff --git a/t/recipes/checks/debian/changelog/legacy-foo++/eval/post-test b/t/recipes/checks/debian/changelog/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/eval/desc b/t/recipes/checks/debian/changelog/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..4b301de
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/eval/hints b/t/recipes/checks/debian/changelog/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..186319e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/eval/hints
@@ -0,0 +1,9 @@
+libbaz2-dev (binary): initial-upload-closes-no-bugs [usr/share/doc/libbaz2-dev/changelog:1]
+libbaz2-dev (binary): debian-changelog-file-missing-or-wrong-name
+libbaz2-dev (binary): debian-changelog-file-is-a-symlink [usr/share/doc/libbaz2-dev/changelog]
+libbaz2-dev (binary): changelog-file-not-compressed [usr/share/doc/libbaz2-dev/changelog]
+libbaz2-dbg (binary): no-changelog usr/share/doc/libbaz2-dbg/changelog.Debian.gz (non-native package)
+libbaz2 (binary): debian-changelog-file-missing-or-wrong-name
+libbaz2 (binary): debian-changelog-file-is-a-symlink [usr/share/doc/libbaz2/changelog.gz]
+libbaz1 (binary): initial-upload-closes-no-bugs [usr/share/doc/libbaz1/changelog.gz:1]
+libbaz1 (binary): debian-changelog-file-missing-or-wrong-name
diff --git a/t/recipes/checks/debian/changelog/legacy-libbaz/eval/post-test b/t/recipes/checks/debian/changelog/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..d41ac19
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..1bae29f
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,2 @@
+maintainer-scripts (source): odd-historical-debian-changelog-version 6.1 (for non-native) [debian/changelog:8]
+maintainer-scripts (binary): bogus-mail-host-in-debian-changelog jeroen@mordor (for version 6.1) [usr/share/doc/maintainer-scripts/changelog.gz:8]
diff --git a/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/eval/desc b/t/recipes/checks/debian/changelog/legacy-relations/eval/desc
new file mode 100644
index 0000000..5093618
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/eval/hints b/t/recipes/checks/debian/changelog/legacy-relations/eval/hints
new file mode 100644
index 0000000..f3ccfcb
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/eval/hints
@@ -0,0 +1 @@
+relations (binary): no-changelog usr/share/doc/relations/changelog.gz (native package)
diff --git a/t/recipes/checks/debian/changelog/legacy-relations/eval/post-test b/t/recipes/checks/debian/changelog/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/build-spec/fill-values b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/build-spec/fill-values
new file mode 100644
index 0000000..806df46
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: missing-explicit-entry-fp-unrel
+Skeleton: upload-non-native
+Version: 1.13.7-0.1
+Prev-Version: 1.13.2-1
+Description: Test for false positive of missing changelog entry, with a source NMU on a new upstream version.
diff --git a/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/desc b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/desc
new file mode 100644
index 0000000..e6b2d13
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/desc
@@ -0,0 +1,5 @@
+Testname: missing-explicit-entry-fp-unrel
+Test-Against:
+ changelog-file-missing-explicit-entry
+Check: debian/changelog
+See-Also: Debian Bug #942411
diff --git a/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/hints b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp-unrel/eval/hints
diff --git a/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/build-spec/fill-values b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/build-spec/fill-values
new file mode 100644
index 0000000..ced3c4e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: missing-explicit-entry-fp
+Skeleton: upload-non-native
+Version: 1.2-0+deb9u1
+Prev-Version: 0.9-1
+Description: Test for missing (stable update, etc.) entries, false positive, exception on 0.
diff --git a/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/desc b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/desc
new file mode 100644
index 0000000..b0514b1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/desc
@@ -0,0 +1,4 @@
+Testname: missing-explicit-entry-fp
+Test-Against:
+ changelog-file-missing-explicit-entry
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/hints b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/missing-explicit-entry-fp/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8deb337
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Local package.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/fill-values b/t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/fill-values
new file mode 100644
index 0000000..2f60c73
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-changelog/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nmu-local-changelog
+Description: Test suppression of NMU tags for local packages
diff --git a/t/recipes/checks/debian/changelog/nmu-local-changelog/eval/desc b/t/recipes/checks/debian/changelog/nmu-local-changelog/eval/desc
new file mode 100644
index 0000000..4140200
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-changelog/eval/desc
@@ -0,0 +1,4 @@
+Testname: nmu-local-changelog
+Test-Against: malformed-debian-changelog-version
+See-Also: Debian Bug#501523
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/nmu-local-changelog/eval/hints b/t/recipes/checks/debian/changelog/nmu-local-changelog/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-changelog/eval/hints
diff --git a/t/recipes/checks/debian/changelog/nmu-local-version/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/nmu-local-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8eba4c0
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-version/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/debian/changelog/nmu-local-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/nmu-local-version/build-spec/fill-values
new file mode 100644
index 0000000..e04302d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: nmu-local-version
+Version: 1.0local1
+Description: Test suppression of NMU tags for local packages
diff --git a/t/recipes/checks/debian/changelog/nmu-local-version/eval/desc b/t/recipes/checks/debian/changelog/nmu-local-version/eval/desc
new file mode 100644
index 0000000..1cffe96
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-version/eval/desc
@@ -0,0 +1,4 @@
+Testname: nmu-local-version
+Test-Against: malformed-debian-changelog-version
+See-Also: Debian Bug#501523
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/nmu-local-version/eval/hints b/t/recipes/checks/debian/changelog/nmu-local-version/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-local-version/eval/hints
diff --git a/t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..4017019
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Thadeu Lima de Souza Cascardo <cascardo@debian.org> [% $date %]
diff --git a/t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/fill-values
new file mode 100644
index 0000000..409b82b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: nmu-new-upstream-version
+Version: 3.1-0.1
+Description: Test for new upstream NMU versions
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/desc b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/desc
new file mode 100644
index 0000000..7f8b8b3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/desc
@@ -0,0 +1,4 @@
+Testname: nmu-new-upstream-version
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/hints b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-new-upstream-version/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/debian/changelog.in
new file mode 100644
index 0000000..6745296
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Team upload.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/fill-values b/t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/fill-values
new file mode 100644
index 0000000..0da98e2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-team-upload/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: nmu-team-upload
+Version: 1.0+nmu1
+Description: Test for versioning of a team upload
diff --git a/t/recipes/checks/debian/changelog/nmu-team-upload/eval/desc b/t/recipes/checks/debian/changelog/nmu-team-upload/eval/desc
new file mode 100644
index 0000000..c867e9e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-team-upload/eval/desc
@@ -0,0 +1,3 @@
+Testname: nmu-team-upload
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/nmu-team-upload/eval/hints b/t/recipes/checks/debian/changelog/nmu-team-upload/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/nmu-team-upload/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/package-version-0/build-spec/fill-values b/t/recipes/checks/debian/changelog/package-version-0/build-spec/fill-values
new file mode 100644
index 0000000..d0d3daa
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/package-version-0/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: package-version-0
+Version: 0
+Description: Test a package with version 0
diff --git a/t/recipes/checks/debian/changelog/package-version-0/eval/desc b/t/recipes/checks/debian/changelog/package-version-0/eval/desc
new file mode 100644
index 0000000..98ff4b3
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/package-version-0/eval/desc
@@ -0,0 +1,4 @@
+Testname: package-version-0
+Test-Against:
+ malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/package-version-0/eval/hints b/t/recipes/checks/debian/changelog/package-version-0/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/package-version-0/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/fill-values b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/fill-values
new file mode 100644
index 0000000..373fa4c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: sid-and-unstable-match-in-changes
+Skeleton: upload-native
+Distribution: sid
+Description: Test if Debian changelog is missing
diff --git a/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/post-build.in b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/post-build.in
new file mode 100755
index 0000000..0048c4d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/build-spec/post-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e
+
+perl -pi -e 's/(Distribution:\s*)sid/$1unstable/' "[% $build_product %]"
diff --git a/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/desc b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/desc
new file mode 100644
index 0000000..7f785c9
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/desc
@@ -0,0 +1,4 @@
+Testname: sid-and-unstable-match-in-changes
+Test-Against:
+ changelog-distribution-does-not-match-changes-file
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/hints b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/sid-and-unstable-match-in-changes/eval/hints
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2d380f5
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * This line has a speling error.
+ - This line has the same speling error, but we should only
+ get one tag for it.
+ * Corrected spelling: abov -> above.
+ * Corrected typo: abov -> above.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/copyright b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/copyright
new file mode 100644
index 0000000..30cbe5c
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This duplicate duplicate word should not trigger. (re. #897402)
+
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2010 Russ Allbery <rra@debian.org>
+
+This text should not generate a spelling error for "ment":
+
+ computer software documentation," as such terms are used in
+ 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern-
+ ment only as a commercial end item. Consistent with 48 C.F.R.
+ 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995),
+
+But deafult is still a spelling error.
+
+This text should not generate a spelling error for the duplicate "a" (re. #844166)
+
+ following Attribution Information: (a) a copyright notice including the name
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/doc-base b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/doc-base
new file mode 100644
index 0000000..3839a9b
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/doc-base
@@ -0,0 +1,9 @@
+Document: spelling-general
+Title: Check for debian doc-base spelling errors
+Author: Russ Allbery
+Abstract: This control file exercises, picky, speling error checks for
+ Debian doc-base files, such as meta-package.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/spelling-general/copyright
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/add-readme b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/add-readme
new file mode 100644
index 0000000..b1647ba
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/add-readme
@@ -0,0 +1,8 @@
+This is a deliberate speling error. duplicate
+
+duplicate
+
+--- upstream.orig/README
++++ upstream/README
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/nonrel b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/nonrel
new file mode 100644
index 0000000..48e7740
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/nonrel
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; description mentions typo)
+
+--- upstream.orig/nonrel
++++ upstream/nonrel
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/series b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..0bfb03d
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/series
@@ -0,0 +1,3 @@
+add-readme
+spelling
+nonrel
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/spelling b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/spelling
new file mode 100644
index 0000000..29b9cfd
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/debian/patches/spelling
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; filename match)
+
+--- upstream.orig/spelling
++++ upstream/spelling
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/changelog/spelling-general/build-spec/fill-values b/t/recipes/checks/debian/changelog/spelling-general/build-spec/fill-values
new file mode 100644
index 0000000..1c8c790
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: spelling-general
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: General checks for spelling errors
diff --git a/t/recipes/checks/debian/changelog/spelling-general/eval/desc b/t/recipes/checks/debian/changelog/spelling-general/eval/desc
new file mode 100644
index 0000000..c42796e
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-general
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/spelling-general/eval/hints b/t/recipes/checks/debian/changelog/spelling-general/eval/hints
new file mode 100644
index 0000000..70278a2
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/spelling-general/eval/hints
@@ -0,0 +1 @@
+spelling-general (binary): spelling-error-in-changelog speling spelling [usr/share/doc/spelling-general/changelog.Debian.gz]
diff --git a/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/build-spec/fill-values b/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/build-spec/fill-values
new file mode 100644
index 0000000..073f011
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: two-dashes-in-non-native-version
+Version: 4.6.2-1-1
+Description: Two dashes in a non-native version
diff --git a/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/desc b/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/desc
new file mode 100644
index 0000000..2c2a6d1
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/desc
@@ -0,0 +1,3 @@
+Testname: two-dashes-in-non-native-version
+Test-Against: malformed-debian-changelog-version
+Check: debian/changelog
diff --git a/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/hints b/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/hints
new file mode 100644
index 0000000..c5e0665
--- /dev/null
+++ b/t/recipes/checks/debian/changelog/two-dashes-in-non-native-version/eval/hints
@@ -0,0 +1 @@
+two-dashes-in-non-native-version (source): hyphen-in-upstream-part-of-debian-changelog-version 4.6.2-1 [debian/changelog:1]
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-general/eval/desc b/t/recipes/checks/debian/control/field/adopted/control-file-general/eval/desc
new file mode 100644
index 0000000..da4b5c8
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/field/adopted
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-general/eval/hints b/t/recipes/checks/debian/control/field/adopted/control-file-general/eval/hints
new file mode 100644
index 0000000..0c6607a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): adopted-extended-field (in section for source) XS-Vcs-Svn [debian/control:14]
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install
new file mode 100644
index 0000000..0ba75d6
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install
@@ -0,0 +1 @@
+static usr/lib/foo/
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control.in
new file mode 100644
index 0000000..65425a5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/debian/control.in
@@ -0,0 +1,42 @@
+Source: [% $source %]
+Section: net
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Build-Depends: [% $build_depends %],
+ golang-go (>= 2:1.1.1-4)
+XS-Go-Import-Path: github.com/Debian/lintian-test-package
+Go-Import-Path: github.com/Debian/lintian-test-package
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Built-Using: ${misc:Built-Using}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dev
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source.
+
+Package: [% $source %]-clean-dev
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (clean dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source, without a built-using tag.
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/fill-values
new file mode 100644
index 0000000..130e255
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: control-file-golang-xs-go-import-path
+Description: False-positive test for XS-Go-Import field
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
new file mode 100644
index 0000000..6047afb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o static basic.c
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/basic.c b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/desc b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/desc
new file mode 100644
index 0000000..c5ce740
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/desc
@@ -0,0 +1,3 @@
+Testname: control-file-golang-xs-go-import-path
+Test-Against: adopted-extended-field
+Check: debian/control/field/adopted
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hint b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hint
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hint
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hints b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/eval/hints
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/debian/control.in
new file mode 100644
index 0000000..bb46277
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+XC-Package-Type: udeb
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/fill-values
new file mode 100644
index 0000000..d31fe5e
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-pedantic
+Description: Pedantic tests for control file issues
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/desc b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/desc
new file mode 100644
index 0000000..d8e0f7f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-pedantic
+Check: debian/control/field/adopted
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/hints b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/hints
new file mode 100644
index 0000000..d3770ad
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-pedantic/eval/hints
@@ -0,0 +1 @@
+control-file-pedantic (source): adopted-extended-field (in section for control-file-pedantic-udeb) XC-Package-Type [debian/control:14]
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in
new file mode 100644
index 0000000..920b4e2
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: non-free/[% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+XS-Autobuild: no
+Autobuild: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values
new file mode 100644
index 0000000..07d27d1
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-source-upload-to-non-free-without-autobuild
+Description: Check for source-only uploads to non-free without autobuild
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/desc b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/desc
new file mode 100644
index 0000000..d59a609
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/desc
@@ -0,0 +1,3 @@
+Testname: control-file-source-upload-to-non-free-without-autobuild
+Test-Against: adopted-extended-field
+Check: debian/control/field/adopted
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/hints b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-source-upload-to-non-free-without-autobuild/eval/hints
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/desc b/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/desc
new file mode 100644
index 0000000..700e237
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/control/field/adopted
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/hints b/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/hints
new file mode 100644
index 0000000..bf0c2ff
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (source): adopted-extended-field (in section for source) XS-Vcs-Browser [debian/control:9]
+binary (source): adopted-extended-field (in section for source) XS-Dm-Upload-Allowed [debian/control:10]
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/post-test b/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..1e276d7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses some UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/desc b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/desc
new file mode 100644
index 0000000..4f6731b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/control/field/adopted
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/hints b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/hints
new file mode 100644
index 0000000..7d978ef
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (source): adopted-extended-field (in section for source) XS-Dm-Upload-Allowed [debian/control:9]
diff --git a/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/post-test b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/control.in
new file mode 100644
index 0000000..b8807cf
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+XS-Testsuite: autopkgtest, golf
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/control b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/control
new file mode 100644
index 0000000..19e2aee
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/control
@@ -0,0 +1 @@
+Tests: test-1
diff --git a/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/test-1 b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/debian/tests/test-1
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/fill-values b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/fill-values
new file mode 100644
index 0000000..11a2f63
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: testsuite-unknown-suite
+Description: Tests for unknown suite in the control being non-file
diff --git a/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/desc b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/desc
new file mode 100644
index 0000000..e36143f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/desc
@@ -0,0 +1,2 @@
+Testname: testsuite-unknown-suite
+Check: debian/control/field/adopted
diff --git a/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/hints b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/hints
new file mode 100644
index 0000000..ad57ccd
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/adopted/testsuite-unknown-suite/eval/hints
@@ -0,0 +1 @@
+testsuite-unknown-suite (source): adopted-extended-field (in section for source) XS-Testsuite [debian/control:8]
diff --git a/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/debian/control.in
new file mode 100644
index 0000000..25e3070
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/debian/control.in
@@ -0,0 +1,43 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]-broken
+Architecture: any-amd64 any-arm64 any-mips64 any-mips64el any-ia64
+ any-ppc64 any-ppc64el any-sparc64
+Depends: ${misc:Depends}
+Description: [% $description %] (multiline architecture, broken)
+ This is a (broken) test package designed to exercise some feature or
+ tag of Lintian. It is part of the Lintian test suite and may do very
+ odd things. It should not be installed like a regular package. It
+ may be an empty package.
+ .
+ The Architecture (multi-)line example above is taken from
+ https://bugs.debian.org/780473
+
+Package: [% $source %]-fine-any-something
+Architecture: any-amd64 any-arm64 any-mips64 any-mips64el any-ia64 any-ppc64 any-ppc64el any-sparc64
+Depends: ${misc:Depends}
+Description: [% $description %] (any-something, fine)
+ This is a (non-broken) test package designed to exercise some feature
+ or tag of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular package.
+ It may be an empty package.
+ .
+ This "any-something" package should not show up.
+
+Package: [% $source %]-fine-all
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (all, fine)
+ This is a (non-broken) test package designed to exercise some feature
+ or tag of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular package.
+ It may be an empty package.
+ .
+ This "all" package should not show up.
diff --git a/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/fill-values b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/fill-values
new file mode 100644
index 0000000..b1b9f17
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-important-space
+Description: Important tests for control file spacing
diff --git a/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/desc b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/desc
new file mode 100644
index 0000000..1fcd3a9
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-important-space
+Check: debian/control/field/architecture/multiline
diff --git a/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/hints b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/hints
new file mode 100644
index 0000000..366ed52
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/architecture/multiline/control-file-important-space/eval/hints
@@ -0,0 +1 @@
+control-file-important-space (source): multiline-architecture-field Architecture (in section for control-file-important-space-broken) [debian/control:11]
diff --git a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in
new file mode 100644
index 0000000..7df1b9f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in
@@ -0,0 +1,33 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ big <stage1>, bpfail1 <foobar>,
+ bpcomplicated <stage1 nocheck> <cross> <!pkg.[% $source %].foo>
+Rules-Requires-Root: no
+
+Package: [% $source %]-wrong-syntax
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Build-Profiles: <in<valid>
+Description: [% $description %] (wrong syntax)
+ Check the syntax of the Build-Profiles field
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-unknown-profile
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Build-Profiles: <!stage1 !nocheck> <!unknown> <pkg.[% $source %].foo>
+Description: [% $description %] (unknown profile)
+ Check for unknown profile names
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/fill-values
new file mode 100644
index 0000000..7fd9fd0
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-build-profiles-general
+Description: General tests for build profiles
diff --git a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/desc b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/desc
new file mode 100644
index 0000000..20c61ee
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-build-profiles-general
+Check: debian/control/field/build-profiles
+See-Also:
+ Debian Bug#540594,
+ Debian Bug#551793
diff --git a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints
new file mode 100644
index 0000000..e100e00
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints
@@ -0,0 +1,2 @@
+fields-build-profiles-general (source): invalid-restriction-formula-in-build-profiles-field <in<valid> (in section for fields-build-profiles-general-wrong-syntax) [debian/control:14]
+fields-build-profiles-general (source): invalid-profile-name-in-build-profiles-field unknown (in section for fields-build-profiles-general-unknown-profile) [debian/control:26]
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install
new file mode 100644
index 0000000..c07a6cb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install
@@ -0,0 +1 @@
+static /usr/lib/foo/
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control.in
new file mode 100644
index 0000000..d060140
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/debian/control.in
@@ -0,0 +1,41 @@
+Source: [% $source %]
+Section: net
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Build-Depends: [% $build_depends %],
+ golang-go (>= 2:1.1.1-4)
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Built-Using: ${misc:Built-Using}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dev
+Architecture: all
+Depends: ${misc:Depends}
+Built-Using: ${misc:Built-Using}
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source.
+
+Package: [% $source %]-clean-dev
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (clean dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source, without a built-using tag.
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/fill-values b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/fill-values
new file mode 100644
index 0000000..2c9dd7d
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: control-file-golang-built-using
+Description: False-positive test for Built-Using field
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile
new file mode 100644
index 0000000..6047afb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o static basic.c
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/basic.c b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/desc b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/desc
new file mode 100644
index 0000000..89280b2
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-golang-built-using
+Check: debian/control/field/built-using
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/hints b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/hints
new file mode 100644
index 0000000..ffc3280
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/eval/hints
@@ -0,0 +1 @@
+control-file-golang-built-using (source): built-using-field-on-arch-all-package (in section for control-file-golang-built-using-dev) Built-Using ${misc:Built-Using} [debian/control:23]
diff --git a/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/desc b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/desc
new file mode 100644
index 0000000..69e1475
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/field/description/duplicate
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/hints b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/hints
new file mode 100644
index 0000000..cc92e1d
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/description/duplicate/control-file-general/eval/hints
@@ -0,0 +1,2 @@
+control-file-general (source): duplicate-short-description control-file-general control-file-general-1 [debian/control]
+control-file-general (source): duplicate-long-description control-file-general control-file-general-1 control-file-general-2 control-file-general-3 control-file-general-4 control-file-general-5 control-file-general-dbg control-file-general-dbgsym [debian/control]
diff --git a/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/desc b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/desc
new file mode 100644
index 0000000..981eddf
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/field/doubled-up
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/hints b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/hints
new file mode 100644
index 0000000..5d69243
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/doubled-up/control-file-general/eval/hints
@@ -0,0 +1,3 @@
+control-file-general (source): debian-control-repeats-field-name-in-value (in section for control-file-general-dbgsym) Description [debian/control:91]
+control-file-general (source): debian-control-repeats-field-name-in-value (in section for control-file-general-dbg) Description [debian/control:101]
+control-file-general (source): debian-control-repeats-field-name-in-value (in section for control-file-general-5) Description [debian/control:81]
diff --git a/t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/debian/control.in
new file mode 100644
index 0000000..c1c9cdc
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/debian/control.in
@@ -0,0 +1,26 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Uploaders:
+ Wrapped Onto New Line <test@example.com>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+Homepage: https://lintian.debian.org/
+Vcs-Browser:
+# The following line contains "Vcs-Git: \n"
+Vcs-Git:
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests:
+# The following line contains "Provides: \n"
+Provides:
+Recommends: ${false:Positive}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/fill-values b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/fill-values
new file mode 100644
index 0000000..65e572e
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-has-empty-field
+Description: Check for empty fields
diff --git a/t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/desc b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/desc
new file mode 100644
index 0000000..5f7696d
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-has-empty-field
+Check: debian/control/field/empty
diff --git a/t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/hints b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/hints
new file mode 100644
index 0000000..8f187c3
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/empty/control-has-empty-field/eval/hints
@@ -0,0 +1,4 @@
+control-has-empty-field (source): debian-control-has-empty-field (in source paragraph) Vcs-Git [debian/control:13]
+control-has-empty-field (source): debian-control-has-empty-field (in source paragraph) Vcs-Browser [debian/control:11]
+control-has-empty-field (source): debian-control-has-empty-field (in section for control-has-empty-field) Suggests [debian/control:18]
+control-has-empty-field (source): debian-control-has-empty-field (in section for control-has-empty-field) Provides [debian/control:20]
diff --git a/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/desc b/t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/desc
new file mode 100644
index 0000000..869cae4
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/field/misplaced
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/hints b/t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/hints
new file mode 100644
index 0000000..f2cf497
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): build-prerequisite-in-installable-section Build-Conflicts (in section for control-file-general) [debian/control:21]
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..1e276d7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses some UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/desc b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/desc
new file mode 100644
index 0000000..d2bbe00
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/control/field/misplaced
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/hints b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/hints
new file mode 100644
index 0000000..71d7bec
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (source): build-prerequisite-in-installable-section Build-Depends (in section for foo++) [debian/control:13]
diff --git a/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/post-test b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/misplaced/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/field/redundant/control-file-general/eval/desc b/t/recipes/checks/debian/control/field/redundant/control-file-general/eval/desc
new file mode 100644
index 0000000..f74e37c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/field/redundant
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/field/redundant/control-file-general/eval/hints b/t/recipes/checks/debian/control/field/redundant/control-file-general/eval/hints
new file mode 100644
index 0000000..d7ec903
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): installable-field-mirrors-source (in section for control-file-general) Maintainer [debian/control:20]
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/desc b/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/desc
new file mode 100644
index 0000000..8a0c040
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/control/field/redundant
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/hints b/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/hints
new file mode 100644
index 0000000..6d49eb7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (source): installable-field-mirrors-source (in section for binary) Vcs-Svn [debian/control:16]
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/post-test b/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/desc b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..485af32
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debian/control/field/redundant
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/hints b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..fc30343
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz (source): installable-field-mirrors-source (in section for libbaz2-dbg) Priority [debian/control:51]
diff --git a/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/post-test b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/redundant/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/compat.in b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/control.in
new file mode 100644
index 0000000..961052e
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/debian/control.in
@@ -0,0 +1,22 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], debhelper
+Build-Depends-Indep: foobar, foo, foobar
+Build-Conflicts: bar,
+ baz,
+ bar [i386]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${misc:Depends}
+Recommends: foo (>> 1.0) | bar, foo
+Suggests: baz (= 1.0), baz, baz (>= 2.0)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/fill-values b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/fill-values
new file mode 100644
index 0000000..51e95fe
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: control-file-duplicate
+Package-Architecture: all
+Description: Pedantic test for duplicate relations
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/desc b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/desc
new file mode 100644
index 0000000..a819543
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-duplicate
+Check: debian/control/field/relation
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/hints b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/hints
new file mode 100644
index 0000000..2633892
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-duplicate/eval/hints
@@ -0,0 +1,5 @@
+control-file-duplicate (source): redundant-control-relation (in source paragraph) Build-Depends-Indep foobar, foobar [debian/control:7]
+control-file-duplicate (source): redundant-control-relation (in source paragraph) Build-Depends debhelper, debhelper (>= 13~) [debian/control:6]
+control-file-duplicate (source): redundant-control-relation (in source paragraph) Build-Conflicts bar, bar [i386] [debian/control:8]
+control-file-duplicate (source): redundant-control-relation (in section for control-file-duplicate) Suggests baz, baz (= 1.0), baz (>= 2.0) [debian/control:17]
+control-file-duplicate (source): redundant-control-relation (in section for control-file-duplicate) Depends ${misc:Depends}, ${misc:Depends} [debian/control:15]
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-general/eval/desc b/t/recipes/checks/debian/control/field/relation/control-file-general/eval/desc
new file mode 100644
index 0000000..27425f4
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/field/relation
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-general/eval/hints b/t/recipes/checks/debian/control/field/relation/control-file-general/eval/hints
new file mode 100644
index 0000000..67abb80
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-general/eval/hints
@@ -0,0 +1,3 @@
+control-file-general (source): obsolete-relation-form-in-source (in source paragraph) Build-Depends-Indep perl (> 5.8) [debian/control:12]
+control-file-general (source): obsolete-relation-form-in-source (in section for control-file-general-1) Breaks libsqlite3-0 (< 3.6.12) [debian/control:37]
+control-file-general (source): missing-separator-between-items (in section for control-file-general) '${shlibs:Depends}' and '${some:Depends}' [debian/control:24]
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/debian/control.in
new file mode 100644
index 0000000..fff0af8
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: control-file-missing-separator
+Section: devel
+Priority: optional
+Maintainer: [% $author %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc
+ mips mipsel
+ hppa
+ s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Standards-Version: [% $standards_version %]
+
+Package: control-file-missing-separator
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1)
+ baz (<< 2),
+ fizz (= 2.0)
+Suggests: p1
+ p2
+ p3
+ p4
+ p5
+Description: Test for missing separators in control files
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/fill-values b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/fill-values
new file mode 100644
index 0000000..1a4a198
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: control-file-missing-separator
+Version: 1
+Description: Test for missing separators in control files
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/desc b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/desc
new file mode 100644
index 0000000..134b1a6
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-missing-separator
+Check: debian/control/field/relation
diff --git a/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/hints b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/hints
new file mode 100644
index 0000000..232c263
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/relation/control-file-missing-separator/eval/hints
@@ -0,0 +1,2 @@
+control-file-missing-separator (source): missing-separator-between-items (in section for control-file-missing-separator) 'p1' and 'p2' [debian/control:22]
+control-file-missing-separator (source): missing-separator-between-items (in section for control-file-missing-separator) 'foo (>= 1)' and 'baz (<< 2)' [debian/control:19]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/debian/control.in
new file mode 100644
index 0000000..fff0af8
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: control-file-missing-separator
+Section: devel
+Priority: optional
+Maintainer: [% $author %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc
+ mips mipsel
+ hppa
+ s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Standards-Version: [% $standards_version %]
+
+Package: control-file-missing-separator
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1)
+ baz (<< 2),
+ fizz (= 2.0)
+Suggests: p1
+ p2
+ p3
+ p4
+ p5
+Description: Test for missing separators in control files
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/fill-values
new file mode 100644
index 0000000..1a4a198
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: control-file-missing-separator
+Version: 1
+Description: Test for missing separators in control files
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/desc
new file mode 100644
index 0000000..b788a20
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-missing-separator
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/hints
new file mode 100644
index 0000000..7fc3867
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-missing-separator/eval/hints
@@ -0,0 +1 @@
+control-file-missing-separator (source): silent-on-rules-requiring-root [debian/control]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in
new file mode 100644
index 0000000..9b17d19
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/rules b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/fill-values
new file mode 100644
index 0000000..f97b076
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-rules-requires-root-binary-targets
+Description: Test for "Rules-Requires-Root: binary-targets"
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/desc
new file mode 100644
index 0000000..7d4185b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-rules-requires-root-binary-targets
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/hints
new file mode 100644
index 0000000..bd286c7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-binary-targets/eval/hints
@@ -0,0 +1 @@
+control-file-rules-requires-root-binary-targets (source): rules-require-root-explicitly [debian/control:7]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/control.in
new file mode 100644
index 0000000..503994d
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/rules b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/fill-values
new file mode 100644
index 0000000..7359a3f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-rules-requires-root-no
+Description: Test for "Rules-Requires-Root: no"
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/desc
new file mode 100644
index 0000000..daf6c23
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-rules-requires-root-no
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/hints
new file mode 100644
index 0000000..faa5fc4
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-rules-requires-root-no/eval/hints
@@ -0,0 +1 @@
+control-file-rules-requires-root-no (source): rules-do-not-require-root [debian/control:7]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/fill-values
new file mode 100644
index 0000000..9db2167
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-symlink
+Description: Test if debian/control is a symlink
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/pre-build b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/pre-build
new file mode 100755
index 0000000..d872c36
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+ROOT_DIR="$1"
+
+mv "${ROOT_DIR}/debian/control" "${ROOT_DIR}/debian/control.real"
+ln -s control.real "${ROOT_DIR}/debian/control"
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/desc
new file mode 100644
index 0000000..8ddc4fb
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-symlink
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/hints
new file mode 100644
index 0000000..b191772
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/control-file-symlink/eval/hints
@@ -0,0 +1 @@
+control-file-symlink (source): rules-do-not-require-root [debian/control.real:7]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..c69c988
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Require-Root: no
+Rules-Requires-Root: no
+XS-Comment: This is random comment ending up in the dsc file.
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/fill-values
new file mode 100644
index 0000000..df47230
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-unknown-fields
+Description: General tests for unknown fields
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/desc
new file mode 100644
index 0000000..c37168e
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-unknown-fields
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/hints
new file mode 100644
index 0000000..a698c7f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/fields-unknown-fields/eval/hints
@@ -0,0 +1,2 @@
+fields-unknown-fields (source): spelling-error-in-rules-requires-root Rules-Require-Root [debian/control:7]
+fields-unknown-fields (source): rules-do-not-require-root [debian/control:8]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/desc
new file mode 100644
index 0000000..02acb73
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/hints
new file mode 100644
index 0000000..2404d59
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/hints
@@ -0,0 +1 @@
+relations (source): silent-on-rules-requiring-root [debian/control]
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/post-test b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/debian/control.in
new file mode 100644
index 0000000..fb3b62f
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/fill-values
new file mode 100644
index 0000000..a1b35c5
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: rules-requires-root-missing
+Skeleton: upload-native
+Description: d/control without explicit rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/desc
new file mode 100644
index 0000000..ca896c2
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-requires-root-missing
+Check: debian/control/field/rules-requires-root
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/hints
new file mode 100644
index 0000000..32edc86
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing/eval/hints
@@ -0,0 +1 @@
+rules-requires-root-missing (source): silent-on-rules-requiring-root [debian/control]
diff --git a/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/debian/control.in
new file mode 100644
index 0000000..cf9ff9a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Section: [% $section %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/fill-values b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/fill-values
new file mode 100644
index 0000000..0b221ac
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: no-section-in-source-stanza
+Description: No Section declared in source stanza of d/control
+
diff --git a/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/desc b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/desc
new file mode 100644
index 0000000..5e52eb8
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-section-in-source-stanza
+Check: debian/control/field/section
diff --git a/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/hints b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/hints
new file mode 100644
index 0000000..e12b62a
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/section/no-section-in-source-stanza/eval/hints
@@ -0,0 +1 @@
+no-section-in-source-stanza (source): no-source-section [debian/control]
diff --git a/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/debian/control.in
new file mode 100644
index 0000000..9af359b
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority:optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/fill-values b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/fill-values
new file mode 100644
index 0000000..f44d584
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-pedantic-space
+Description: Pedantic tests for control file spacing
diff --git a/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/desc b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/desc
new file mode 100644
index 0000000..86d452c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-pedantic-space
+Check: debian/control/field/spacing
diff --git a/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/hints b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/hints
new file mode 100644
index 0000000..df949b0
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/spacing/control-file-pedantic-space/eval/hints
@@ -0,0 +1,3 @@
+control-file-pedantic-space (source): debian-control-has-unusual-field-spacing Source [debian/control:1]
+control-file-pedantic-space (source): debian-control-has-unusual-field-spacing Section [debian/control:3]
+control-file-pedantic-space (source): debian-control-has-unusual-field-spacing Priority [debian/control:2]
diff --git a/t/recipes/checks/debian/control/link/control-file-symlink/build-spec/fill-values b/t/recipes/checks/debian/control/link/control-file-symlink/build-spec/fill-values
new file mode 100644
index 0000000..9db2167
--- /dev/null
+++ b/t/recipes/checks/debian/control/link/control-file-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-symlink
+Description: Test if debian/control is a symlink
diff --git a/t/recipes/checks/debian/control/link/control-file-symlink/build-spec/pre-build b/t/recipes/checks/debian/control/link/control-file-symlink/build-spec/pre-build
new file mode 100755
index 0000000..d872c36
--- /dev/null
+++ b/t/recipes/checks/debian/control/link/control-file-symlink/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+ROOT_DIR="$1"
+
+mv "${ROOT_DIR}/debian/control" "${ROOT_DIR}/debian/control.real"
+ln -s control.real "${ROOT_DIR}/debian/control"
diff --git a/t/recipes/checks/debian/control/link/control-file-symlink/eval/desc b/t/recipes/checks/debian/control/link/control-file-symlink/eval/desc
new file mode 100644
index 0000000..556a375
--- /dev/null
+++ b/t/recipes/checks/debian/control/link/control-file-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-symlink
+Check: debian/control/link
diff --git a/t/recipes/checks/debian/control/link/control-file-symlink/eval/hints b/t/recipes/checks/debian/control/link/control-file-symlink/eval/hints
new file mode 100644
index 0000000..04be3f2
--- /dev/null
+++ b/t/recipes/checks/debian/control/link/control-file-symlink/eval/hints
@@ -0,0 +1 @@
+control-file-symlink (source): debian-control-file-is-a-symlink [debian/control]
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/desc b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/desc
new file mode 100644
index 0000000..02f41b5
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/prerequisite/circular
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/hints b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/hints
new file mode 100644
index 0000000..1c51dc4
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): circular-installation-prerequisite (in section for control-file-general) Depends control-file-general, foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends} [debian/control:24]
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/debian/control.in b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/debian/control.in
new file mode 100644
index 0000000..c69e042
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: [% $source %]
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/fill-values
new file mode 100644
index 0000000..837abce
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-suggests-itself
+Description: Test a package Suggesting itself
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/desc b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/desc
new file mode 100644
index 0000000..b880eed
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-suggests-itself
+Check: debian/control/prerequisite/circular
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/hints b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/hints
new file mode 100644
index 0000000..c2e5627
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/control-file-suggests-itself/eval/hints
@@ -0,0 +1 @@
+control-file-suggests-itself (source): circular-installation-prerequisite (in section for control-file-suggests-itself) Suggests control-file-suggests-itself [debian/control:12]
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/control.in
new file mode 100644
index 0000000..054ffc3
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/control.in
@@ -0,0 +1,81 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], libtest-simple-perl (>= 0.98), perl-modules
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, xorg, bash,
+ conflict-dep, gawk | awk, new-package | xbase-clients (>= 0.1), [% $source %],
+ gaim (>= 0.1), emacs21, emacs22, emacs23, makedev, libtest-simple-perl (>= 0.98),
+ packaging-dev, xfont-a, emacs22-gtk, emacs23-el, emacs23-nox, emacs23-lucid,
+ emacs222, perl-modules, debhelper
+Breaks: package-without-version, [% $source %] (<< 0.1),
+ replaced-wo-version
+Replaces: replaced-wo-version
+Conflicts: package-with-version (<< 3.0), conflict-dep
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: lib[% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, libdb1-compat, perl-modules-5.22
+Recommends: debconf-doc, cdbs
+Conflicts: debhelper
+Section: libs
+Description: [% $description %] -- fake library
+ This is a fake library designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: py-[% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, python-minimal
+Description: [% $description %] - Fake Python package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake Python package.
+
+Package: [% $source %]-doc
+Section: doc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, [% $source %]
+Description: [% $description %] - Fake Doc package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake doc package.
+
+Package: dh-[% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, debhelper
+Description: [% $description %] - Fake Debhelper package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake Debhelper package to test false-positives in
+ binary-package-depends-on-toolchain-package.
+
+Package: [% $source %]-source
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, debhelper
+Description: [% $description %] - Fake DKMS-like package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake DKMS-like package to test false-positives in
+ binary-package-depends-on-toolchain-package.
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/install b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/fill-values
new file mode 100644
index 0000000..6e84753
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-depends-general
+Description: General tests for binary package dependencies
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/orig/some-file b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/desc b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/desc
new file mode 100644
index 0000000..e47d658
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-depends-general
+Check: debian/control/prerequisite/circular
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/hints b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/hints
new file mode 100644
index 0000000..44047f1
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/fields-depends-general/eval/hints
@@ -0,0 +1 @@
+fields-depends-general (source): circular-installation-prerequisite (in section for fields-depends-general) Depends ${shlibs:Depends}, ${misc:Depends}, xorg, bash, conflict-dep, gawk | awk, new-package | xbase-clients (>= 0.1), fields-depends-general, gaim (>= 0.1), emacs21, emacs22, emacs23, makedev, libtest-simple-perl (>= 0.98), packaging-dev, xfont-a, emacs22-gtk, emacs23-el, emacs23-nox, emacs23-lucid, emacs222, perl-modules, debhelper [debian/control:11]
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/desc b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/desc
new file mode 100644
index 0000000..515312a
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/control/prerequisite/circular
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/hints b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/hints
new file mode 100644
index 0000000..3285321
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/hints
@@ -0,0 +1,2 @@
+relations (source): circular-installation-prerequisite (in section for relations-multiple-libs) Recommends ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev [debian/control:40]
+relations (source): circular-installation-prerequisite (in section for relations) Depends relations (<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, null (>= 0), ${misc:Depends}, makedev [debian/control:20]
diff --git a/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/post-test b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/circular/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/debian/control.in b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/debian/control.in
new file mode 100644
index 0000000..170132e
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/debian/control.in
@@ -0,0 +1,115 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libcontrol-file-foo1
+Section: libs
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (shared lib 1)
+ First shared library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-file-bar7ldbl
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (shared lib 2)
+ Second shared library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-file-dev
+Section: libdevel
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libcontrol-file-foo1 (= ${binary:Version}),
+ libcontrol-file-bar7ldbl, libcontrol-file-baz9-4 (>= ${binary:Version}),
+ libfoo4, libcontrol-file-doc, libcontrol-file4-dev
+Description: [% $description %] (dev package)
+ Dev package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-file-baz9-4
+Section: libs
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (shared lib 3)
+ Third shared library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-file-doc
+Section: doc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (doc package)
+ Doc package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-file4-dev
+Section: libdevel
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libcontrol-file-foo1 (<= ${source:Upstream-Version}-99)
+ | libcontrol-file-baz9-4 (<= ${source:Upstream-Version}-99),
+ libcontrol-file-foo1 (>= ${binary:Version})
+ | libcontrol-file-baz9-4 (>= ${binary:Version})
+Description: [% $description %] (dev package with version)
+ Dev package containing a number.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-file-all-dev
+Section: libdevel
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, libcontrol-file-doc,
+ libcontrol-file-foo1 (>= ${source:Upstream-Version}),
+ libcontrol-file-foo1 (<= ${source:Version}.1~),
+ libcontrol-file-baz9-4 (>= ${source:Version})
+Description: [% $description %] (arch: all dev package)
+ Architecture-independent development package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libcontrol-baz-dev
+Section: libdevel
+Architecture: [% $package_architecture %]
+Depends:
+ libcontrol-file-baz9-4 (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Description: [% $description %] (dev whitespace)
+ Test proper parsing of leading whitespace in Depends
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/fill-values
new file mode 100644
index 0000000..3651a6c
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-library-dev
+Description: Check control file handling of library dev packages
diff --git a/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/desc b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/desc
new file mode 100644
index 0000000..07a35fd
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-library-dev
+Check: debian/control/prerequisite/development
diff --git a/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/hints b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/hints
new file mode 100644
index 0000000..5d06a02
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/control-file-library-dev/eval/hints
@@ -0,0 +1,3 @@
+control-file-library-dev (source): weak-library-dev-dependency (in section for libcontrol-file-dev) Depends libcontrol-file-baz9-4 (>= ${binary:Version}) [debian/control:35]
+control-file-library-dev (source): weak-library-dev-dependency (in section for libcontrol-file-dev) Depends libcontrol-file-bar7ldbl [debian/control:35]
+control-file-library-dev (source): weak-library-dev-dependency (in section for libcontrol-file-all-dev) Depends libcontrol-file-baz9-4 (>= ${source:Version}) [debian/control:90]
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/desc b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..1b2d731
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debian/control/prerequisite/development
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/hints b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..8113d34
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz (source): weak-library-dev-dependency (in section for libbaz2-dev) Depends libbaz2 (= ${source:Version}) [debian/control:40]
+libbaz (source): weak-library-dev-dependency (in section for libbaz1-dev) Depends libbaz1 (= ${source:Version}) [debian/control:20]
diff --git a/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/post-test b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/development/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/rules b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/desc b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/desc
new file mode 100644
index 0000000..7f12c44
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debian/control/prerequisite/redundant
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/hints b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/hints
new file mode 100644
index 0000000..0671905
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/control-file-general/eval/hints
@@ -0,0 +1,4 @@
+control-file-general (source): redundant-installation-prerequisite (in section for control-file-general) Suggests -> Recommends match${lintian:Match} [debian/control:25]
+control-file-general (source): redundant-installation-prerequisite (in section for control-file-general) Suggests -> Recommends bar | baz [debian/control:25]
+control-file-general (source): redundant-installation-prerequisite (in section for control-file-general) Suggests -> Depends bar | baz [debian/control:24]
+control-file-general (source): redundant-installation-prerequisite (in section for control-file-general) Recommends -> Depends foo [debian/control:24]
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/desc b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/desc
new file mode 100644
index 0000000..68843a4
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/control/prerequisite/redundant
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/hints b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/hints
new file mode 100644
index 0000000..2c936c4
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/hints
@@ -0,0 +1,5 @@
+relations (source): redundant-installation-prerequisite (in section for relations-multiple-libs) Recommends -> Depends ${shlibs:Depends} [debian/control:37]
+relations (source): redundant-installation-prerequisite (in section for relations) Suggests -> Recommends some-other-package [debian/control:26]
+relations (source): redundant-installation-prerequisite (in section for relations) Recommends -> Depends null [debian/control:20]
+relations (source): redundant-installation-prerequisite (in section for relations) Recommends -> Depends dpkg [debian/control:20]
+relations (source): redundant-installation-prerequisite (in section for relations) Depends -> Pre-Depends gawk | awk [debian/control:19]
diff --git a/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/post-test b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/control/prerequisite/redundant/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/copyright
new file mode 100644
index 0000000..61e14af
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/copyright
@@ -0,0 +1,23 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: © 2011 J. Random Hacker <j.r.hacker@example.com>
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian systems, the complete text of the Apache version 2.0 license
+ can be found in "/usr/share/common-licenses/Apache-2.0".
+
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/source-copyright-missing-notice-file-for-apache-license-unrel.install b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/source-copyright-missing-notice-file-for-apache-license-unrel.install
new file mode 100644
index 0000000..4268786
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/debian/source-copyright-missing-notice-file-for-apache-license-unrel.install
@@ -0,0 +1 @@
+NOTICE usr/share/doc/foo
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/fill-values b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/fill-values
new file mode 100644
index 0000000..f38f171
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-missing-notice-file-for-apache-license-unrel
+Description: Test for no packages missing Apache NOTICE files (false-positive)
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/orig/NOTICE b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/orig/NOTICE
new file mode 100644
index 0000000..2a74156
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/build-spec/orig/NOTICE
@@ -0,0 +1 @@
+This file is installed to the binary package.
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/desc b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/desc
new file mode 100644
index 0000000..ddbf70f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: source-copyright-missing-notice-file-for-apache-license-unrel
+Test-Against:
+ missing-notice-file-for-apache-license
+Check: debian/copyright/apache-notice
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/hints b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license-unrel/eval/hints
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/debian/copyright
new file mode 100644
index 0000000..61e14af
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/debian/copyright
@@ -0,0 +1,23 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: © 2011 J. Random Hacker <j.r.hacker@example.com>
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian systems, the complete text of the Apache version 2.0 license
+ can be found in "/usr/share/common-licenses/Apache-2.0".
+
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/fill-values b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/fill-values
new file mode 100644
index 0000000..482a07b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-missing-notice-file-for-apache-license
+Description: Test for no packages missing Apache NOTICE files
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE
new file mode 100644
index 0000000..6c64526
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE
@@ -0,0 +1 @@
+This Apache 2.0 license NOTICE is not installed to any binary package.
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE.txt b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE.txt
new file mode 100644
index 0000000..6c64526
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/NOTICE.txt
@@ -0,0 +1 @@
+This Apache 2.0 license NOTICE is not installed to any binary package.
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/subdir/NOTICE b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/subdir/NOTICE
new file mode 100644
index 0000000..6c64526
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/subdir/NOTICE
@@ -0,0 +1 @@
+This Apache 2.0 license NOTICE is not installed to any binary package.
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/unrel/NOTICE b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/unrel/NOTICE
new file mode 100644
index 0000000..bdc5a71
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/build-spec/orig/unrel/NOTICE
@@ -0,0 +1 @@
+This file is not installed but is not a A_pache license NOTICE file anyway.
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/desc b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/desc
new file mode 100644
index 0000000..97324bb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-missing-notice-file-for-apache-license
+Check: debian/copyright/apache-notice
diff --git a/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/hints b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/hints
new file mode 100644
index 0000000..0f6d607
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/apache-notice/source-copyright-missing-notice-file-for-apache-license/eval/hints
@@ -0,0 +1,3 @@
+source-copyright-missing-notice-file-for-apache-license (source): missing-notice-file-for-apache-license [subdir/NOTICE]
+source-copyright-missing-notice-file-for-apache-license (source): missing-notice-file-for-apache-license [NOTICE]
+source-copyright-missing-notice-file-for-apache-license (source): missing-notice-file-for-apache-license [NOTICE.txt]
diff --git a/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..324f170
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/control.in
@@ -0,0 +1,39 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-helper
+Architecture: [% $package_architecture %]
+Depends: [% $source %] (= [% $version %]), ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (symlink)
+ Helper package with a legitimate /usr/share/doc symlink.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-weak
+Architecture: [% $package_architecture %]
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (weak)
+ Helper package with a /usr/share/doc symlink but an insufficiently
+ strong dependency. Lintian intentionally doesn't diagnose this.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/rules b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/rules
new file mode 100755
index 0000000..32f23a0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+pkg := copyright-file-doc-symlink
+
+%:
+ dh $@
+
+override_dh_prep:
+ mkdir -p debian/$(pkg)-helper/usr/share/doc
+ ln -s $(pkg) debian/$(pkg)-helper/usr/share/doc/$(pkg)-helper
+ mkdir -p debian/$(pkg)-weak/usr/share/doc
+ ln -s $(pkg) debian/$(pkg)-weak/usr/share/doc/$(pkg)-weak
diff --git a/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/fill-values b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/fill-values
new file mode 100644
index 0000000..77a06bf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-doc-symlink
+Description: Test a symlinked /usr/share/doc
diff --git a/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/desc b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/desc
new file mode 100644
index 0000000..d56438f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/desc
@@ -0,0 +1,3 @@
+Testname: copyright-file-doc-symlink
+Test-Against: usr-share-doc-symlink-without-dependency
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/hints b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-doc-symlink/eval/hints
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/DEBIAN/control.in b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..e70b359
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/DEBIAN/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: [% $package_architecture %]
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Depends: other-package
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/control-members b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/control-members
new file mode 100644
index 0000000..4db28ac
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/control-members
@@ -0,0 +1 @@
+control
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/fill-values b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/fill-values
new file mode 100644
index 0000000..caef6c4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: copyright-file-foreign-package
+Description: Test for foreign symlink in package
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-control b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-control
new file mode 100755
index 0000000..0f99335
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-control
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+builddir="$1"
+
+rm -f "$builddir/md5sums"
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-data b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-data
new file mode 100755
index 0000000..5794ed0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/build-spec/pre-data
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+name="$2"
+
+docdir="$rootdir/usr/share/doc"
+
+rm -rf "$docdir"
+
+mkdir -p "$docdir"
+ln -sf other-package "$docdir/$name"
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/desc b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/desc
new file mode 100644
index 0000000..1ad0379
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-foreign-package
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/hints b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/hints
new file mode 100644
index 0000000..d4bd58a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-foreign-package/eval/hints
@@ -0,0 +1 @@
+copyright-file-foreign-package (binary): cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..d347ec7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/control.in
@@ -0,0 +1,243 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: copyright-iso-8859-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for non-utf-8-encodings
+ Tests non-UTF-8 encodings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL in full text
+ Tests the tag for including all of the GPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-lgpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of LGPL in full text
+ Tests the tag for including all of the LGPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gfdl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GFDL in full text
+ Tests the tag for including all of the GFDL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-apache-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of Apache 2.0 in full text
+ Tests the tag for including all of the Apache 2.0 license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-misc-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks various errors in copyright files
+ Tests various random errors in copyright files.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-symlink
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: just use a symlink for the copyright file
+ Tests the check for a symlinked copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-compressed
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: include a valid copyright file and compress it
+ Tests the check for a compressed copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-style
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: use an old-style directory structure
+ Tests a copyright file using an old-style directory structure.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL1
+ This should trigger errors as GPL1 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL2
+ This should trigger errors as GPL2 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-php
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks problematic PHP licenses
+ The PHP licenses are problematic for any software that isn't PHP.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-w3c
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of the W3C license
+ The W3C license text claims to be "GPL compatible", which shouldn't
+ trigger warnings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-no-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: this should not emit any error
+ This copyright file should be fine.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-versionless
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks a valid versionless GPL reference
+ Refers to the GPL and truly doesn't mention any version.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-perl-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for perl packages not pointing to common-licenses
+ Packages under the "same terms as Perl itself" should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-apache2-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for apache2 packages not pointing to common-licenses
+ Packages under the apache2-license should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-poor-common-licenses
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks not referring to common licenses
+ Packages should refer to common licenses with full path if they
+ use a common license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-crln
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: check for Windows newlines
+ This package should trigger a tag for having Windows newlines in
+ the copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-agpl-3
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of AGPL-3 in full text
+ This should not trigger a tag as AGPL-3 is not in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-fsf
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks use of old FSF address
+ This should trigger a tag for using old FSF address.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-crln.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-crln.copyright
new file mode 100644
index 0000000..43b49cf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-crln.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright
new file mode 100644
index 0000000..4a0fe1c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright
new file mode 100644
index 0000000..1facebe
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright
@@ -0,0 +1,206 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright
new file mode 100644
index 0000000..f94bb0d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright
@@ -0,0 +1,344 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/gpl-2.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright
new file mode 100644
index 0000000..5dabe34
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright
@@ -0,0 +1,171 @@
+A copy of the GNU Lesser General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/lgpl-3.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright
new file mode 100644
index 0000000..78a493a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright
@@ -0,0 +1,3 @@
+Copyright (C) 2008 Author
+
+Äußerst ärgerlich, falls nicht UTF-8 benutzt würde.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright
new file mode 100644
index 0000000..dceee0e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright
@@ -0,0 +1,22 @@
+This copyright file contains several errors.
+
+Downloaded from <url://example.com>
+
+You should not use the template for
+Upstream Author(s): Tobias
+Copyright 2008 Tobias
+
+The path /usr/share/common-licences/GPL contains a spelling error.
+
+It's wrong to reference a compressed license, like this:
+/usr/share/common-licenses/BSD.gz
+
+This path /usr/share/doc/copyright is obsolete.
+
+The path /usr/share/common-licenses/GPL2 is missing a hyphen.
+
+This copyright info was automatically extracted from the perl module.
+It may not be accurate, so you better check the module sources
+if you don't want to get into legal troubles.
+
+References to /usr/share/common-licenses/BSD are deprecated.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
new file mode 100644
index 0000000..e71e0f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
@@ -0,0 +1,25 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Midnight Commander
+Source: http://www.midnight-commander.org/downloads
+Copyright: 1996-2013 Free Software Foundation
+License: Apache-2.0
+
+Files: *
+Copyright: 2004,2007 Oren Ben-Kiki
+License: Apache-2.0
+
+License: Apache-2.0
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright
new file mode 100644
index 0000000..97f8cda
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright
@@ -0,0 +1,5 @@
+This copyright file is for libmythical-perl. The module is licenses under
+the same terms as Perl itself but we've forgotten to add a reference to the
+copy of the Perl license in common-licenses.
+
+Copyright 2010 The Mythical Perl Module Team
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-no-errors.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-no-errors.copyright
new file mode 100644
index 0000000..d31a720
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-no-errors.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright
new file mode 100644
index 0000000..00946fc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright
@@ -0,0 +1,19 @@
+To the extend this is copyrightable (if at all), it is:
+ Copyright 2012 Niels Thykier <niels@thykier.net>.
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 2 is available as
+/usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-php.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-php.copyright
new file mode 100644
index 0000000..338cf09
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-php.copyright
@@ -0,0 +1,151 @@
+A copyright file referring to two problematic PHP licenses.
+
+Copyright 2008 Some Guy.
+
+--------------------------------------------------------------------
+ The PHP License, version 2.02
+Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. The software incorporates the Zend Engine, a product of Zend
+ Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the
+ PHP Association (pursuant to a grant from Zend that can be
+ found at http://www.php.net/license/ZendGrant/) for
+ distribution to you under this license agreement, only as a
+ part of PHP. In the event that you separate the Zend Engine
+ (or any portion thereof) from the rest of the software, or
+ modify the Zend Engine, or any portion thereof, your use of the
+ separated or modified Zend Engine software shall not be governed
+ by this license, and instead shall be governed by the license
+ set forth at http://www.zend.com/license/ZendLicense/.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+
+
+
+--------------------------------------------------------------------
+ The PHP License, version 3.0
+Copyright (c) 1999 - 2003 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ <http://www.php.net/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+This product includes the Zend Engine, freely available at
+<http://www.zend.com>.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright
new file mode 100644
index 0000000..5a24980
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright
@@ -0,0 +1,24 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+
+The full text of this license is in common-licenses/GPL-3
+
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-versionless.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-versionless.copyright
new file mode 100644
index 0000000..c08f501
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-versionless.copyright
@@ -0,0 +1,2 @@
+This package is copyright (c) 2009, Some Name <example@example.org> and is
+licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-w3c.copyright b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-w3c.copyright
new file mode 100644
index 0000000..95c3f40
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/copyright-w3c.copyright
@@ -0,0 +1,95 @@
+This package was debianized by J Random Developer <j.random@example.org> on
+Tue, 8 Nov 2005 00:27:44 +0100.
+
+It was downloaded from http://search.cpan.org/dist/W3C-LinkChecker/
+
+Copyright Holder: the software was developed by following people for the
+ W3C:
+ The W3C Link Checker Team <www-validator@w3.org>
+
+License: according to the README file, the source code of the W3C linkchecker
+is available under the terms of the W3C Software Copyright (compatible with
+the GNU GPL), which can be found at
+
+ http://www.w3.org/Consortium/Legal/copyright-software
+
+and is reproduced below:
+
+
+ W3C � SOFTWARE NOTICE AND LICENSE
+
+ [1]http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or
+ other related items) is being provided by the copyright holders under
+ the following license. By obtaining, using and/or copying this work,
+ you (the licensee) agree that you have read, understood, and will
+ comply with the following terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and
+ without fee or royalty is hereby granted, provided that you include
+ the following on ALL copies of the software and documentation or
+ portions thereof, including modifications:
+ 1. The full text of this NOTICE in a location viewable to users of
+ the redistributed or derivative work.
+ 2. Any pre-existing intellectual property disclaimers, notices, or
+ terms and conditions. If none exist, the [2]W3C Software Short
+ Notice should be included (hypertext is preferred, text is
+ permitted) within the body of any redistributed or derivative
+ code.
+ 3. Notice of any changes or modifications to the files, including the
+ date changes were made. (We recommend you provide URIs to the
+ location from which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+ HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+ DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+ TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific,
+ written prior permission. Title to copyright in this software and any
+ associated documentation will at all times remain with copyright
+ holders.
+
+ ____________________________________
+
+ This formulation of W3C's notice and license became active on December
+ 31 2002. This version removes the copyright ownership notice such that
+ this license can be used with materials other than those owned by the
+ W3C, reflects that ERCIM is now a host of the W3C, includes references
+ to this specific dated version of the license, and removes the
+ ambiguous grant of "use". Otherwise, this version is the same as the
+ [3]previous version and is written so as to preserve the [4]Free
+ Software Foundation's assessment of GPL compatibility and [5]OSI's
+ certification under the [6]Open Source Definition. Please see our
+ [7]Copyright FAQ for common questions about using materials from our
+ site, including specific terms and conditions for packages like
+ libwww, Amaya, and Jigsaw. Other questions about this notice can be
+ directed to [8]site-policy@w3.org.
+
+
+ Joseph Reagle <[9]site-policy@w3.org>
+
+ Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06
+ 16:02:49 slesch Exp $
+
+References
+
+ 1. http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ 2. http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231.html
+ 3. http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ 4. http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses
+ 5. http://www.opensource.org/licenses/W3C.php
+ 6. http://www.opensource.org/docs/definition.php
+ 7. http://www.w3.org/Consortium/Legal/IPR-FAQ
+ 8. mailto:site-policy@w3.org
+ 9. mailto:site-policy@w3.org
+
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/rules b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/rules
new file mode 100755
index 0000000..50ff78f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_installdocs:
+ dh_installdocs
+ install -m 644 debian/copyright-no-errors.copyright debian/copyright-symlink/usr/share/doc/copyright-symlink/symlink
+ rm debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ ln -s symlink debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ gzip -n -9 debian/copyright-compressed/usr/share/doc/copyright-compressed/copyright
+ mkdir -p debian/copyright-old-style/usr/doc/copyright
+ # This should (now) trigger a no-copyright-file (as there is no copyright file
+ # in the right location).
+ mv debian/copyright-old-style/usr/share/doc/copyright-old-style/copyright debian/copyright-old-style/usr/doc/copyright/copyright-old-style
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/fill-values b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/fill-values
new file mode 100644
index 0000000..1bf7f36
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-general
+Description: Test checking of copyright files
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/eval/desc b/t/recipes/checks/debian/copyright/copyright-file-general/eval/desc
new file mode 100644
index 0000000..2c7e36a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-general
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/copyright-file-general/eval/hints b/t/recipes/checks/debian/copyright/copyright-file-general/eval/hints
new file mode 100644
index 0000000..1b8bc03
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-general/eval/hints
@@ -0,0 +1,28 @@
+copyright-symlink (binary): copyright-file-is-symlink [usr/share/doc/copyright-symlink/copyright]
+copyright-poor-common-licenses (binary): copyright-not-using-common-license-for-gpl
+copyright-poor-common-licenses (binary): copyright-does-not-refer-to-common-license-file /GPL-3
+copyright-old-style (binary): no-copyright-file
+copyright-old-fsf (binary): old-fsf-address-in-copyright-file
+copyright-missing-perl-license-pointer (binary): copyright-file-lacks-pointer-to-perl-license
+copyright-missing-apache2-license-pointer (binary): copyright-not-using-common-license-for-apache2
+copyright-misc-errors (binary): helper-templates-in-copyright
+copyright-misc-errors (binary): copyright-refers-to-old-directory
+copyright-misc-errors (binary): copyright-refers-to-nonexistent-license-file usr/share/common-licenses/GPL2
+copyright-misc-errors (binary): copyright-refers-to-incorrect-directory usr/share/common-licences
+copyright-misc-errors (binary): copyright-refers-to-deprecated-bsd-license-file
+copyright-misc-errors (binary): copyright-refers-to-compressed-license usr/share/common-licenses/BSD.gz
+copyright-misc-errors (binary): copyright-has-url-from-dh_make-boilerplate
+copyright-misc-errors (binary): copyright-contains-automatically-extracted-boilerplate
+copyright-full-lgpl (binary): copyright-not-using-common-license-for-lgpl
+copyright-full-gpl-2 (binary): copyright-not-using-common-license-for-lgpl
+copyright-full-gpl-2 (binary): copyright-file-contains-full-gpl-license
+copyright-full-gpl-1 (binary): copyright-not-using-common-license-for-gpl
+copyright-full-gpl (binary): copyright-not-using-common-license-for-gpl
+copyright-full-gpl (binary): copyright-file-contains-full-gpl-license
+copyright-full-gfdl (binary): copyright-not-using-common-license-for-gfdl
+copyright-full-gfdl (binary): copyright-file-contains-full-gfdl-license
+copyright-full-apache-2 (binary): copyright-without-copyright-notice
+copyright-full-apache-2 (binary): copyright-not-using-common-license-for-apache2
+copyright-full-apache-2 (binary): copyright-file-contains-full-apache-2-license
+copyright-crln (binary): copyright-has-crs
+copyright-compressed (binary): copyright-file-compressed [usr/share/doc/copyright-compressed/copyright.gz]
diff --git a/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..c41fc78
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]-bad
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-pedantic
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] -- pedantic edition :)
+ Checks the pedantic version of the versionless copyright file check.
+ .
+ This is a test package designed to exercise some check of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright
new file mode 100644
index 0000000..b59cb92
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright
@@ -0,0 +1,20 @@
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+So far as it is copyrightable at all, this template is
+ Copyright (C) 2008 Frank Lichtenheld <djpig@debian.org>
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation in its version 3.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 3 is available as
+/usr/share/common-licenses/GPL in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-3.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright
new file mode 100644
index 0000000..2591c9b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright
@@ -0,0 +1,21 @@
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+So far as it is copyrightable at all, this template is
+ Copyright (C) 2008 Frank Lichtenheld <djpig@debian.org>
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 2 is available as
+/usr/share/common-licenses/GPL in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/fill-values b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/fill-values
new file mode 100644
index 0000000..1a3cd35
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-license-symlink
+Description: Test the versionless license files checks
diff --git a/t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/desc b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/desc
new file mode 100644
index 0000000..17cc2f4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-license-symlink
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/hints b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/hints
new file mode 100644
index 0000000..39f1b25
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-license-symlink/eval/hints
@@ -0,0 +1,2 @@
+copyright-file-license-symlink-pedantic (binary): copyright-refers-to-symlink-license usr/share/common-licenses/GPL
+copyright-file-license-symlink-bad (binary): copyright-refers-to-versionless-license-file usr/share/common-licenses/GPL
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/control.in
new file mode 100644
index 0000000..00c2ba8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/control.in
@@ -0,0 +1,95 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: copyright-mentions-apache
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for Apache
+ Tests against common license false positive for Apache.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-apache2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for Apache (2)
+ Tests against common license false positive for Apache (2).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-apache3
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for Apache (3)
+ Tests against common license false positive for Apache (3).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-gfdl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for gfdl
+ Tests against common license false positive for gfdl.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-gpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for gpl
+ Tests against common license false positive for gpl.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-lgpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for lgpl
+ Tests against common license false positive for lgpl.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-lgpl2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for lgpl (2)
+ Tests against common license false positive for lgpl (2).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-mentions-perl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks against common license false positive for perl
+ Tests against common license false positive for perl.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache.copyright
new file mode 100644
index 0000000..627f564
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum Apache License , Version 2.0 lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache2.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache2.copyright
new file mode 100644
index 0000000..493add3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache2.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum Apache License Version 2.0 lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache3.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache3.copyright
new file mode 100644
index 0000000..28de0e9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-apache3.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum Apache-2 License lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gfdl.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gfdl.copyright
new file mode 100644
index 0000000..75ac1cb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gfdl.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum GNU Free Documentation License (GFDL) lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gpl.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gpl.copyright
new file mode 100644
index 0000000..a33353a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-gpl.copyright
@@ -0,0 +1,14 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum GNU General Public License (GPL) applies to the changes,
+ .
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl.copyright
new file mode 100644
index 0000000..93a0925
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum GNU Lesser General Public License (LGPL) lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl2.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl2.copyright
new file mode 100644
index 0000000..74632b5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-lgpl2.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum GNU Library General Public License (LGPL) lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-perl.copyright b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-perl.copyright
new file mode 100644
index 0000000..8a757ce
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/debian/copyright-mentions-perl.copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2015 Lintian Maintainers <debian-lint-maint@lists.debian.org>
+License: Mentions-Other-License
+
+License: Mentions-Other-License
+ lorem ipsum
+ lorem ipsum under the same terms as Perl itself lorem ipsum
+ lorem ipsum
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/fill-values b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/fill-values
new file mode 100644
index 0000000..efe9ba6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-non-common-license
+Description: Test for false positive for a common license
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/desc b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/desc
new file mode 100644
index 0000000..07eb186
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/desc
@@ -0,0 +1,8 @@
+Testname: copyright-file-non-common-license
+Test-Against:
+ copyright-not-using-common-license-for-gpl
+ copyright-not-using-common-license-for-gfdl
+ copyright-not-using-common-license-for-lgpl
+ copyright-not-using-common-license-for-apache2
+ copyright-file-lacks-pointer-to-perl-license
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/hints b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-non-common-license/eval/hints
diff --git a/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..fb4666c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/control.in
@@ -0,0 +1,40 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: symlink-to-foreign
+Architecture: all
+Depends: ${misc:Depends}, foreign-package
+Description: [% $description %] (foreign)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Foreign.
+
+Package: symlink-outside-usd
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (usd)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ USD.
+
+Package: symlink-without-depends
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (no-deepnds)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Symlinks without dependency.
diff --git a/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/rules b/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/rules
new file mode 100644
index 0000000..d48f723
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+USD:=usr/share/doc
+%:
+ dh $@
+
+
+override_dh_md5sums:
+ rm -fr debian/symlink-to-foreign/$(USD)/symlink-to-foreign
+ ln -sf foreign-package \
+ debian/symlink-to-foreign/$(USD)/symlink-to-foreign
+ rm -fr debian/symlink-without-depends/$(USD)/symlink-without-depends
+ ln -sf foreign-package \
+ debian/symlink-without-depends/$(USD)/symlink-without-depends
+ # Move all of it to usr/lib/<package>/
+ mkdir -p debian/symlink-outside-usd/usr/lib/
+ mv debian/symlink-outside-usd/$(USD)/symlink-outside-usd \
+ debian/symlink-outside-usd/usr/lib/symlink-outside-usd/
+ # with symlink of course :)
+ ln -s ../../lib/symlink-outside-usd/copyright \
+ debian/symlink-outside-usd/$(USD)/symlink-outside-usd
+ dh_md5sums
diff --git a/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/fill-values b/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/fill-values
new file mode 100644
index 0000000..f286c24
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-symlink
+Description: Test for symlinked doc directories
diff --git a/t/recipes/checks/debian/copyright/copyright-file-symlink/eval/desc b/t/recipes/checks/debian/copyright/copyright-file-symlink/eval/desc
new file mode 100644
index 0000000..4f60c40
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-symlink
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/copyright-file-symlink/eval/hints b/t/recipes/checks/debian/copyright/copyright-file-symlink/eval/hints
new file mode 100644
index 0000000..785fbc3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/copyright-file-symlink/eval/hints
@@ -0,0 +1,3 @@
+symlink-without-depends (binary): usr-share-doc-symlink-without-dependency foreign-package
+symlink-to-foreign (binary): usr-share-doc-symlink-to-foreign-package foreign-package
+symlink-outside-usd (binary): usr-share-doc-symlink-points-outside-of-usr-share-doc ../../lib/symlink-outside-usd/copyright [usr/share/doc/symlink-outside-usd]
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml
new file mode 100644
index 0000000..a823b8d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-invalid.metadata.xml
@@ -0,0 +1 @@
+This is not a valid XML document.
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml
new file mode 100644
index 0000000..31d281e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata-obsolete.metadata.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application/>
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.desktop b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.desktop
new file mode 100644
index 0000000..4c91430
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=appstream-udev-data
+Terminal=true
+Exec=true
+Categories=ConsoleOnly;Game;
+Keywords=Text;
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.dirs b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.dirs
new file mode 100644
index 0000000..402f5d5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.dirs
@@ -0,0 +1,2 @@
+usr/share/metainfo
+usr/share/appdata
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml
new file mode 100644
index 0000000..82294c1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component>
+ <id>appstream-udev-data</id>
+ <metadata_license>MIT</metadata_license>
+ <name>lintian appstream-udev-data</name>
+ <summary>Test AppStream and udev related checks in lintian</summary>
+ <description>
+ <p>
+ This is a test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular
+ package. It may be an empty package.
+ </p>
+ </description>
+ <provides>
+ <modalias>usb:v0000p0001d*</modalias>
+ <modalias>usb:v0000p0002d*</modalias>
+ <modalias>usb:v0000p0003d*</modalias>
+ <modalias>usb:v0000p0004d*</modalias>
+ <modalias>usb:v0000p000ad*</modalias>
+ </provides>
+</component>
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.udev b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.udev
new file mode 100644
index 0000000..e2f2841
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/appstream-metadata.udev
@@ -0,0 +1,14 @@
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0001", \
+ MODE="0666"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0002", \
+ MODE="0660", GROUP="plugdev"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0003", \
+ TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0004", \
+ MODE="0660", GROUP="plugdev", TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="000a", \
+ ID_TEST_DEVICE="1"
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/rules
new file mode 100644
index 0000000..5fb0c35
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/debian/rules
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/$(shell dh_listpackages)
+APPSYNC_DIR=$(DESTDIR)/usr/share/metainfo/
+OBSOLETE_APPSYNC_DIR=$(DESTDIR)/usr/share/appdata/
+UDEV_DIR=$(DESTDIR)/lib/udev/rules.d/
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ install -m 0644 debian/appstream-metadata.metadata.xml $(APPSYNC_DIR)
+ install -m 0644 debian/appstream-metadata-invalid.metadata.xml $(APPSYNC_DIR)
+ install -m 0644 debian/appstream-metadata-obsolete.metadata.xml $(OBSOLETE_APPSYNC_DIR)
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/fill-values
new file mode 100644
index 0000000..cfd5595
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: appstream-metadata
+Description: Test AppStream and udev metadata in binary package
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/desc b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/desc
new file mode 100644
index 0000000..4d651da
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/desc
@@ -0,0 +1,2 @@
+Testname: appstream-metadata
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/hints b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/hints
new file mode 100644
index 0000000..446654b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/appstream-metadata/eval/hints
@@ -0,0 +1 @@
+appstream-metadata (source): inconsistent-appstream-metadata-license debian/appstream-metadata.metadata.xml (mit != gpl-2+) [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/copyright/dep5/components/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/debian/copyright/dep5/components/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/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/fill-values
new file mode 100644
index 0000000..05147bb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/components/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/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/pre-build b/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/build-spec/pre-build
new file mode 100755
index 0000000..93d6006
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/components/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/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/desc b/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/desc
new file mode 100644
index 0000000..22a5236
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/desc
@@ -0,0 +1,3 @@
+Testname: control-file-upstream-signature-missing
+Check: debian/copyright/dep5/components
+# dpkg 1.18.5 required in order to create multiple tarballs with detached signatures
diff --git a/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/hints b/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/hints
new file mode 100644
index 0000000..a4ea69b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/components/control-file-upstream-signature-missing/eval/hints
@@ -0,0 +1,3 @@
+control-file-upstream-signature-missing (source): add-component-copyright signed [debian/copyright]
+control-file-upstream-signature-missing (source): add-component-copyright noext [debian/copyright]
+control-file-upstream-signature-missing (source): add-component-copyright component [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/debian/copyright
new file mode 100644
index 0000000..3c3b46f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+# taken from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801182#8
+# except completed where needed, and with a secure URL
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+Copyright: (C) 2004-2012 NVIDIA Corporation
+License: MooPL
+
+Files: XF86Config-parser/Generate.c
+Copyright: (C) 2005 NVIDIA Corporation
+License: GPL-2+ and other-GPL
+
+Files: debian/*
+Copyright: © 2005 Randall Donald <rdonald@debian.org>
+License: GPL-2+
+
+License: GPL-2+
+ Please call the Free Software Foundation for this license.
+
+License: other-GPL
+ Please call the Free Software Foundation for this license.
diff --git a/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/fill-values
new file mode 100644
index 0000000..f8fe653
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: conjunction-vs-alone
+Description: Uses the same license in a conjuntion and alone (false positive)
diff --git a/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/desc b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/desc
new file mode 100644
index 0000000..bd5b807
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/desc
@@ -0,0 +1,5 @@
+Testname: conjunction-vs-alone
+Check: debian/copyright/dep5
+Test-Against:
+ dep5-copyright-license-name-not-unique
+See-Also: Bug#801182
diff --git a/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/hints b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/conjunction-vs-alone/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..d347ec7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/control.in
@@ -0,0 +1,243 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: copyright-iso-8859-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for non-utf-8-encodings
+ Tests non-UTF-8 encodings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL in full text
+ Tests the tag for including all of the GPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-lgpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of LGPL in full text
+ Tests the tag for including all of the LGPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gfdl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GFDL in full text
+ Tests the tag for including all of the GFDL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-apache-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of Apache 2.0 in full text
+ Tests the tag for including all of the Apache 2.0 license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-misc-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks various errors in copyright files
+ Tests various random errors in copyright files.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-symlink
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: just use a symlink for the copyright file
+ Tests the check for a symlinked copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-compressed
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: include a valid copyright file and compress it
+ Tests the check for a compressed copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-style
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: use an old-style directory structure
+ Tests a copyright file using an old-style directory structure.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL1
+ This should trigger errors as GPL1 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL2
+ This should trigger errors as GPL2 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-php
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks problematic PHP licenses
+ The PHP licenses are problematic for any software that isn't PHP.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-w3c
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of the W3C license
+ The W3C license text claims to be "GPL compatible", which shouldn't
+ trigger warnings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-no-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: this should not emit any error
+ This copyright file should be fine.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-versionless
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks a valid versionless GPL reference
+ Refers to the GPL and truly doesn't mention any version.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-perl-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for perl packages not pointing to common-licenses
+ Packages under the "same terms as Perl itself" should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-apache2-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for apache2 packages not pointing to common-licenses
+ Packages under the apache2-license should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-poor-common-licenses
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks not referring to common licenses
+ Packages should refer to common licenses with full path if they
+ use a common license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-crln
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: check for Windows newlines
+ This package should trigger a tag for having Windows newlines in
+ the copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-agpl-3
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of AGPL-3 in full text
+ This should not trigger a tag as AGPL-3 is not in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-fsf
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks use of old FSF address
+ This should trigger a tag for using old FSF address.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-crln.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-crln.copyright
new file mode 100644
index 0000000..43b49cf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-crln.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright
new file mode 100644
index 0000000..4a0fe1c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright
new file mode 100644
index 0000000..1facebe
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright
@@ -0,0 +1,206 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright
new file mode 100644
index 0000000..f94bb0d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright
@@ -0,0 +1,344 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/gpl-2.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright
new file mode 100644
index 0000000..5dabe34
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright
@@ -0,0 +1,171 @@
+A copy of the GNU Lesser General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/lgpl-3.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright
new file mode 100644
index 0000000..78a493a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright
@@ -0,0 +1,3 @@
+Copyright (C) 2008 Author
+
+Äußerst ärgerlich, falls nicht UTF-8 benutzt würde.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright
new file mode 100644
index 0000000..dceee0e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright
@@ -0,0 +1,22 @@
+This copyright file contains several errors.
+
+Downloaded from <url://example.com>
+
+You should not use the template for
+Upstream Author(s): Tobias
+Copyright 2008 Tobias
+
+The path /usr/share/common-licences/GPL contains a spelling error.
+
+It's wrong to reference a compressed license, like this:
+/usr/share/common-licenses/BSD.gz
+
+This path /usr/share/doc/copyright is obsolete.
+
+The path /usr/share/common-licenses/GPL2 is missing a hyphen.
+
+This copyright info was automatically extracted from the perl module.
+It may not be accurate, so you better check the module sources
+if you don't want to get into legal troubles.
+
+References to /usr/share/common-licenses/BSD are deprecated.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
new file mode 100644
index 0000000..e71e0f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
@@ -0,0 +1,25 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Midnight Commander
+Source: http://www.midnight-commander.org/downloads
+Copyright: 1996-2013 Free Software Foundation
+License: Apache-2.0
+
+Files: *
+Copyright: 2004,2007 Oren Ben-Kiki
+License: Apache-2.0
+
+License: Apache-2.0
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright
new file mode 100644
index 0000000..97f8cda
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright
@@ -0,0 +1,5 @@
+This copyright file is for libmythical-perl. The module is licenses under
+the same terms as Perl itself but we've forgotten to add a reference to the
+copy of the Perl license in common-licenses.
+
+Copyright 2010 The Mythical Perl Module Team
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-no-errors.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-no-errors.copyright
new file mode 100644
index 0000000..d31a720
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-no-errors.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright
new file mode 100644
index 0000000..00946fc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright
@@ -0,0 +1,19 @@
+To the extend this is copyrightable (if at all), it is:
+ Copyright 2012 Niels Thykier <niels@thykier.net>.
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 2 is available as
+/usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-php.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-php.copyright
new file mode 100644
index 0000000..338cf09
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-php.copyright
@@ -0,0 +1,151 @@
+A copyright file referring to two problematic PHP licenses.
+
+Copyright 2008 Some Guy.
+
+--------------------------------------------------------------------
+ The PHP License, version 2.02
+Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. The software incorporates the Zend Engine, a product of Zend
+ Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the
+ PHP Association (pursuant to a grant from Zend that can be
+ found at http://www.php.net/license/ZendGrant/) for
+ distribution to you under this license agreement, only as a
+ part of PHP. In the event that you separate the Zend Engine
+ (or any portion thereof) from the rest of the software, or
+ modify the Zend Engine, or any portion thereof, your use of the
+ separated or modified Zend Engine software shall not be governed
+ by this license, and instead shall be governed by the license
+ set forth at http://www.zend.com/license/ZendLicense/.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+
+
+
+--------------------------------------------------------------------
+ The PHP License, version 3.0
+Copyright (c) 1999 - 2003 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ <http://www.php.net/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+This product includes the Zend Engine, freely available at
+<http://www.zend.com>.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright
new file mode 100644
index 0000000..5a24980
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright
@@ -0,0 +1,24 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+
+The full text of this license is in common-licenses/GPL-3
+
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-versionless.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-versionless.copyright
new file mode 100644
index 0000000..c08f501
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-versionless.copyright
@@ -0,0 +1,2 @@
+This package is copyright (c) 2009, Some Name <example@example.org> and is
+licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-w3c.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-w3c.copyright
new file mode 100644
index 0000000..95c3f40
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/copyright-w3c.copyright
@@ -0,0 +1,95 @@
+This package was debianized by J Random Developer <j.random@example.org> on
+Tue, 8 Nov 2005 00:27:44 +0100.
+
+It was downloaded from http://search.cpan.org/dist/W3C-LinkChecker/
+
+Copyright Holder: the software was developed by following people for the
+ W3C:
+ The W3C Link Checker Team <www-validator@w3.org>
+
+License: according to the README file, the source code of the W3C linkchecker
+is available under the terms of the W3C Software Copyright (compatible with
+the GNU GPL), which can be found at
+
+ http://www.w3.org/Consortium/Legal/copyright-software
+
+and is reproduced below:
+
+
+ W3C � SOFTWARE NOTICE AND LICENSE
+
+ [1]http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or
+ other related items) is being provided by the copyright holders under
+ the following license. By obtaining, using and/or copying this work,
+ you (the licensee) agree that you have read, understood, and will
+ comply with the following terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and
+ without fee or royalty is hereby granted, provided that you include
+ the following on ALL copies of the software and documentation or
+ portions thereof, including modifications:
+ 1. The full text of this NOTICE in a location viewable to users of
+ the redistributed or derivative work.
+ 2. Any pre-existing intellectual property disclaimers, notices, or
+ terms and conditions. If none exist, the [2]W3C Software Short
+ Notice should be included (hypertext is preferred, text is
+ permitted) within the body of any redistributed or derivative
+ code.
+ 3. Notice of any changes or modifications to the files, including the
+ date changes were made. (We recommend you provide URIs to the
+ location from which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+ HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+ DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+ TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific,
+ written prior permission. Title to copyright in this software and any
+ associated documentation will at all times remain with copyright
+ holders.
+
+ ____________________________________
+
+ This formulation of W3C's notice and license became active on December
+ 31 2002. This version removes the copyright ownership notice such that
+ this license can be used with materials other than those owned by the
+ W3C, reflects that ERCIM is now a host of the W3C, includes references
+ to this specific dated version of the license, and removes the
+ ambiguous grant of "use". Otherwise, this version is the same as the
+ [3]previous version and is written so as to preserve the [4]Free
+ Software Foundation's assessment of GPL compatibility and [5]OSI's
+ certification under the [6]Open Source Definition. Please see our
+ [7]Copyright FAQ for common questions about using materials from our
+ site, including specific terms and conditions for packages like
+ libwww, Amaya, and Jigsaw. Other questions about this notice can be
+ directed to [8]site-policy@w3.org.
+
+
+ Joseph Reagle <[9]site-policy@w3.org>
+
+ Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06
+ 16:02:49 slesch Exp $
+
+References
+
+ 1. http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ 2. http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231.html
+ 3. http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ 4. http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses
+ 5. http://www.opensource.org/licenses/W3C.php
+ 6. http://www.opensource.org/docs/definition.php
+ 7. http://www.w3.org/Consortium/Legal/IPR-FAQ
+ 8. mailto:site-policy@w3.org
+ 9. mailto:site-policy@w3.org
+
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/rules
new file mode 100755
index 0000000..50ff78f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_installdocs:
+ dh_installdocs
+ install -m 644 debian/copyright-no-errors.copyright debian/copyright-symlink/usr/share/doc/copyright-symlink/symlink
+ rm debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ ln -s symlink debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ gzip -n -9 debian/copyright-compressed/usr/share/doc/copyright-compressed/copyright
+ mkdir -p debian/copyright-old-style/usr/doc/copyright
+ # This should (now) trigger a no-copyright-file (as there is no copyright file
+ # in the right location).
+ mv debian/copyright-old-style/usr/share/doc/copyright-old-style/copyright debian/copyright-old-style/usr/doc/copyright/copyright-old-style
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/fill-values
new file mode 100644
index 0000000..1bf7f36
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-general
+Description: Test checking of copyright files
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/desc b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/desc
new file mode 100644
index 0000000..aeb8c23
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-general
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/hints b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/hints
new file mode 100644
index 0000000..1247240
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-general/eval/hints
@@ -0,0 +1,16 @@
+copyright-file-general (source): wiki-copyright-format-uri http://wiki.debian.org/Proposals/CopyrightFormat?recall=184 [debian/copyright-crln.copyright]
+copyright-file-general (source): unknown-copyright-format-uri [debian/copyright-no-errors.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-w3c.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-versionless.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-poor-common-licenses.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-php.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-old-fsf.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-missing-perl-license-pointer.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-misc-errors.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-lgpl.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-gpl.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-gpl-2.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-gpl-1.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-gfdl.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-apache-2.copyright]
+copyright-file-general (source): no-dep5-copyright [debian/copyright-full-agpl-3.copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..c41fc78
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]-bad
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-pedantic
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] -- pedantic edition :)
+ Checks the pedantic version of the versionless copyright file check.
+ .
+ This is a test package designed to exercise some check of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright
new file mode 100644
index 0000000..b59cb92
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-bad.copyright
@@ -0,0 +1,20 @@
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+So far as it is copyrightable at all, this template is
+ Copyright (C) 2008 Frank Lichtenheld <djpig@debian.org>
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation in its version 3.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 3 is available as
+/usr/share/common-licenses/GPL in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-3.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright
new file mode 100644
index 0000000..2591c9b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/debian/copyright-file-license-symlink-pedantic.copyright
@@ -0,0 +1,21 @@
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+So far as it is copyrightable at all, this template is
+ Copyright (C) 2008 Frank Lichtenheld <djpig@debian.org>
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 2 is available as
+/usr/share/common-licenses/GPL in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/fill-values
new file mode 100644
index 0000000..1a3cd35
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-license-symlink
+Description: Test the versionless license files checks
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/desc b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/desc
new file mode 100644
index 0000000..dc6fefb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-license-symlink
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/hints b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/hints
new file mode 100644
index 0000000..dff3886
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/copyright-file-license-symlink/eval/hints
@@ -0,0 +1,2 @@
+copyright-file-license-symlink (source): no-dep5-copyright [debian/copyright-file-license-symlink-pedantic.copyright]
+copyright-file-license-symlink (source): no-dep5-copyright [debian/copyright-file-license-symlink-bad.copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/fill-values
new file mode 100644
index 0000000..2c57a2a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-gfdl-invariants
+Description: Check for GFDL invariants sections
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
new file mode 100644
index 0000000..ba8175d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
@@ -0,0 +1,12 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with the Front-Cover texts
+being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
+(a) below. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this @acronym{GNU} manual. Buying copies from the @acronym{FSF}
+supports it in developing @acronym{GNU} and promoting software
+freedom.''
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
new file mode 100644
index 0000000..a0a6634
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
@@ -0,0 +1,6 @@
+\section*{GNU Free Documentation License}\label{SEC:FDL}
+\subsection*{GNU Free Documentation License}\label{SEC:FDL}
+ \subsubsection{GNU Free Documentation License}\label{SEC:FDL}
+
+This document is distributed under the term of the GNU Free Documentation
+License. See, the attached file for copying conditions.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/empty.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
new file mode 100644
index 0000000..8e87b5f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
new file mode 100644
index 0000000..7ad0640
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation.
+
+A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
new file mode 100644
index 0000000..19560b4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
@@ -0,0 +1,125 @@
+{\rtf1\ansi\ansicpg1252\cocoartf102{\fonttbl\f2\fnil Bitstream Charter;\f0\fnil Droid Sans Mono;\f1\fnil FreeSans;}
+{\colortbl;\red0\green0\blue200;\red0\green0\blue0;\red255\green0\blue0;}
+{{\NeXTGraphic iconoGimp3.tif \width1816 \height1309}\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\f0\fs24 \'AC}\f1\fs48 \b\cf1 \'A1Welcome to FisicaLab!\cf0\fs24\b0\cf2 \par
+\par
+\fs20\i Copyright (C) 2009, 2010, 2012 German A. Arias.\par
+ Permission is granted to copy, distribute and/or modify this document\par
+ under the terms of the GNU Free Documentation License, Version 1.3\par
+ or any later version published by the Free Software Foundation;\par
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\par
+ A copy of the license is included in the section entitled "GNU\par
+ Free Documentation License".\fs24\i0 \par
+\par
+\par
+FisicaLab is an educational application to solve physics problems. Its main objective is let the user to focus in physics concepts, leaving aside the mathematical details (FisicaLab take care of them). This allows the user to become familiar with the physical concepts without running the risk of getting lost in mathematical details. And so, when the user gain confidence in applying physical concepts, will be better prepared to solve the problems by hand (with pen and paper). FisicaLab is easy to use and very intuitive. However, in order to take advantage of all its features, we recommend you read first these help files.\par
+\par
+FisicaLab display to two windows, one named \b Modules and elements\b0 and other named \b Chalkboard\b0 . The first of these windows, contain all modules that can be used to solve problems. These modules are grouped by: kinematics, static, dynamics, ... (see image below). You can select one of these groups with the buttons at the top of the window, marked with (1) in the image. When you leave the mouse\rquote s cursor above one of these buttons, a label with the group name is displayed. The buttons marked with (2) let you select the system of units, SI or English. You can see the modules of the selected group inside the box marked with (3). The tabs marked with (4) let you select one of the available modules. The elements of the selected module are displayed inside the box marked with (5). This elements let you set the problems. Inside the box marked with (6) you can write the element\rquote s data (if any element is selected, this box will be empty).\f2 \par
+\par
+ \cf0\f0{{\NeXTGraphic FisicaLabPanel.jpg \width7680 \height10760}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\f1 The window named \b Chalkboard\b0 (see image below), have at the top two buttons, marked with (7). The button at the left let you solve the problem, and the other is to clean the chalkboard. The black box marked with (8) is the chalkboard, where you add the elements to set the problems. You need keep in mind, although you can\rquote t see, that the chalkboard is a grid formed with cells of 50x50 pixels. By default the chalkboard size is 26x18 cells. In \b Preferences\b0 panel you can change the size to a maximum of 100x100 cells (A greater size than the default could be useful for trusses problems). The text view marked with (9) is where FisicaLab show the answer and messages. The checkbox marked with (10) erase the content of the text view before show the next answer or message. If you want keep the previous content, unselect this checkbox. In this case you can add notes to identify the results of the different problems.\f2 \par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic FisicaLabPizarra.jpg \width8540 \height6680}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\par
+\f1\fs28\b Handling the elements\f2\fs24\b0 \par
+ \par
+\f1 To add elements at the chalkboard, do a click above the desired element. The mouse\rquote s cursor will become in an open hand, meaning this that we will add an element. Do a click above the chalkboard in the position where you want the element, the mouse\rquote s cursor will back at its original shape. Each time you add a new element, or select one different, a yellow square will be drawn around the current element. The data of the current element are displayed, for its edition, at panel \b Modules and elements\b0 . When you leave the mouse\rquote s cursor above one element in the chalkboard, a label with the element\rquote s data is displayed. In \b Preferences\b0 panel you can configure the font size of these labels.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic chalkboardProperties.jpg \width9020 \height4600}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+If you want move an element, click above it with the \b Control\b0 key pressed, the mouse\rquote s cursor will become in a close hand, meaning this that we are moving an element. Do click in the new position and the mouse\rquote s cursor will back at its original shape. In other hand, if you want delete an element, do click above it with the \b Shift\b0 key pressed.\par
+\par
+Keep in mind that FisicaLab don\rquote t let you combine elements from different modules. The elements in each module are enough to set a wide variety of problems.\f2 \par
+\par
+\par
+\f1\fs28\b Element data\f2\fs24\b0 \par
+\par
+\f1 When you select an element in the chalkboard, or add a new element, you will see a table at the bottom of the window \b Modules and elements\b0 . With a double click above any field of the second column, you can write the data. FisicaLab supports scientific notation, to use this use the letter E. For example, to write the number 3.45x10-5, write:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 3.45E-5\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All numerical data must be without spaces. For example, the following numbers are wrong:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc - 5.3\par
+7.8E - 8\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, FisicaLab can use many conversion factors. To use these, add the character @ before the conversion. If you have selected the SI system, FisicaLab assumes that all data are in meters, kg, seconds, etc. With the English system, FisicaLab assumes that all data are in feet, pounds, slugs, seconds, etc. (in the English system the mass must be in slugs). For example, if you want write an speed of 75 km/h, use:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 75 @ km/h\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Here, we have one space before and after the character @, but these are for clarity, and are not required. Each module has its how conversion factors, as you can see in the sections that deal about these. \par
+\par
+You can use letters or words to represent the unknown data. If, for example, the final velocity is an unknown data, you can represent this like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc fv\par
+finalv\par
+fvel\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql or any other combination. But, we recommend you use letters or words that are related with the unknown data. Also, the conversion factors can be used with the unknown data. For example, if the time is unknown, and you want this in minutes, write something like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc t @ min\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql The scientific notation can be used with the unknowns, adding the characters #E at the end of the name. For example, for a coefficient of thermal expansion, that is a small value:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc coefficient#E\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, this can be used with a conversion factor. For example, for a very long distance that we want in kilometers:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc distance#E @ km\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All the conversion factors are available in a contextual menu. After select the row of data where want add the factor, a right mouse click open a context menu with all available factors.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic menuContextual.jpg \width6120 \height5320}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+FisicaLab allows mathematical operations directly on the fields where you enter data. Can be carried out operations of addition (+), subtraction (-), multiplication (*) and division (/). Although not allowed to group operations by parentheses. It also provides some useful functions for certain calculations. These are listed below with its description:\par
+\par
+\b cos(ang)\tab \tab Calculates the cosine of the sexagesimal angle "ang".\par
+sin(ang)\tab \tab Calculates the sine of the sexagesimal angle "ang".\par
+tan(ang)\tab \tab Calculates the tangent of the sexagesimal angle "ang".\par
+sqrt(x)\tab \tab Calculates the square root of the number "x".\par
+hypot(a,b)\tab Calculates the hypotenuse of a right triangle whose legs are "a" and "b".\par
+leg(c,a)\tab \tab Calculates the leg of the right triangle whose hypotenuse is "c" and the\par
+\tab \tab \tab other leg is "a".\par
+rd(m1,m2,d)\tab Calculates the distance of the mass "m1" to the center of mass of the\par
+\tab \tab \tab system consisting of the masses "m1" and "m2", which are spaced a\par
+\tab \tab \tab distance "d".\b0 \par
+\par
+The numbers that are passed as parameters to these functions must have consistent units. For example, in the \b hypot()\b0 function both legs must be in the same units, whether centimeters, meters, inches, etc. These functions can be used in operations of addition, subtraction, multiplication and division. In these operations blank spaces are not allowed. Here are some examples:\par
+\par
+\pard\ql\b\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 8*cos(34)\par
+hypot(4,3)-2\par
+rd(3,6,40)*sin(30) @ cm\par
+15*8/hypot(13,8)\b0 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Once entered the operation, FisicaLab will do the calculation and will write the result in the entry. Note that is possible to apply conversion factors. Although these can also be applied after carrying out the calculation.\par
+\par
+The fields where you enter angles do not allow the operations and functions described above. This is because these fields have their own operations and functions. For example, FisicaLab allows write the angles as slopes (a/b), and automatically convert this to sexagesimal angles. What is very useful for problems of trusses.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic angulos.jpg \width5080 \height2660}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+For these fields are available two functions that calculates an angle from other relationships. These functions are:\par
+\par
+\b acos(a/c)\tab Calculates the sexagesimal angle whose cosine is the ratio "a/c".\par
+asin(b/c)\tab \tab Calculates the sexagesimal angle whose sine is the ratio "b/c".\b0 \par
+\par
+If an operation is entered incorrectly, for example if it contains spaces or contains a function with an incorrect number of parameters, FisicaLab will do nothing and will take that string as an unknown.\par
+\par
+\par
+\b Caution:\b0 \cf0\cf3 If, for example, you add a mass conversion factor in a time data, this will cause an error in the solution. And you will not get a message about this error.\cf0\f2\cf2 \par
+\par
+\par
+\f1\fs28\b How it works\f2\fs24\b0 \par
+\par
+\f1 FisicaLab work over the base of \i number of equations = number of unknown data\i0 . In general you don\rquote t need worry about this. But in some cases you will see the error \b "The system is undetermined"\b0 . This occurs when you write numeric data in a field that must be an unknown data. The examples show this cases.\f2 \par
+\par
+\par
+\f1\fs28\b Messages\f2\fs24\b0 \par
+\par
+\f1 FisicaLab write a wide variety of messages in the text view when a problem is wrong. However, you always will see a message about the calculation\rquote s status, as you can see in the following image:\par
+\par
+\pard\ql\f0\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0{{\NeXTGraphic cinema44.tif \width4760 \height800}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+The last line say \b "State = success"\b0 , meaning that the calculation was successful. Any other status different as \i success\i0 , mean that or the set problem don\rquote t have a solution, or an unexpected error occurred.\par
+\par
+} \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
new file mode 100644
index 0000000..b8e14bc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
@@ -0,0 +1,56 @@
+<html lang="en">
+<head>
+<title>Some title</title>
+<!--
+Some verbatim test
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds.-->
+</head>
+<body>
+This is
+ <pre class="sp">
+</pre>
+Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+ <p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being &ldquo;Funding Free Software&rdquo;, the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+&ldquo;GNU Free Documentation License&rdquo;.
+
+ <p>(a) The Front-Cover Text is:
+
+ <p>A GNU Manual
+
+ <p>(b) The Back-Cover Text is:
+
+ <p>You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published raises funds.
+ <pre class="sp">
+
+</pre>
+</body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
new file mode 100644
index 0000000..aa1d8e0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A Debian Manual'',
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
new file mode 100644
index 0000000..e649d17
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with the Invariant Sections being just "GNU
+Manifesto", with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section
+entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
new file mode 100644
index 0000000..8883cac
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
@@ -0,0 +1,25 @@
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
new file mode 100644
index 0000000..fd6ed32
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
@@ -0,0 +1,8 @@
+No ;after version
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts;
+A copy of the license is included in the section entitled
+license GNU Free Documentation License
+
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
new file mode 100644
index 0000000..2be8767
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
@@ -0,0 +1,12 @@
+Published by the Free Software Foundation,
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301, USA
+
+Copyright @copyright{} 2005, 2010, 2014-2016 Sergey Poznyakoff
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover and Back-Cover texts. A copy of
+the license is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
new file mode 100644
index 0000000..73f9c3a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
@@ -0,0 +1,16 @@
+#: C/index.docbook:65(legalnotice/para)
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the <citetitle>GNU Free Documentation License</citetitle>, "
+"Version 1.1 or any later version published by the Free Software Foundation "
+"with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A "
+"copy of the license is <link linkend=\"fdl\">included</link>."
+msgstr ""
+"Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free "
+"Documentation License (GFDL), Version 1.1 oder jeder späteren, von der Free "
+"Software Foundation veröffentlichten Version ohne unveränderbare Abschnitte "
+"sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt "
+"und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem "
+"<ulink type=\"help\" url=\"ghelp:fdl\">Link</ulink> oder in der mit diesem "
+"Handbuch gelieferten Datei COPYING-DOCS."
+
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
new file mode 100644
index 0000000..d3490c4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
@@ -0,0 +1,9 @@
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License
+(FDL), either version 1.2 of the license,
+or (at your option) any later version published by the free software
+foundation (FSF); with no invariant sections,
+with no front-cover text, and with no back-cover texts
+A copy of the license is included in the
+section entitled "GNU Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
new file mode 100644
index 0000000..37449fb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
@@ -0,0 +1,6 @@
+ <para>This document documents free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ (&gpl;), either version 2 of the License, or (at your option) any
+ later version published by the &fsf;.
+ A copy of the license is included in <xref linkend="gpl"/>.
+ </para>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
new file mode 100644
index 0000000..d11e67b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
@@ -0,0 +1,9 @@
+# French translation for SANE backend options
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.1
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, with no Front-Cover Texts, and with
+# no Back-Cover.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
new file mode 100644
index 0000000..6ace5df
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
@@ -0,0 +1,12 @@
+<html>
+<!--- This is a old false positive -->
+<body>
+ <div class="legalnotice">
+ <p>Permission is granted to copy, distribute, and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in <a href="../appendix/fdl.html" title="Appendix&nbsp;G.&nbsp;GNU Free Documentation License">Appendix&nbsp;G, <i>GNU Free Documentation License</i></a>.
+ </p>
+ <p>The example programs in this book are free software; you can redistribute and/or modify them under the terms of the <span class="application">Python</span> license as published by the <span class="application">Python</span> Software Foundation. A copy of the license is included in <a href="../appendix/license.html" title="Appendix&nbsp;H.&nbsp;Python license">Appendix&nbsp;H, <i>Python license</i></a>.
+ </p>
+ </div>
+</body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
new file mode 100644
index 0000000..5291fd3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
@@ -0,0 +1,15 @@
+/* false positive from some package */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant\nSections, with no\nFront-Cover Texts,\nand with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
new file mode 100644
index 0000000..23aa0af
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
@@ -0,0 +1,15 @@
+/* false positive from findutils */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant Sections, with no Front-Cover Texts, and with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
new file mode 100644
index 0000000..ee27a4f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
@@ -0,0 +1,9 @@
+<P align="JUSTIFY" style="margin-bottom: 0cm"><FONT face="tahoma"><FONT size="2">
+Permission is granted to copy, distribute
+and/or modify this document under the terms
+of the GNU Free Documentation License, Version
+1.1 or any later version published by the
+Free Software Foundation; with the Invariant
+Sections being LIST THEIR TITLES, with the
+Front-Cover Texts being LIST, and with the
+Back-Cover Texts being LIST.</FONT></FONT></P> \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
new file mode 100644
index 0000000..426c273
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
@@ -0,0 +1 @@
+<td>Permission is granted to copy, distribute and/or modify this document under the terms of the <b><a href="https://en.wikipedia.org/wiki/en:GNU_Free_Documentation_License" class="extiw" title="w:en:GNU Free Documentation License">GNU Free Documentation License</a></b>, Version 1.2 or any later version published by the <a href="https://en.wikipedia.org/wiki/en:Free_Software_Foundation" class="extiw" title="w:en:Free Software Foundation">Free Software Foundation</a>; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled <i><a href="/wiki/Commons:GNU_Free_Documentation_License,_version_1.2" title="Commons:GNU Free Documentation License, version 1.2">GNU Free Documentation License</a></i>.<span class="licensetpl_link" style="display:none;">http://www.gnu.org/copyleft/fdl.html</span><span class="licensetpl_short" style="display:none;">GFDL</span><span class="licensetpl_long" style="display:none;">GNU Free Documentation License</span><span class="licensetpl_link_req" style="display:none;">true</span><span class="licensetpl_attr_req" style="display:none;">true</span></td> \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
new file mode 100644
index 0000000..fffca61
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
new file mode 100644
index 0000000..fc52ba9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
@@ -0,0 +1,13 @@
+false positive found in license text:
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being @var{list their titles}, with the
+ Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
new file mode 100644
index 0000000..46cbd2f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the<br/> Invariant Sections<br /> being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
new file mode 100644
index 0000000..00e496c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
@@ -0,0 +1,7 @@
+% Permission is granted to copy, distribute and/or modify this document
+% under the terms of the GNU Free Documentation License, Version 1.1 or
+% any later version published by the Free Software Foundation; with no
+% Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+% Texts. A copy of the license is included in the section entitled
+% ``GNU Free Documentation License.''
+%
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
new file mode 100644
index 0000000..f01cd4c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<a class="link" href="#fdl-invariant">Invariant Sections</link>, with no <a class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <a class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</a>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
new file mode 100644
index 0000000..cc7a754
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
@@ -0,0 +1,14 @@
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+Copyright 2008, Free Software Foundation.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.1 or any later version published by the Free Software
+Foundation; with noInvariant Sections (*note fdl-invariant::),
+with no Front-Cover Texts (*note fdl-cover-texts::), and with no
+Back-Cover Texts (*note fdl-cover-texts::). A copy of the license
+is included in the section entitled "GNU Free Documentation
+License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
new file mode 100644
index 0000000..9e77873
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<link class="link" href="#fdl-invariant">Invariant Sections</link>, with no <link class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <link class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</link>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
new file mode 100644
index 0000000..07b3003
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
@@ -0,0 +1,42 @@
+#: C/fdl-appendix.xml:79(sect1/para)
+msgid ""
+"A <_:quote-1/> is a named appendix or a front-matter section of the <_:"
+"link-2/> that deals exclusively with the relationship of the publishers or "
+"authors of the Document to the Document's overall subject (or to related "
+"matters) and contains nothing that could fall directly within that overall "
+"subject. (For example, if the Document is in part a textbook of mathematics, "
+"a Secondary Section may not explain any mathematics.) The relationship could "
+"be a matter of historical connection with the subject or with related "
+"matters, or of legal, commercial, philosophical, ethical or political "
+"position regarding them."
+msgstr ""
+"Une <_:quote-1/> désigne une annexe au <_:link-2/>, ou toute information "
+"indiquant les rapports entre l'auteur ou l'éditeur et le sujet (ou tout "
+"autre sujet connexe) du Document, sans toutefois être en rapport direct avec "
+"le sujet lui-même (par exemple, si le Document est un manuel de "
+"mathématiques, une Section secondaire ne traitera d'aucune notion "
+"mathématique). Cette section peut contenir des informations relatives à "
+"l'historique du Document, des sources documentaires, des dispositions "
+"légales, commerciales, philosophiques, ou des positions éthiques ou "
+"politiques susceptibles de concerner le sujet traité."
+
+
+#: C/fdl-appendix.xml:632(blockquote/para)
+#, fuzzy
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU Free Documentation License, Version 1.1 or any later "
+"version published by the Free Software Foundation; with the <_:link-1/> being "
+"LIST THEIR TITLES, with the <_:link-2/> being LIST, and with the <_:link-3/> "
+"being LIST. A copy of the license is included in the section entitled <_:"
+"quote-4/>."
+msgstr ""
+"Es wird die Erlaubnis gegeben, dieses Dokument zu kopieren, verteilen und/"
+"oder zu verändern unter den Bedingungen der GNU Free Documentation License, "
+"Version 1.1 oder einer späteren, von der Free Software Foundation "
+"veröffentlichten Version; mit den <link linkend=\"fdl-invariant"
+"\">Unveränderlichen Abschnitten</link>. DEREN TITEL AUFGEZÄHLT sind, mit den "
+"<link linkend=\"fdl-cover-texts\">Vorderseitentexten</link>, die AUFGEZÄHLT "
+"sind, und mit den <link linkend=\"fdl-cover-texts\">Rückseitentexten</link>, "
+"die AUFGEZÄHLT sind. Eine Kopie dieser Lizenz ist in dem Abschnitt enthalten, "
+"der mit <quote>GNU Free Documentation License</quote> betitelt ist."
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
new file mode 100644
index 0000000..ae8c973
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
@@ -0,0 +1,102 @@
+Description: hyphen-used-as-minus-sign
+ This manual page seems to contain a hyphen where a minus sign was
+ intended.
+Author: Ruben Molina <rmolina@udea.edu.co>
+Forwarded: no
+Last-Update: 2011-06-25
+
+Index: kst-2.0.3/src/kst/kst.1.txt
+===================================================================
+--- kst-2.0.3.orig/src/kst/kst.1.txt
++++ kst-2.0.3/src/kst/kst.1.txt
+@@ -47,7 +47,7 @@ kst may be run entirely from within its
+ command line arguments are needed. kst has a powerful wizard for
+ easily setting up new plots.
+
+-In the second invocation, kst loads pre-saved plot specifications from the
++In the second invocation, kst loads pre\-saved plot specifications from the
+ file
+ .I kstfile
+ and optionally may override some of the settings in that file.
+@@ -64,7 +64,7 @@ plot all curves in separate plots
+ .TP
+ .B \-a\fR
+ average frames (simple mean) when plotting with
+-.B -s\fR.
++.B \-s\fR.
+ .TP
+ .B \-\-A4\fR
+ use A4 sized paper for printing. Requires
+@@ -90,7 +90,7 @@ and instead use
+ .B \-f\ STARTFRAME\fR
+ begin plotting at
+ .I STARTFRAME
+-frames into the data. Set to -1 to start at
++frames into the data. Set to \-1 to start at
+ .I NUMFRAMES
+ from the end of the data.
+ .TP
+@@ -112,7 +112,7 @@ use US Letter sized paper for printing.
+ .B \-n\ NUMFRAMES\fR
+ plot at most
+ .I NUMFRAMES
+-frames of data. Set to -1 to indicate all of the data.
++frames of data. Set to \-1 to indicate all of the data.
+ .TP
+ .B \-P\ PLOTNAME\fR
+ plot all plots in the plot named
+@@ -145,7 +145,7 @@ frames when plotting.
+ .B \-x\ FIELD\fR
+ use
+ .I FIELD
+-as the X-axis vector.
++as the X\-axis vector.
+ .TP
+ .B \-y\ FIELD\fR
+ plot
+@@ -158,30 +158,30 @@ plot
+ as an image.
+ .SH EXAMPLES
+ Plot all data in column 2 from data.dat.
+- kst data.dat -y 2
++ kst data.dat \-y 2
+
+ Same as above, except only read 20 lines, starting at line 10.
+- kst data.dat -f 10 -n 20 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 2
+
+ also read col 1. One plot per curve.
+- kst data.dat -f 10 -n 20 -y 1 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 1 \-y 2
+
+ Read col 1 from data2.dat and col 1 from data.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-y 1
+
+ Same as above, except read 40 lines starting at 30 in data2.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -f 30 -n 40 -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-f 30 \-n 40 \-y 1
+
+ Specify the X vector and error bars:
+ Plot x = col 1 and Y = col 2 and error flags = col 3 from data.dat
+- kst data.dat -x 1 -e 3 -y 2
++ kst data.dat \-x 1 \-e 3 \-y 2
+
+ Get the X vector from data1.dat, and the Y vector from data2.dat.
+- kst data1.dat -x 1 data2.dat -y 1
++ kst data1.dat \-x 1 data2.dat \-y 1
+
+ Placement:
+ Plot column 2 and column 3 in plot P1 and column 4 in plot P2
+- kst data.dat -P P1 -y 2 -y 3 -P P2 -y 4
++ kst data.dat \-P P1 \-y 2 \-y 3 \-P P2 \-y 4
+ .SH BUGS
+ Please report bugs to either the kst mailing list at
+ .I kst@kde.org
+@@ -198,6 +198,6 @@ Matthew Truch <matt@truch.net>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2 or
+ any later version published by the Free Software Foundation; with no
++Invariant Sections, with no Front\-Cover Texts, and with no Back\-Cover
+ Texts. A copy of the license is included in the `COPYING.DOC' file
+ as part of the kst distribution.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
new file mode 100644
index 0000000..0168da6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
@@ -0,0 +1,6 @@
+<para>Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.2 or any later version published by the Free Software
+Foundation; with &FDLInvariantSections;, with &FDLFrontCoverText;, and
+with &FDLBackCoverText;. A copy of the license is included in <xref linkend="gnu-fdl"/>.</para>
+
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
new file mode 100644
index 0000000..96f3be3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
@@ -0,0 +1,20 @@
+<!-- **********************************************************************
+ 4 more.docbook
+ 5 +++++++++++++++++++++++++++
+ 6 copyright : (C) 2000 - 2010
+ 7 XXXXXX
+ 8 XXXX
+ 9 e-mail : XXXX@XXXX
+ 10 web site : YYYYYY
+ 11 description : something
+ 12
+ 13 ***************************************************************************
+ 14 * Permission is granted to copy, distribute and/or modify this *
+ 15 * document under the terms of the GNU Free Documentation License, *
+ 16 * Version 1.1 or any later version published by the Free Software *
+ 17 * Foundation; with no Invariant Sections, no Front-Cover Texts and *
+ 18 * no Back-Cover Texts. A copy of the license is available on the *
+ 19 * GNU site http://www.gnu.org/licenses/fdl.html or by writing to: *
+ 20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, *
+ 21 * MA 02111-1307, USA. *
+ 22 *********************************************************************** --> \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
new file mode 100644
index 0000000..d082bfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\href{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
new file mode 100644
index 0000000..e193a16
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\hyperlink{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
new file mode 100644
index 0000000..370ea73
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
@@ -0,0 +1,2 @@
+Copyright @sx(c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-\/Cover Texts, and no Back-\/Cover Texts. A copy of the license is included in the section entitled \char`\"{}GNU
+Free Documentation License\char`\"{}. \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
new file mode 100644
index 0000000..107d9fb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation
+License\url{http://www.gnu.org/copyleft/fdl.html}, Version 1.1 or any
+later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the chapter entitled "GNU
+Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
new file mode 100644
index 0000000..8a5eb6e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
@@ -0,0 +1,7 @@
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation. There
+ are no invariant sections. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+ </para>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
new file mode 100644
index 0000000..56939ee
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
new file mode 100644
index 0000000..4e66d64
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
@@ -0,0 +1,19 @@
+Permission is granted to copy, distribute and/or modify the
+documentation for GNU LilyPond under the terms of the GNU Free
+Documentation License as published by the Free Software Foundation,
+either version 1.3, or (at your option) any later version; with no
+Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
+
+A copy of the license is contained in the file COPYING.FDL.
+
+The following exceptions apply:
+
+ * It does not apply to input files (contained in the
+ directory tree Documentation/snippets/); these are in
+ the public domain.
+
+ * It does not apply to any manual which explicitly states
+ another license.
+
+ * It does not apply to the MusicXML unit test suite,
+ which is licensed under the MIT license.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
new file mode 100644
index 0000000..dffaccc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover, and no Back-Cover texts.
+A copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
new file mode 100644
index 0000000..e1fd5a2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
@@ -0,0 +1,28 @@
+<html>
+<body>
+<p>Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+</p>
+<div class="smallexample">
+<pre class="smallexample">Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to
+copy and modify this GNU manual. Buying copies from the FSF
+supports it in developing GNU and promoting software freedom.''
+</pre></div>
+
+<p>If the FSF does not publish this manual on paper, then omit the last
+sentence in (a) that talks about copies from GNU Press. If the FSF is
+not the copyright holder, then replace &lsquo;<samp>FSF</samp>&rsquo; with the appropriate
+name.
+</p>
+</body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
new file mode 100644
index 0000000..633e758
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
@@ -0,0 +1,13 @@
+Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+
+@smallexample
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
new file mode 100644
index 0000000..b5c2685
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
@@ -0,0 +1,7 @@
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.1
+@c or any later version published by the Free Software Foundation;
+@c with no Invariant Sections, with no
+@c Front-Cover Texts, and with no Back-Cover Texts.
+@c A copy of the license is included in the section entitled ``GNU
+@c Free Documentation License''.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
new file mode 100644
index 0000000..a58e927
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
@@ -0,0 +1,13 @@
+ /*****************************************************************************/
+/** \mainpage Cal3D API Reference
+ * <center>
+ * <p>
+ * Permission is granted to copy, distribute and/or modify this document
+ * under the terms of the GNU Free Documentation License, Version 1.1 or
+ * any later version published by the Free Software Foundation;
+ * with no Invariant Sections, no Front-Cover Texts and
+ * no Back-Cover Texts;
+ * A copy of the license is included in the section entitled
+ * \link license "GNU Free Documentation License" \endlink .
+ * </center>
+ *****************************************************************************/
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
new file mode 100644
index 0000000..d9c1b54
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
new file mode 100644
index 0000000..dd888e2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; no Invariant Sections, no Front-Cover Texts,
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
new file mode 100644
index 0000000..747d2e0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<!-- Permission is granted to copy, distribute and/or modify this document -->
+<!-- under the terms of the GNU Free Documentation License, Version 1.3 or -->
+<!-- any later version published by the Free Software Foundation; with no -->
+<!-- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -->
+<!-- a copy of the license is included under /home -->
+</body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
new file mode 100644
index 0000000..f33dfcd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
@@ -0,0 +1,7 @@
+.\" manual page for blaze, a command wrapper for BlazeBlogger
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.3 or
+.\" any later version published by the Free Software Foundation; with no
+.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+.\" A copy of the license is included below. \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
new file mode 100644
index 0000000..22ae575
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-
+Cover Texts and
+no Back-
+Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8 b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
new file mode 100644
index 0000000..5a4df93
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
@@ -0,0 +1,9 @@
+.\" Copyright (C) XXX
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.1
+.\" or any later version published by the Free Software Foundation;
+.\" with the Invariant Sections being no invariant sections, with the
+.\" Front-Cover Texts being no front-cover texts, and with the Back-Cover
+.\" Texts being no back-cover texts. A copy of the license is included with
+.\" this package in the file "COPYING.DOC." \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
new file mode 100644
index 0000000..3241276
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, Front-Cover or Back-Cover texts. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''. \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
new file mode 100644
index 0000000..950d936
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
@@ -0,0 +1,4 @@
+Permission is granted to copy, distribute and/or modify this document under \
+the terms of the GNU Free Documentation License, Version 1.1 or any later \
+version published by the Free Software Foundation; without any Invariant \
+Sections. A copy of the license is included in the file GFDL.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
new file mode 100644
index 0000000..96037ac
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
@@ -0,0 +1,8 @@
+Parted 2.13 version with strange grammar.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the no Invariant Sections, with the no Front-Cover Texts, and
+with no Back-Cover Texts. A copy of the license is included in the
+file, COPYING.DOC.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
new file mode 100644
index 0000000..f1d17a5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
@@ -0,0 +1,15 @@
+<para>För att använda GNU Free Documentation License för ett dokument du har skrivit, inkludera en kopia av licensen [det engelska originalet] i dokumentet och placera följande copyrightklausul omedelbart efter titelsidan:</para>
+
+<blockquote>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with the <link linkend="fdl-invariant">Invariant Sections</link> being LIST
+ THEIR TITLES, with the <link linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST,
+ and with the <link linkend="fdl-cover-texts">Back-Cover
+ Texts</link> being LIST. A copy of the license is included in
+ the section entitled <quote>GNU Free Documentation
+ License</quote>.
+ </para>
+</blockquote>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
new file mode 100644
index 0000000..73e379b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
@@ -0,0 +1,7 @@
+1,6d0
+< Permission is granted to copy, distribute and/or modify this
+< document under the terms of the GNU Free Documentation License,
+< version 1.3 or any later version published by the Free Software
+< Foundation; with no Invariant Sections, no Front-Cover Texts and
+< no Back-Cover Texts. A copy of the license is included in the
+< section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
new file mode 100644
index 0000000..600653e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
@@ -0,0 +1,18 @@
+*** make-stds.texi 2013-02-17 21:44:05.485250349 +0100
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
+***************
+*** 1,7 ****
+! @c Permission is granted to copy, distribute and/or modify this document
+! @c under the terms of the GNU Free Documentation License, Version 1.1
+! @c or any later version published by the Free Software Foundation;
+! @c with no Invariant Sections, with no
+! @c Front-Cover Texts, and with no Back-Cover Texts.
+! @c A copy of the license is included in the section entitled ``GNU
+! @c Free Documentation License''.
+--- 1,6 ----
+! Permission is granted to copy, distribute and/or modify this
+! document under the terms of the GNU Free Documentation License,
+! version 1.3 or any later version published by the Free Software
+! Foundation; with no Invariant Sections, no Front-Cover Texts and
+! no Back-Cover Texts. A copy of the license is included in the
+! section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
new file mode 100644
index 0000000..db6e4f9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
@@ -0,0 +1,9 @@
+--- /dev/null 2013-05-15 23:18:30.206386135 +0200
++++ normal.texi 2012-12-20 21:23:22.829397718 +0100
+@@ -0,0 +1,6 @@
++Permission is granted to copy, distribute and/or modify this
++document under the terms of the GNU Free Documentation License,
++version 1.3 or any later version published by the Free Software
++Foundation; with no Invariant Sections, no Front-Cover Texts and
++no Back-Cover Texts. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
new file mode 100644
index 0000000..347adff
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
@@ -0,0 +1,9 @@
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
++++ /dev/null 2013-05-15 23:18:30.206386135 +0200
+@@ -1,6 +0,0 @@
+-Permission is granted to copy, distribute and/or modify this
+-document under the terms of the GNU Free Documentation License,
+-version 1.3 or any later version published by the Free Software
+-Foundation; with no Invariant Sections, no Front-Cover Texts and
+-no Back-Cover Texts. A copy of the license is included in the
+-section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
new file mode 100644
index 0000000..f64bfaf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
@@ -0,0 +1,7 @@
+0a1,6
+> Permission is granted to copy, distribute and/or modify this
+> document under the terms of the GNU Free Documentation License,
+> version 1.3 or any later version published by the Free Software
+> Foundation; with no Invariant Sections, no Front-Cover Texts and
+> no Back-Cover Texts. A copy of the license is included in the
+> section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
new file mode 100644
index 0000000..2ab3103
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
@@ -0,0 +1,19 @@
+@copying
+This manual documents PHP mode version @value{version} for
+use with GNU Emacs.
+
+Copyright @copyright{} 2008 Aaron S. Hawley
+
+@quotation
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, and no
+Cover Texts. A copy of the license is included in the
+section entitled ``Copying This Manual.''
+
+A copy of the license is also available from the Free
+Software Foundation Web site at
+@url{http://www.gnu.org/licenses/fdl.html}.
+
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
new file mode 100644
index 0000000..8a0594a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
@@ -0,0 +1,7 @@
+Some user ident with pipe (|)
+ | Permission is granted to copy, distribute and/or modify this
+ | document under the terms of the GNU Free Documentation License,
+ | version 1.3 or any later version published by the Free Software
+ | Foundation; with no Invariant Sections, no Front-Cover Texts and
+ | no Back-Cover Texts. A copy of the license is included in the
+ | section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
new file mode 100644
index 0000000..58edd5b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no <quote>Back-Cover Texts</quote>.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
new file mode 100644
index 0000000..112c734
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
@@ -0,0 +1,9 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation;
+with no <quote>invariant sections</quote>, <quote>front-cover texts</quote> or <quote>back-cover texts</quote>,
+each as defined in the license.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
new file mode 100644
index 0000000..ff31741
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
@@ -0,0 +1,11 @@
+<div style="text-align: justify;"><span class="text">
+Permission is granted to copy, distribute
+and/or modify this document under the terms of the GNU Free
+Documentation License, Version 1.2 or any later version published by
+the Free Software Foundation; with no Invariant Sections Texts.</span><br>
+
+
+<span class="text">A copy of the license is included here below.</span><br>
+
+
+</div>
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
new file mode 100644
index 0000000..c803dc5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
@@ -0,0 +1,9 @@
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'' and ``GNU Free
+Documentation License'', with no Front-Cover Texts, and with no
+Back-Cover Texts. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
new file mode 100644
index 0000000..e0a41a6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
@@ -0,0 +1,8 @@
+#~ "Permission is granted to copy, distribute and/or modify this document "
+#~ "under the terms of the GNU Free Documentation License, Version 1.1 or any "
+#~ "later version published by the Free Software Foundation; with the <link "
+#~ "linkend=\"fdl-invariant\">Invariant Sections</link> being LIST THEIR "
+#~ "TITLES, with the <link linkend=\"fdl-cover-texts\">Front-Cover Texts</"
+#~ "link> being LIST, and with the <link linkend=\"fdl-cover-texts\">Back-"
+#~ "Cover Texts</link> being LIST. A copy of the license is included in the "
+#~ "section entitled <quote>GNU Free Documentation License</quote>." \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
new file mode 100644
index 0000000..9327024
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with no Front-Cover texts
+and with no Back-Cover Texts. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
new file mode 100644
index 0000000..b6e1240
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
@@ -0,0 +1,8 @@
+% note the end is not classical...
+% Copyright (c) 2002--2004 Philipp Lehman
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, version 1.2, with no
+% invariant sections, with no front-cover texts, and no back-cover texts. This
+% document is distributed in the hope that it will be useful, but without any
+% warranty; without even the implied warranty of merchantability or fitness for
+% a particular purpose.
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
new file mode 100644
index 0000000..d4b872c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
@@ -0,0 +1,6 @@
+Copyright © 2002--2004 Philipp Lehman
+
+Permission is granted to copy, distribute and\slash or modify this document under the terms of the GNU Free Documentation License, version 1.2, with no invariant sections, no front-cover texts, and no back-cover texts.
+
+A copy of the license is included in the appendix.
+
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
new file mode 100644
index 0000000..2043b26
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
@@ -0,0 +1,21 @@
+/*
+ * :permissions ("Permission is granted to copy, distribute and/or modify this document"
+ * "under the terms of the GNU Free Documentation License, Version 1.1"
+ * "or any later version published by the Free Software Foundation;"
+ * "with the Invariant Sections being:"
+ * ""
+ * " The GNU General Public License"
+ * " The GNU Free Documentation License"
+ * ""
+ * "with the Front-Cover Texts being"
+ * ""
+ * " (none),"
+ * ""
+ * "and with the Back-Cover Texts being"
+ * ""
+ * " (none)."
+ * ""
+ * "A copy of the license is included in the section entitled \"GNU"
+ * "Free Documentation License\"."))
+ *
+ */ \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
new file mode 100644
index 0000000..6f634a6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the <ulink url="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
+License</ulink>, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
new file mode 100644
index 0000000..8463a59
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
@@ -0,0 +1,7 @@
+This is ok
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no Invariant Sections, Front-
+ or Back-Cover Texts. A copy of the license is included in the
+ section entitled "{GNU Free Documentation License}".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
new file mode 100644
index 0000000..8782eed
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Section, no Front-Cover Text and
+no Back-Cover Text. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1 b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
new file mode 100644
index 0000000..83a4acf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
@@ -0,0 +1,12 @@
+.\"
+.\" Manpage example
+.\"
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
+Free Software\*(R", the Front-Cover texts being (a) (see below), and with
+the Back-Cover Texts being (b) (see below). A copy of the license is
+included in the \fIgfdl\fR\|(7) man page.
+.PP
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/desc b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/desc
new file mode 100644
index 0000000..4120bab
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-gfdl-invariants
+Test-Against: inconsistent-appstream-metadata-license
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/hints b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/cruft-gfdl-invariants/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/debian/copyright
new file mode 100644
index 0000000..4d23981
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/debian/copyright
@@ -0,0 +1,30 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Comment: This is part of the testsuite of lintian.
+ See the file debian/copyright
+ in the lintian source directory for more details.
+Files-Excluded: some-file
+
+Files: *
+Copyright:
+ 2008 Frank Lichtenheld <djpig@debian.org>
+ 2009 Russ Allbery <rra@debian.org>
+ 2018 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/fill-values
new file mode 100644
index 0000000..d8608d8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: excluded-files-in-native
+Description: Field Excluded-Files is present in native package.
+Version: 1.7+ds
diff --git a/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/orig/some-file b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/orig/some-file
new file mode 100644
index 0000000..c3f1f94
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/build-spec/orig/some-file
@@ -0,0 +1 @@
+SOME CONTENTS.
diff --git a/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/desc b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/desc
new file mode 100644
index 0000000..275bc5e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: excluded-files-in-native
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/hints b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/hints
new file mode 100644
index 0000000..7c683c1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/excluded-files-in-native/eval/hints
@@ -0,0 +1 @@
+excluded-files-in-native (source): source-ships-excluded-file some-file [debian/copyright:8]
diff --git a/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/debian/copyright
new file mode 100644
index 0000000..fa106e9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/debian/copyright
@@ -0,0 +1,13 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Comment: Test case from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=888001#33
+
+Files: *
+License: GPL-3
+Copyright: © 2014 Mattia Rizzolo <mattia@mapreri.org>
+
+Files: file-does-not-exist
+License: GPL-3
+Copyright: © 2014 Mattia Rizzolo <mattia@mapreri.org>
+
+License: GPL-3
+ Please call the Free Software Foundation for a copy of the license.
diff --git a/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/fill-values
new file mode 100644
index 0000000..7072fa8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: file-does-not-exist
+Description: Files paragraph references a file that does not exist.
diff --git a/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/desc b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/desc
new file mode 100644
index 0000000..dc5290f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/desc
@@ -0,0 +1,3 @@
+Testname: file-does-not-exist
+Check: debian/copyright/dep5
+See-Also: Bug#888001
diff --git a/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/hints b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/hints
new file mode 100644
index 0000000..71b2f98
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/file-does-not-exist/eval/hints
@@ -0,0 +1 @@
+file-does-not-exist (source): superfluous-file-pattern file-does-not-exist [debian/copyright:8]
diff --git a/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/debian/copyright
new file mode 100644
index 0000000..7935e5d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Files-Included:
+ include-this
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/fill-values
new file mode 100644
index 0000000..1e3bf97
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: lone-files-included
+Skeleton: upload-non-native
+Description: Filex-Included without Files-Excluded
diff --git a/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/desc b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/desc
new file mode 100644
index 0000000..bc56f04
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-included-covers-none
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/hints b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/hints
new file mode 100644
index 0000000..51d4974
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/files-included-covers-none/eval/hints
@@ -0,0 +1 @@
+lone-files-included (source): superfluous-file-pattern (Files-Included) include-this [debian/copyright:2]
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..4546c62
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/desc b/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/desc
new file mode 100644
index 0000000..03b128e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/hints b/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/hints
new file mode 100644
index 0000000..ecc0a09
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (source): no-dep5-copyright [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/post-test b/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/desc b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/desc
new file mode 100644
index 0000000..639a1ff
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/hints b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/hints
new file mode 100644
index 0000000..a925398
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/hints
@@ -0,0 +1 @@
+debconf (source): no-dep5-copyright [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/post-test b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..3e86b96
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses non-UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/desc b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/desc
new file mode 100644
index 0000000..97216a4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/hints b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/hints
new file mode 100644
index 0000000..07ecb25
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (source): no-dep5-copyright [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/post-test b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/desc b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/desc
new file mode 100644
index 0000000..3dbe0ee
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/hints b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/hints
new file mode 100644
index 0000000..6140e09
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (source): no-dep5-copyright [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/post-test b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/debian/copyright
new file mode 100644
index 0000000..7c7783e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/debian/copyright
@@ -0,0 +1,38 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: wolfssl
+Upstream-Contact: David Garske <david@wolfssl.com>
+Source: https://github.com/wolfssl/wolfssl/releases
+
+Files:
+ COPYING
+Copyright:
+ 1989, 1991 Free Software Foundation, Inc.
+License: No-Modify
+
+Files:
+ debian/*
+Copyright:
+ 2014-2019 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+
+
+License: No-Modify
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
diff --git a/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/fill-values
new file mode 100644
index 0000000..5874162
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: license-file-listed-in-debian-copyright
+Description: License files do not need entries in d/copyright.
diff --git a/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/orig/COPYING b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/orig/COPYING
new file mode 100644
index 0000000..c1e7ac7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/build-spec/orig/COPYING
@@ -0,0 +1 @@
+TERMS OF SOFTWARE LICENSE
diff --git a/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/desc b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/desc
new file mode 100644
index 0000000..6cb134b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/desc
@@ -0,0 +1,2 @@
+Testname: license-file-listed-in-debian-copyright
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/hints b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/hints
new file mode 100644
index 0000000..fc2d25f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/hints
@@ -0,0 +1,2 @@
+license-file-listed-in-debian-copyright (source): update-debian-copyright 2019 vs CHANGELOG-YEAR [debian/copyright:14]
+license-file-listed-in-debian-copyright (source): license-file-listed-in-debian-copyright COPYING [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/post-test b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/license-file-listed-in-debian-copyright/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/debian/copyright
new file mode 100644
index 0000000..7935e5d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Files-Included:
+ include-this
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/fill-values
new file mode 100644
index 0000000..00de540
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: lone-files-included
+Skeleton: upload-non-native
+Description: File-Included without Files-Excluded
diff --git a/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/.matches b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/.matches
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/.matches
diff --git a/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/include-this b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/include-this
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/lone-files-included/build-spec/orig/include-this
diff --git a/t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/desc b/t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/desc
new file mode 100644
index 0000000..26325ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/desc
@@ -0,0 +1,2 @@
+Testname: lone-files-included
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/hints b/t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/hints
new file mode 100644
index 0000000..e6e0778
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/lone-files-included/eval/hints
@@ -0,0 +1 @@
+lone-files-included (source): file-included-already include-this [debian/copyright:2]
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/copyright
new file mode 100644
index 0000000..5dd52d9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/copyright
@@ -0,0 +1,34 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Comment: This is part of the testsuite of lintian.
+ See the file debian/copyright
+ in the lintian source directory for more details.
+
+Files: *
+Copyright:
+ 2019 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+
+Files: will-be-empty/*
+Copyright:
+ 2019 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/remove-file.patch b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/remove-file.patch
new file mode 100644
index 0000000..e572221
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/remove-file.patch
@@ -0,0 +1,10 @@
+Description: Remove the sole file in a directory
+ Should not trigger wildcard-matches-nothing-in-dep5-copyright.
+ For more information, please see Bug#844274.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/will-be-empty/removed-by-patch
++++ /dev/null
+@@ -1 +0,0 @@
+-SOME CONTENT
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/series b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/series
new file mode 100644
index 0000000..56b4ebb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/debian/patches/series
@@ -0,0 +1 @@
+remove-file.patch
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/fill-values
new file mode 100644
index 0000000..43ae87c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: patch-empties-directory
+Description: False positive for wildcard-matches-nothing-in-dep5-copyright
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/orig/will-be-empty/removed-by-patch b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/orig/will-be-empty/removed-by-patch
new file mode 100644
index 0000000..2517541
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/build-spec/orig/will-be-empty/removed-by-patch
@@ -0,0 +1 @@
+SOME CONTENT
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/desc b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/desc
new file mode 100644
index 0000000..d1935af
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/desc
@@ -0,0 +1,5 @@
+Testname: patch-empties-directory
+Check: debian/copyright/dep5
+Test-Against:
+ superfluous-file-pattern
+See-Also: Bug#844274
diff --git a/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/hints b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/patch-empties-directory/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/copyright
new file mode 100644
index 0000000..3ff770b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/copyright
@@ -0,0 +1,11 @@
+# taken from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=905747#5
+# but split up for each of the two conditions
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+ debian/patches/*
+Copyright: (C) 2018 Niels Thykier
+License: License1
+
+License: License1
+ Please call the author for this license.
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/patches/a.patch b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/patches/a.patch
new file mode 100644
index 0000000..294a68c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/debian/patches/a.patch
@@ -0,0 +1 @@
+A PATCH
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/fill-values
new file mode 100644
index 0000000..412ba3e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: redundant-wildcard
+Description: Two wildcards matching the same file in the same section
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/orig/a-file b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/orig/a-file
new file mode 100644
index 0000000..fadb157
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/build-spec/orig/a-file
@@ -0,0 +1 @@
+A FILE
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/desc b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/desc
new file mode 100644
index 0000000..dd15714
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/desc
@@ -0,0 +1,3 @@
+Testname: redundant-wildcard
+Check: debian/copyright/dep5
+See-Also: Bug#905747
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/hints b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/hints
new file mode 100644
index 0000000..21912fa
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/hints
@@ -0,0 +1,2 @@
+redundant-wildcard (source): update-debian-copyright 2018 vs CHANGELOG-YEAR [debian/copyright:7]
+redundant-wildcard (source): redundant-globbing-patterns (* debian/patches/*) for debian/patches/a.patch [debian/copyright:5]
diff --git a/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/post-test b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/redundant-wildcard/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/debian/copyright
new file mode 100644
index 0000000..e6d13df
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/debian/copyright
@@ -0,0 +1,23 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Files-Excluded: gone
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/fill-values
new file mode 100644
index 0000000..3ccc5e1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: repackaged-upstream-sources-not-advertised
+Skeleton: upload-non-native
+Description: Sources indicate they have been repacked
diff --git a/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/desc b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/desc
new file mode 100644
index 0000000..e233fa0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/desc
@@ -0,0 +1,2 @@
+Testname: repackaged-upstream-sources-not-advertised
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/hints b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/hints
new file mode 100644
index 0000000..e4baeb6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/repackaged-upstream-sources-not-advertised/eval/hints
@@ -0,0 +1 @@
+repackaged-upstream-sources-not-advertised (source): repackaged-source-not-advertised [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/debian/copyright
new file mode 100644
index 0000000..6cd1530
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/debian/copyright
@@ -0,0 +1,47 @@
+# taken from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=779676#30
+# except for secure URL immediately below and block comment further down
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: ipe-tools
+Upstream-Contact: Otfried Cheong <otfried@ipe.airpost.net>
+Source: https://github.com/otfried/ipe-tools
+
+Files: figtoipe/*
+Copyright: 1993-2008, Otfried Cheong <otfried@ipe.airpost.net>
+ 2007-2015, Alexander Bürger <acfb@users.sf.net>
+License: GPL-2+
+ See /usr/share/common-licenses/GPL-2
+
+Files: ipe5toxml/*
+Copyright: 2005, Otfried Cheong <otfried@ipe.airpost.net>
+ 2015, Alexander Bürger <acfb@users.sf.net>
+License: public-domain
+ While the source code of svgtoipe does not include any licensing
+ information, the homepage of the ipe tool,
+ http://ipe7.sourceforge.net/, includes a hyperlink to the ipe-tools
+ github repository and says:
+ ``The source to ipe5toxml is in the public domain.''
+
+Files: pdftoipe/*
+Copyright: 2003-2014, Otfried Cheong <otfried@ipe.airpost.net>
+License: GPL-2
+ See /usr/share/common-licenses/GPL-2
+Comment:
+ the pdftoipe source code itself is GPL-2+, but it is linked
+ to GPL-2 only libpoppler so it must be GPL-2, too
+
+Files: svgtoipe/*
+Copyright: 2009-2014, Otfried Cheong <otfried@ipe.airpost.net>
+License: GPL-3+
+ See /usr/share/common-licenses/GPL-3
+
+#Files: matplotlib/*
+#Copyright: 2014, Otfried Cheong <otfried@ipe.airpost.net>
+# 2014, Soyeon Baek
+#Comment:
+# not included in debian package
+
+Files: debian/*
+Copyright: 2005-2011 Steve Robbins <smr@debian.org>
+ 2008-2015, Alexander Bürger <acfb@users.sf.net>
+License: GPL-2+
+ See /usr/share/common-licenses/GPL-2
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/fill-values
new file mode 100644
index 0000000..dc39a8e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: reuse-identifier-in-files
+Description: Reuse a license idenfifier in another Files paragraph (false positive)
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/figtoipe/a-file b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/figtoipe/a-file
new file mode 100644
index 0000000..01d2c17
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/figtoipe/a-file
@@ -0,0 +1 @@
+SOME TEXT
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/ipe5toxml/a-file b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/ipe5toxml/a-file
new file mode 100644
index 0000000..01d2c17
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/ipe5toxml/a-file
@@ -0,0 +1 @@
+SOME TEXT
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/pdftoipe/a-file b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/pdftoipe/a-file
new file mode 100644
index 0000000..01d2c17
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/pdftoipe/a-file
@@ -0,0 +1 @@
+SOME TEXT
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/svgtoipe/a-file b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/svgtoipe/a-file
new file mode 100644
index 0000000..01d2c17
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/build-spec/orig/svgtoipe/a-file
@@ -0,0 +1 @@
+SOME TEXT
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/desc b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/desc
new file mode 100644
index 0000000..155b1fd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/desc
@@ -0,0 +1,5 @@
+Testname: reuse-identifier-in-files
+Check: debian/copyright/dep5
+Test-Against:
+ dep5-copyright-license-name-not-unique
+See-Also: Bug#779676
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/hints b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/hints
new file mode 100644
index 0000000..f7d27de
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/hints
@@ -0,0 +1 @@
+reuse-identifier-in-files (source): update-debian-copyright 2015 vs CHANGELOG-YEAR [debian/copyright:44]
diff --git a/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/post-test b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reuse-identifier-in-files/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/debian/copyright
new file mode 100644
index 0000000..1c5f619
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/debian/copyright
@@ -0,0 +1,19 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+Copyright: (C) 2018 Niels Thykier
+License: License1
+
+Files: debian/*
+Copyright: (C) 2018 Niels Thykier
+License: License1
+
+Files: debian/*
+Copyright: (C) 2019 Niels Thykier
+License: License2
+
+License: License1
+ Please call the author for this license.
+
+License: License2
+ Please call the author for this license.
diff --git a/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/fill-values
new file mode 100644
index 0000000..6c5f8e6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: reused-wildcard
+Description: Same globbing pattern appears twice
diff --git a/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/orig/a-file b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/orig/a-file
new file mode 100644
index 0000000..fadb157
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/build-spec/orig/a-file
@@ -0,0 +1 @@
+A FILE
diff --git a/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/desc b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/desc
new file mode 100644
index 0000000..e3f0551
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/desc
@@ -0,0 +1,3 @@
+Testname: reused-wildcard
+Check: debian/copyright/dep5
+See-Also: Bug#905747
diff --git a/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/hints b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/hints
new file mode 100644
index 0000000..0b4a3c5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/hints
@@ -0,0 +1,2 @@
+reused-wildcard (source): update-debian-copyright 2019 vs CHANGELOG-YEAR [debian/copyright:12]
+reused-wildcard (source): duplicate-globbing-patterns debian/* (lines 7 11) [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/post-test b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/reused-wildcard/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/debian/copyright
new file mode 100644
index 0000000..0c826f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/debian/copyright
@@ -0,0 +1,20 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2014, somebody1
+License: gplv1
+ something
+
+Files: space
+Copyright: 2014, somebody1
+License: some space license
+ something
+
+Files: debian/*
+Copyright: 2014, somebody1
+License: bsd
+ this is a valid license short name
+
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/fill-values
new file mode 100644
index 0000000..105eb13
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-bad-short-name
+Description: Test for bad short name
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/README b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/README
new file mode 100644
index 0000000..1a9d2ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/README
@@ -0,0 +1 @@
+trivial
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/space b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/space
new file mode 100644
index 0000000..82cbe04
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/build-spec/orig/space
@@ -0,0 +1 @@
+space \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/desc
new file mode 100644
index 0000000..2f2c957
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-bad-short-name
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/hints
new file mode 100644
index 0000000..2c8bb8a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/hints
@@ -0,0 +1,4 @@
+source-copyright-bad-short-name (source): update-debian-copyright 2014 vs CHANGELOG-YEAR [debian/copyright:17]
+source-copyright-bad-short-name (source): space-in-std-shortname-in-dep5-copyright some space license [debian/copyright:13]
+source-copyright-bad-short-name (source): invalid-short-name-in-dep5-copyright gplv1 [debian/copyright:8]
+source-copyright-bad-short-name (source): invalid-short-name-in-dep5-copyright bsd [debian/copyright:18]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-bad-short-name/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/debian/copyright
new file mode 100644
index 0000000..d890aa5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/debian/copyright
@@ -0,0 +1,22 @@
+Format: <VERSIONED_FORMAT_URL>
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/fill-values
new file mode 100644
index 0000000..e23273f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-boilerplate-uri
+Description: Test for boilerplate DEP 5-like URI
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/desc
new file mode 100644
index 0000000..d581f76
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-boilerplate-uri
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/hints
new file mode 100644
index 0000000..81f7b8c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-boilerplate-uri/eval/hints
@@ -0,0 +1 @@
+source-copyright-boilerplate-uri (source): boilerplate-copyright-format-uri <VERSIONED_FORMAT_URL> [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/debian/copyright
new file mode 100644
index 0000000..eadfebd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/debian/copyright
@@ -0,0 +1,113 @@
+Format: https://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174
+Upstream-Name: Doohickey
+Upstream-Maintainer: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Comment: I'm a bogus paragraph.
+
+Files: a/*, b/*
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+
+Files: c
+Copyright: 2010 J. Random Hacker <j.r.hacker@example.com>
+
+Files: d
+License: GPL-3
+
+Files: 5
+License: MIT
+Copyright: 2010 J. Random Hacker <j.r.hacker@example.com>
+
+Comment: Oops, missing a Files for this paragraph.
+License: BSD-3
+Copyright: 2010 J. Random Hacker <j.r.hacker@example.com>
+
+Files: debian/*
+License: GPL-2 or GPL-3 with Font
+Copyright: 2010 J. Random Hacker <j.r.hacker@example.com>
+
+Files: debian/copyright
+License: GPL-2 or GPL-3 with Font exception
+Copyright: 2012 J. Random Hacker <j.r.hacker@example.com>
+
+Files: debian/control
+License: GPL-2 and custom
+Copyright: 2010 J. Random Hacker <j.r.hacker@example.com>
+
+License: custom
+ Custom test license
+
+
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+
+License: GPL-3 with Font
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+ .
+ A fake font exception.
+
+License: GPL-3 with Font exception
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+ .
+ Fake font exception.
+
+License: GPL-3
+
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the “Softwareâ€), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/fill-values
new file mode 100644
index 0000000..e433ff8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-dep5-general
+Description: Test for various errors in DEP 5 copyright files
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/desc
new file mode 100644
index 0000000..677c43f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: source-copyright-dep5-general
+Test-Against:
+ incomplete-creative-commons-license
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/hints
new file mode 100644
index 0000000..341af85
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/hints
@@ -0,0 +1,14 @@
+source-copyright-dep5-general (source): update-debian-copyright 2012 vs CHANGELOG-YEAR [debian/copyright:32]
+source-copyright-dep5-general (source): unused-license-paragraph-in-dep5-copyright expat [debian/copyright:96]
+source-copyright-dep5-general (source): unknown-paragraph-in-dep5-copyright [debian/copyright:6]
+source-copyright-dep5-general (source): obsolete-field-in-dep5-copyright Upstream-Maintainer Upstream-Contact [debian/copyright:3]
+source-copyright-dep5-general (source): missing-license-text-in-dep5-copyright GPL-3 [debian/copyright:94]
+source-copyright-dep5-general (source): missing-license-text-in-dep5-copyright BSD-3 [debian/copyright:23]
+source-copyright-dep5-general (source): missing-license-paragraph-in-dep5-copyright mit [debian/copyright:19]
+source-copyright-dep5-general (source): missing-license-paragraph-in-dep5-copyright gpl-3 [debian/copyright:16]
+source-copyright-dep5-general (source): missing-field-in-dep5-copyright License [debian/copyright:12]
+source-copyright-dep5-general (source): missing-field-in-dep5-copyright Copyright [debian/copyright:15]
+source-copyright-dep5-general (source): comma-separated-files-in-dep5-copyright [debian/copyright:8]
+source-copyright-dep5-general (source): bad-exception-format-in-dep5-copyright gpl-3 with font [debian/copyright:58]
+source-copyright-dep5-general (source): bad-exception-format-in-dep5-copyright gpl-3 with font [debian/copyright:27]
+source-copyright-dep5-general (source): ambiguous-paragraph-in-dep5-copyright [debian/copyright:22]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-general/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/debian/copyright
new file mode 100644
index 0000000..30c307c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/debian/copyright
@@ -0,0 +1,22 @@
+Format: https://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/fill-values
new file mode 100644
index 0000000..1b5f611
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-dep5-syntax-error
+Description: Test for DEP 5 syntax error
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/desc
new file mode 100644
index 0000000..f6cc383
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-dep5-syntax-error
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/hints
new file mode 100644
index 0000000..0f97785
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-dep5-syntax-error/eval/hints
@@ -0,0 +1 @@
+source-copyright-dep5-syntax-error (source): syntax-error-in-dep5-copyright Continuation line not in paragraph (line 13). Missing a dot on the previous line? [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/debian/copyright
new file mode 100644
index 0000000..f9d5a2a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/debian/copyright
@@ -0,0 +1,97 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+License:
+
+Files: *
+Copyright:
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+
+Files: debian/*
+Copyright: 2014, somebodydebian
+License:
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+
+Files:
+Copyright: 2014, somebody
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+
+License:
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+
+Files: m4/
+Copyright: 2014, somebodym4
+License:
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
+
+License:
+
+License: GPL-2+
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/fill-values
new file mode 100644
index 0000000..2fe94f7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-empty-field
+Description: Test for empty required field
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/desc
new file mode 100644
index 0000000..d43f068
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-empty-field
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/hints
new file mode 100644
index 0000000..e826004
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/hints
@@ -0,0 +1,12 @@
+source-copyright-empty-field (source): update-debian-copyright 2014 vs CHANGELOG-YEAR [debian/copyright:26]
+source-copyright-empty-field (source): superfluous-file-pattern m4/ [debian/copyright:77]
+source-copyright-empty-field (source): superfluous-file-pattern * [debian/copyright:7]
+source-copyright-empty-field (source): missing-license-text-in-dep5-copyright [debian/copyright:95]
+source-copyright-empty-field (source): missing-license-text-in-dep5-copyright GPL-2+ [debian/copyright:97]
+source-copyright-empty-field (source): missing-field-in-dep5-copyright (empty field) Files [debian/copyright:43]
+source-copyright-empty-field (source): missing-field-in-dep5-copyright (empty field) Copyright [debian/copyright:8]
+source-copyright-empty-field (source): empty-short-license-in-dep5-copyright [debian/copyright:95]
+source-copyright-empty-field (source): empty-short-license-in-dep5-copyright [debian/copyright:79]
+source-copyright-empty-field (source): empty-short-license-in-dep5-copyright [debian/copyright:61]
+source-copyright-empty-field (source): empty-short-license-in-dep5-copyright [debian/copyright:5]
+source-copyright-empty-field (source): empty-short-license-in-dep5-copyright [debian/copyright:27]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-empty-field/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/debian/copyright
new file mode 100644
index 0000000..fa0be7c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/debian/copyright
@@ -0,0 +1,19 @@
+Files-Excluded: foo
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/fill-values
new file mode 100644
index 0000000..c5f012e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: source-copyright-files-excluded-without-copyright-format-1.0
+Skeleton: upload-non-native
+Description: Test for files listed in Files-Excluded
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/desc
new file mode 100644
index 0000000..0956e4c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-files-excluded-without-copyright-format-1.0
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/hints
new file mode 100644
index 0000000..2ca5e41
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-files-excluded-without-copyright-format-1.0/eval/hints
@@ -0,0 +1,2 @@
+source-copyright-files-excluded-without-copyright-format-1.0 (source): no-dep5-copyright [debian/copyright]
+source-copyright-files-excluded-without-copyright-format-1.0 (source): files-excluded-without-copyright-format-1.0 [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/debian/copyright
new file mode 100644
index 0000000..b8340bc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/debian/copyright
@@ -0,0 +1,28 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: filea
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/fill-values
new file mode 100644
index 0000000..fad1ab9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-global-files-wildcard-not-first-paragraph
+Description: Test for Files: * not being the first paragraph
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/orig/filea b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/orig/filea
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/build-spec/orig/filea
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/desc
new file mode 100644
index 0000000..6cdbf3c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-global-files-wildcard-not-first-paragraph
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/hints
new file mode 100644
index 0000000..9ec205d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-global-files-wildcard-not-first-paragraph/eval/hints
@@ -0,0 +1,2 @@
+source-copyright-global-files-wildcard-not-first-paragraph (source): superfluous-file-pattern filea [debian/copyright:6]
+source-copyright-global-files-wildcard-not-first-paragraph (source): global-files-wildcard-not-first-paragraph-in-dep5-copyright [debian/copyright:10]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/debian/copyright
new file mode 100644
index 0000000..9102490
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/debian/copyright
@@ -0,0 +1,81 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: opensesame
+Upstream-Contact: Sebastiaan Mathot <s.mathot@cogsci.nl>
+Source: http://www.cogsci.nl/software/opensesame
+
+Files: *
+Copyright: 2010-2012, Sebastiaan Mathot
+License: GPL-3
+ On Debian systems, the full text of the GNU General Public License version 3
+ can be found in the file `/usr/share/common-licenses/GPL-3'.
+
+Files: resources/*.ttf
+Copyright: 2006, 2007, 2008, 2009, 2010 Google Corp.
+ Droid is a trademark of Google Corp.
+License: Apache-2.0
+ On Debian systems, the complete text of the Apache License Version 2.0
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
+
+Files: sounds/*
+Copyright: 1996-2011, The K Desktop Environment project http://www.kde.org
+ Marc-Andre Lureau <marcandre.lureau@gmail.com>
+ Bastien Nocera <hadess@hadess.net>
+ Andreas Hyden <a.hyden@cyberpoint.se>
+ Seth Nickell <snickell@stanford.edu>
+ Ronald Bultje <rbultje@ronald.bitfreak.net>
+ Thomas Vander Stichele <thomas at apestaart dot org>
+ William Jon McCann <jmccann@redhat.com>
+License: GPL-2+
+ The full text of the GNU General Public License version 2 is available on
+ Debian systems in /usr/share/common-licenses/GPL-2.
+
+Files: resources/theme/default/os-custom-icons/*
+Copyright: 2010-2011, Matthieu James <matthieu.james@gmail.com>
+ 2012, Daniel Fore <Daniel.p.Fore@gmail.com>
+ 2012, Sebastiaan Mathot <s.mathot@cogsci.nl>
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: debian/*
+Copyright: 2010-2012, Sebastiaan Mathot <s.mathot@cogsci.nl>
+ 2011, Michael Hanke <mih@debian.org>
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/ts/it_IT.ts
+Copyright: 2012, Andrea Epifani <andreaepifani@gmail.com>
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/ts/fr_FR.ts
+Copyright: 2013, Romain Monfollet
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/ts/zh_CN.ts
+Copyright: 2013, Gabriel Chan
+ 2013, Jerry Li
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/templates/eco_alt_template.opensesame.tar.gz
+Copyright: 2012, Francisco Javier Moreno-Martinez
+ 2012, Pedro R. Montoro
+ 2012, Sebastiaan Mathot <s.mathot@cogsci.nl>
+License: CC-BY-3.0
+
+License: CC-BY-3.0
+ You are free:
+ to Share (to copy, distribute and transmit the work) and
+ to Remix (to adapt the work) under the following conditions:
+ .
+ Attribution — You must attribute the work in the manner specified by the
+ author or licensor (but not in any way that suggests that they endorse you
+ or your use of the work).
+ .
+ For more information, see http://creativecommons.org/licenses/by/3.0/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/fill-values
new file mode 100644
index 0000000..444f75c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-incomplete-creative-commons-b
+Description: Test for incomplete Creative Commons licenses (b)
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/desc
new file mode 100644
index 0000000..b65de32
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-incomplete-creative-commons-b
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/hints
new file mode 100644
index 0000000..6abf857
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/hints
@@ -0,0 +1,11 @@
+source-copyright-incomplete-creative-commons-b (source): update-debian-copyright 2012 vs CHANGELOG-YEAR [debian/copyright:41]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern sounds/* [debian/copyright:19]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern resources/ts/zh_CN.ts [debian/copyright:59]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern resources/ts/it_IT.ts [debian/copyright:47]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern resources/ts/fr_FR.ts [debian/copyright:53]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern resources/theme/default/os-custom-icons/* [debian/copyright:32]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern resources/templates/eco_alt_template.opensesame.tar.gz [debian/copyright:66]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern resources/*.ttf [debian/copyright:12]
+source-copyright-incomplete-creative-commons-b (source): superfluous-file-pattern * [debian/copyright:6]
+source-copyright-incomplete-creative-commons-b (source): insecure-copyright-format-uri http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ [debian/copyright]
+source-copyright-incomplete-creative-commons-b (source): incomplete-creative-commons-license cc-by-3.0 [debian/copyright:72]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/post-test
new file mode 100644
index 0000000..daec1dd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-b/eval/post-test
@@ -0,0 +1,4 @@
+/: dep5-copyright-license-name-not-unique .*/ d
+/: unused-file-paragraph-in-dep5-copyright .*/ d
+/: wildcard-matches-nothing-in-dep5-copyright .*/ d
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/debian/copyright
new file mode 100644
index 0000000..9a5bb1d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/debian/copyright
@@ -0,0 +1,379 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: flycheck
+Source: https://github.com/flycheck/flycheck
+
+Files: *
+Copyright: (C) 2012-2015, 2016, 2017 Sebastian Wiesner and Flycheck contributors
+ (C) 2013, 2014 Free Software Foundation, Inc.
+License: GPL-3+
+
+Files: doc/*
+Copyright: (C) 2012-2015, 2017 Sebastian Wiesner and Flycheck contributors
+License: CC-BY-SA-4.0
+
+Files: doc/*.py
+Copyright: (C) 2012-2015 Sebastian Wiesner and Flycheck contributors
+License: GPL-3+
+
+Files: flycheck.svg
+Copyright: (C) 2014-2015 Sebastian Wiesner
+License: CC-BY-SA-4.0
+
+Files: debian/*
+Copyright: (C) 2016, 2017 Sean Whitton <spwhitton@spwhitton.name>
+License: GPL-3+
+
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 3 can be found in "/usr/share/common-licenses/GPL-3
+
+License: CC-BY-SA-4.0
+ By exercising the Licensed Rights (defined below), You accept and agree
+ to be bound by the terms and conditions of this Creative Commons
+ Attribution-ShareAlike 4.0 International Public License ("Public
+ License"). To the extent this Public License may be interpreted as a
+ contract, You are granted the Licensed Rights in consideration of Your
+ acceptance of these terms and conditions, and the Licensor grants You
+ such rights in consideration of benefits the Licensor receives from
+ making the Licensed Material available under these terms and
+ conditions.
+ .
+ Section 1 – Definitions.
+ .
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material and in
+ which the Licensed Material is translated, altered, arranged,
+ transformed, or otherwise modified in a manner requiring permission
+ under the Copyright and Similar Rights held by the Licensor. For
+ purposes of this Public License, where the Licensed Material is a
+ musical work, performance, or sound recording, Adapted Material is
+ always produced where the Licensed Material is synched in timed
+ relation with a moving image.
+ .
+ b. Adapter's License means the license You apply to Your Copyright and
+ Similar Rights in Your contributions to Adapted Material in accordance
+ with the terms and conditions of this Public License.
+ .
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative Commons
+ as essentially the equivalent of this Public License.
+ .
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights specified
+ in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+ .
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright Treaty
+ adopted on December 20, 1996, and/or similar international agreements.
+ .
+ f. Exceptions and Limitations means fair use, fair dealing, and/or any
+ other exception or limitation to Copyright and Similar Rights that
+ applies to Your use of the Licensed Material.
+ .
+ g. License Elements means the license attributes listed in the name of
+ a Creative Commons Public License. The License Elements of this Public
+ License are Attribution and ShareAlike.
+ .
+ h. Licensed Material means the artistic or literary work, database, or
+ other material to which the Licensor applied this Public License.
+ .
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to all
+ Copyright and Similar Rights that apply to Your use of the Licensed
+ Material and that the Licensor has authority to license.
+ .
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+ .
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such as
+ reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the public
+ may access the material from a place and at a time individually chosen
+ by them.
+ .
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of the
+ Council of 11 March 1996 on the legal protection of databases, as
+ amended and/or succeeded, as well as other essentially equivalent
+ rights anywhere in the world.
+ .
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+ .
+ Section 2 – Scope.
+ .
+ a. License grant.
+ .
+ 1. Subject to the terms and conditions of this Public License, the
+ Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to exercise the
+ Licensed Rights in the Licensed Material to:
+ .
+ A. reproduce and Share the Licensed Material, in whole or in part; and
+ .
+ B. produce, reproduce, and Share Adapted Material.
+ .
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public License does
+ not apply, and You do not need to comply with its terms and
+ conditions.
+ .
+ 3. Term. The term of this Public License is specified in Section 6(a).
+ .
+ 4. Media and formats; technical modifications allowed. The Licensor
+ authorizes You to exercise the Licensed Rights in all media and
+ formats whether now known or hereafter created, and to make technical
+ modifications necessary to do so. The Licensor waives and/or agrees
+ not to assert any right or authority to forbid You from making
+ technical modifications necessary to exercise the Licensed Rights,
+ including technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License, simply
+ making modifications authorized by this Section 2(a)(4) never produces
+ Adapted Material.
+ .
+ 5. Downstream recipients.
+ .
+ A. Offer from the Licensor – Licensed Material. Every recipient of the
+ Licensed Material automatically receives an offer from the Licensor to
+ exercise the Licensed Rights under the terms and conditions of this
+ Public License.
+ .
+ B. Additional offer from the Licensor – Adapted Material. Every
+ recipient of Adapted Material from You automatically receives an offer
+ from the Licensor to exercise the Licensed Rights in the Adapted
+ Material under the conditions of the Adapter’s License You apply.
+ .
+ C. No downstream restrictions. You may not offer or impose any
+ additional or different terms or conditions on, or apply any Effective
+ Technological Measures to, the Licensed Material if doing so restricts
+ exercise of the Licensed Rights by any recipient of the Licensed
+ Material.
+ .
+ 6. No endorsement. Nothing in this Public License constitutes or may
+ be construed as permission to assert or imply that You are, or that
+ Your use of the Licensed Material is, connected with, or sponsored,
+ endorsed, or granted official status by, the Licensor or others
+ designated to receive attribution as provided in Section
+ 3(a)(1)(A)(i).
+ .
+ b. Other rights.
+ .
+ 1. Moral rights, such as the right of integrity, are not licensed
+ under this Public License, nor are publicity, privacy, and/or other
+ similar personality rights; however, to the extent possible, the
+ Licensor waives and/or agrees not to assert any such rights held by
+ the Licensor to the limited extent necessary to allow You to exercise
+ the Licensed Rights, but not otherwise.
+ .
+ 2. Patent and trademark rights are not licensed under this Public
+ License.
+ .
+ 3. To the extent possible, the Licensor waives any right to collect
+ royalties from You for the exercise of the Licensed Rights, whether
+ directly or through a collecting society under any voluntary or
+ waivable statutory or compulsory licensing scheme. In all other cases
+ the Licensor expressly reserves any right to collect such royalties.
+ .
+ Section 3 – License Conditions.
+ .
+ Your exercise of the Licensed Rights is expressly made subject to the
+ following conditions.
+ .
+ a. Attribution.
+ .
+ 1. If You Share the Licensed Material (including in modified form),
+ You must:
+ .
+ A. retain the following if it is supplied by the Licensor with the
+ Licensed Material:
+ .
+ i. identification of the creator(s) of the Licensed Material and any
+ others designated to receive attribution, in any reasonable manner
+ requested by the Licensor (including by pseudonym if designated);
+ .
+ ii. a copyright notice;
+ .
+ iii. a notice that refers to this Public License;
+ .
+ iv. a notice that refers to the disclaimer of warranties;
+ .
+ v. a URI or hyperlink to the Licensed Material to the extent
+ reasonably practicable;
+ .
+ B. indicate if You modified the Licensed Material and retain an
+ indication of any previous modifications; and
+ .
+ C. indicate the Licensed Material is licensed under this Public
+ License, and include the text of, or the URI or hyperlink to, this
+ Public License.
+ .
+ 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable
+ manner based on the medium, means, and context in which You Share the
+ Licensed Material. For example, it may be reasonable to satisfy the
+ conditions by providing a URI or hyperlink to a resource that includes
+ the required information.
+ .
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent reasonably
+ practicable.
+ .
+ b. ShareAlike.In addition to the conditions in Section 3(a), if You
+ Share Adapted Material You produce, the following conditions also
+ apply.
+ .
+ 1. The Adapter’s License You apply must be a Creative Commons license
+ with the same License Elements, this version or later, or a BY-SA
+ Compatible License.
+ .
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition in any
+ reasonable manner based on the medium, means, and context in which You
+ Share Adapted Material.
+ .
+ 3. You may not offer or impose any additional or different terms or
+ conditions on, or apply any Effective Technological Measures to,
+ Adapted Material that restrict exercise of the rights granted under
+ the Adapter's License You apply.
+ .
+ Section 4 – Sui Generis Database Rights.
+ .
+ Where the Licensed Rights include Sui Generis Database Rights that
+ apply to Your use of the Licensed Material:
+ .
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to
+ extract, reuse, reproduce, and Share all or a substantial portion of
+ the contents of the database;
+ .
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database Rights,
+ then the database in which You have Sui Generis Database Rights (but
+ not its individual contents) is Adapted Material, including for
+ purposes of Section 3(b); and
+ .
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database. For the
+ avoidance of doubt, this Section 4 supplements and does not replace
+ Your obligations under this Public License where the Licensed Rights
+ include other Copyright and Similar Rights.
+ .
+ Section 5 – Disclaimer of Warranties and Limitation of Liability.
+ .
+ a. Unless otherwise separately undertaken by the Licensor, to the
+ extent possible, the Licensor offers the Licensed Material as-is and
+ as-available, and makes no representations or warranties of any kind
+ concerning the Licensed Material, whether express, implied, statutory,
+ or other. This includes, without limitation, warranties of title,
+ merchantability, fitness for a particular purpose, non-infringement,
+ absence of latent or other defects, accuracy, or the presence or
+ absence of errors, whether or not known or discoverable. Where
+ disclaimers of warranties are not allowed in full or in part, this
+ disclaimer may not apply to You.
+ .
+ b. To the extent possible, in no event will the Licensor be liable to
+ You on any legal theory (including, without limitation, negligence) or
+ otherwise for any direct, special, indirect, incidental,
+ consequential, punitive, exemplary, or other losses, costs, expenses,
+ or damages arising out of this Public License or use of the Licensed
+ Material, even if the Licensor has been advised of the possibility of
+ such losses, costs, expenses, or damages. Where a limitation of
+ liability is not allowed in full or in part, this limitation may not
+ apply to You.
+ .
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent possible,
+ most closely approximates an absolute disclaimer and waiver of all
+ liability.
+ .
+ Section 6 – Term and Termination.
+ .
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with this
+ Public License, then Your rights under this Public License terminate
+ automatically.
+ .
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+ .
+ 1. automatically as of the date the violation is cured, provided it is
+ cured within 30 days of Your discovery of the violation; or
+ .
+ 2. upon express reinstatement by the Licensor.
+ .
+ c. For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations of
+ this Public License.
+ .
+ d. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so will
+ not terminate this Public License.
+ .
+ e. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+ .
+ Section 7 – Other Terms and Conditions.
+ .
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+ .
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and independent
+ of the terms and conditions of this Public License.
+ .
+ Section 8 – Interpretation.
+ .
+ a. For the avoidance of doubt, this Public License does not, and shall
+ not be interpreted to, reduce, limit, restrict, or impose conditions
+ on any use of the Licensed Material that could lawfully be made
+ without permission under this Public License.
+ .
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+ .
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+ .
+ d. Nothing in this Public License constitutes or may be interpreted as
+ a limitation upon, or waiver of, any privileges and immunities that
+ apply to the Licensor or You, including from the legal processes of
+ any jurisdiction or authority.
+ .
+ Creative Commons is not a party to its public
+ licenses. Notwithstanding, Creative Commons may elect to apply one of
+ its public licenses to material it publishes and in those instances
+ will be considered the “Licensor.†Except for the limited purpose of
+ indicating that material is shared under a Creative Commons public
+ license or as otherwise permitted by the Creative Commons policies
+ published at creativecommons.org/policies, Creative Commons does not
+ authorize the use of the trademark “Creative Commons†or any other
+ trademark or logo of Creative Commons without its prior written
+ consent including, without limitation, in connection with any
+ unauthorized modifications to any of its public licenses or any other
+ arrangements, understandings, or agreements concerning use of licensed
+ material. For the avoidance of doubt, this paragraph does not form
+ part of the public licenses. Creative Commons may be contacted at
+ creativecommons.org.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/fill-values
new file mode 100644
index 0000000..7f24052
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-incomplete-creative-commons-unrel
+Description: Test for incomplete Creative Commons licenses (good)
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/desc
new file mode 100644
index 0000000..7d96eef
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: source-copyright-incomplete-creative-commons-unrel
+Test-Against:
+ incomplete-creative-commons-license
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/hints
new file mode 100644
index 0000000..3669c43
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/hints
@@ -0,0 +1,5 @@
+source-copyright-incomplete-creative-commons-unrel (source): update-debian-copyright 2017 vs CHANGELOG-YEAR [debian/copyright:23]
+source-copyright-incomplete-creative-commons-unrel (source): superfluous-file-pattern flycheck.svg [debian/copyright:18]
+source-copyright-incomplete-creative-commons-unrel (source): superfluous-file-pattern doc/*.py [debian/copyright:14]
+source-copyright-incomplete-creative-commons-unrel (source): superfluous-file-pattern doc/* [debian/copyright:10]
+source-copyright-incomplete-creative-commons-unrel (source): superfluous-file-pattern * [debian/copyright:5]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/post-test
new file mode 100644
index 0000000..279aa2e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons-unrel/eval/post-test
@@ -0,0 +1,3 @@
+/: unused-file-paragraph-in-dep5-copyright .*/ d
+/: wildcard-matches-nothing-in-dep5-copyright .*/ d
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/debian/copyright
new file mode 100644
index 0000000..641bb23
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/debian/copyright
@@ -0,0 +1,79 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: opensesame
+Upstream-Contact: Sebastiaan Mathot <s.mathot@cogsci.nl>
+Source: http://www.cogsci.nl/software/opensesame
+
+Files: *
+Copyright: 2010-2012, Sebastiaan Mathot
+License: GPL-3
+ On Debian systems, the full text of the GNU General Public License version 3
+ can be found in the file `/usr/share/common-licenses/GPL-3'.
+
+Files: resources/*.ttf
+Copyright: 2006, 2007, 2008, 2009, 2010 Google Corp.
+ Droid is a trademark of Google Corp.
+License: Apache-2.0
+ On Debian systems, the complete text of the Apache License Version 2.0
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
+
+Files: sounds/*
+Copyright: 1996-2011, The K Desktop Environment project http://www.kde.org
+ Marc-Andre Lureau <marcandre.lureau@gmail.com>
+ Bastien Nocera <hadess@hadess.net>
+ Andreas Hyden <a.hyden@cyberpoint.se>
+ Seth Nickell <snickell@stanford.edu>
+ Ronald Bultje <rbultje@ronald.bitfreak.net>
+ Thomas Vander Stichele <thomas at apestaart dot org>
+ William Jon McCann <jmccann@redhat.com>
+License: GPL-2+
+ The full text of the GNU General Public License version 2 is available on
+ Debian systems in /usr/share/common-licenses/GPL-2.
+
+Files: resources/theme/default/os-custom-icons/*
+Copyright: 2010-2011, Matthieu James <matthieu.james@gmail.com>
+ 2012, Daniel Fore <Daniel.p.Fore@gmail.com>
+ 2012, Sebastiaan Mathot <s.mathot@cogsci.nl>
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: debian/*
+Copyright: 2010-2012, Sebastiaan Mathot <s.mathot@cogsci.nl>
+ 2011, Michael Hanke <mih@debian.org>
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/ts/it_IT.ts
+Copyright: 2012, Andrea Epifani <andreaepifani@gmail.com>
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/ts/fr_FR.ts
+Copyright: 2013, Romain Monfollet
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/ts/zh_CN.ts
+Copyright: 2013, Gabriel Chan
+ 2013, Jerry Li
+License: GPL-3
+ The full text of the GNU General Public License version 3 is available on
+ Debian systems in /usr/share/common-licenses/GPL-3.
+
+Files: resources/templates/eco_alt_template.opensesame.tar.gz
+Copyright: 2012, Francisco Javier Moreno-Martinez
+ 2012, Pedro R. Montoro
+ 2012, Sebastiaan Mathot <s.mathot@cogsci.nl>
+License: CC-BY-3.0
+ You are free:
+ to Share (to copy, distribute and transmit the work) and
+ to Remix (to adapt the work) under the following conditions:
+ .
+ Attribution — You must attribute the work in the manner specified by the
+ author or licensor (but not in any way that suggests that they endorse you
+ or your use of the work).
+ .
+ For more information, see http://creativecommons.org/licenses/by/3.0/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/fill-values
new file mode 100644
index 0000000..83a1c12
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-incomplete-creative-commons
+Description: Test for incomplete Creative Commons licenses
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/desc
new file mode 100644
index 0000000..58178db
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-incomplete-creative-commons
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/hints
new file mode 100644
index 0000000..2ffb3e6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/hints
@@ -0,0 +1,11 @@
+source-copyright-incomplete-creative-commons (source): update-debian-copyright 2012 vs CHANGELOG-YEAR [debian/copyright:41]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern sounds/* [debian/copyright:19]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern resources/ts/zh_CN.ts [debian/copyright:59]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern resources/ts/it_IT.ts [debian/copyright:47]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern resources/ts/fr_FR.ts [debian/copyright:53]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern resources/theme/default/os-custom-icons/* [debian/copyright:32]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern resources/templates/eco_alt_template.opensesame.tar.gz [debian/copyright:66]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern resources/*.ttf [debian/copyright:12]
+source-copyright-incomplete-creative-commons (source): superfluous-file-pattern * [debian/copyright:6]
+source-copyright-incomplete-creative-commons (source): insecure-copyright-format-uri http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ [debian/copyright]
+source-copyright-incomplete-creative-commons (source): incomplete-creative-commons-license cc-by-3.0 [debian/copyright:70]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/post-test
new file mode 100644
index 0000000..daec1dd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-incomplete-creative-commons/eval/post-test
@@ -0,0 +1,4 @@
+/: dep5-copyright-license-name-not-unique .*/ d
+/: unused-file-paragraph-in-dep5-copyright .*/ d
+/: wildcard-matches-nothing-in-dep5-copyright .*/ d
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/debian/copyright
new file mode 100644
index 0000000..22d390a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/debian/copyright
@@ -0,0 +1,16 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2014, somebody1
+License: CC0-1.0
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla tortor
+ dolor, laoreet et laoreet non, pretium in nunc. Sed dapibus quis lorem
+ quis gravida. Cras sed purus consequat, dictum purus nec, venenatis sem.
+ Nullam placerat et lacus at bibendum. Maecenas varius sapien ut aliquet
+ elementum. Vestibulum vel rutrum ligula, quis pellentesque velit. Duis
+ molestie velit eget aliquet sollicitudin. Nunc eget metus nec nibh
+ maximus iaculis in non urna. Cras maximus dui ac mauris maximus
+ porttitor.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/fill-values
new file mode 100644
index 0000000..7f31358
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/fill-values
@@ -0,0 +1,2 @@
+Testname: source-copyright-inconsistent-appstream-metadata-license
+Skeleton: upload-native
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/bad.xml b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/bad.xml
new file mode 100644
index 0000000..bb4f84c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/bad.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component>
+ <id>org.gnupg.scdaemon</id>
+ <metadata_license>does-not-match-anything</metadata_license>
+ <name>scdaemon</name>
+ <summary>USB SmartCard Readers</summary>
+ <description>
+ <p>
+ GnuPG's scdaemon provides access to USB tokens and smartcard
+ readers that provide cryptographic functionality (e.g. use of
+ protected secret keys).
+ </p>
+ </description>
+ <provides>
+ <modalias>usb:v046Ap0005d*</modalias>
+ <modalias>usb:v0BF8p1006d*</modalias>
+ </provides>
+</component>
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/good.xml b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/good.xml
new file mode 100644
index 0000000..b316fd5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/build-spec/orig/good.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component>
+ <id>org.gnupg.scdaemon</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <name>scdaemon</name>
+ <summary>USB SmartCard Readers</summary>
+ <description>
+ <p>
+ GnuPG's scdaemon provides access to USB tokens and smartcard
+ readers that provide cryptographic functionality (e.g. use of
+ protected secret keys).
+ </p>
+ </description>
+ <provides>
+ <modalias>usb:v046Ap0005d*</modalias>
+ <modalias>usb:v046Ap0010d*</modalias>
+ </provides>
+</component>
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/desc
new file mode 100644
index 0000000..da84972
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-inconsistent-appstream-metadata-license
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/hints
new file mode 100644
index 0000000..5471a72
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-inconsistent-appstream-metadata-license/eval/hints
@@ -0,0 +1 @@
+source-copyright-inconsistent-appstream-metadata-license (source): inconsistent-appstream-metadata-license bad.xml (does-not-match-anything != cc0-1.0) [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/debian/copyright
new file mode 100644
index 0000000..082beb1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/debian/copyright
@@ -0,0 +1,23 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: © 2011 J. Random Hacker <j.r.hacker@example.com>
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian systems, the complete text of the Apache version 2.0 license
+ can be found in "/usr/share/common-licenses/Apache-2.0".
+
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/fill-values
new file mode 100644
index 0000000..c7f18be
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-insecure-uri
+Description: Test for insecure Format: URIs
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/desc
new file mode 100644
index 0000000..7673493
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-insecure-uri
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/hints
new file mode 100644
index 0000000..be71ba9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-insecure-uri/eval/hints
@@ -0,0 +1 @@
+source-copyright-insecure-uri (source): insecure-copyright-format-uri http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/build-spec/fill-values
new file mode 100644
index 0000000..63a3f72
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: source-copyright-missing-non-free-explanation-unrel
+Description: Test for missing contrib/non-free explanations
+Section: contrib/doc
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/desc
new file mode 100644
index 0000000..1d6ed08
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: source-copyright-missing-non-free-explanation-unrel
+Test-Against:
+ missing-explanation-for-contrib-or-non-free-package
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation-unrel/eval/hints
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/debian/copyright
new file mode 100644
index 0000000..5c38963
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/debian/copyright
@@ -0,0 +1,23 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+
+Files: *
+Copyright: 2009, Russ Allbery <rra@debian.org>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/fill-values
new file mode 100644
index 0000000..0ebd510
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: source-copyright-missing-non-free-explanation
+Description: Test for missing contrib/non-free explanations
+Section: contrib/doc
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/desc
new file mode 100644
index 0000000..e9487f9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-missing-non-free-explanation
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/hints
new file mode 100644
index 0000000..4767345
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-non-free-explanation/eval/hints
@@ -0,0 +1 @@
+source-copyright-missing-non-free-explanation (source): missing-explanation-for-contrib-or-non-free-package [debian/copyright:1]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/debian/copyright
new file mode 100644
index 0000000..6a3aeb6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Files-Excluded: dummy
+
+Files: *
+Copyright: 2009, Russ Allbery <rra@debian.org>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/fill-values
new file mode 100644
index 0000000..24f64b0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: source-copyright-missing-repack-explanation-unrel
+Skeleton: upload-non-native
+Version: 1+dfsg-1
+Description: Test for missing repack explanations (false-positive)
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/desc
new file mode 100644
index 0000000..1e95830
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: source-copyright-missing-repack-explanation-unrel
+Test-Against:
+ missing-explanation-for-repacked-upstream-tarball
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation-unrel/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/debian/copyright
new file mode 100644
index 0000000..5c38963
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/debian/copyright
@@ -0,0 +1,23 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+
+Files: *
+Copyright: 2009, Russ Allbery <rra@debian.org>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/fill-values
new file mode 100644
index 0000000..9137106
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: source-copyright-missing-repack-explanation
+Skeleton: upload-non-native
+Version: 1+dfsg-1
+Description: Test for missing repack explanations
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/desc
new file mode 100644
index 0000000..4721a46
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-missing-repack-explanation
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/hints
new file mode 100644
index 0000000..94889c1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-missing-repack-explanation/eval/hints
@@ -0,0 +1 @@
+source-copyright-missing-repack-explanation (source): missing-explanation-for-repacked-upstream-tarball [debian/copyright:1]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/debian/copyright
new file mode 100644
index 0000000..3fcbad9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This is not a dep5 copyright file
+
+Copyright (c) 2013
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the “Softwareâ€), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/fill-values
new file mode 100644
index 0000000..6d211ea
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-nodep5
+Description: Test for no dep5 source copyright
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/desc
new file mode 100644
index 0000000..9701b2b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-nodep5
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/hints
new file mode 100644
index 0000000..23dbe21
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-nodep5/eval/hints
@@ -0,0 +1 @@
+source-copyright-nodep5 (source): no-dep5-copyright [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/debian/copyright
new file mode 100644
index 0000000..f73439f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/debian/copyright
@@ -0,0 +1,22 @@
+Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
+Name: Doohickey
+Maintainer: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/fill-values
new file mode 100644
index 0000000..b13e28f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-ood-uri
+Description: Test for out-of-date DEP 5-like URI
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/desc
new file mode 100644
index 0000000..030b769
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-ood-uri
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/hints
new file mode 100644
index 0000000..3907382
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-ood-uri/eval/hints
@@ -0,0 +1 @@
+source-copyright-ood-uri (source): out-of-date-copyright-format-uri http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/debian/copyright
new file mode 100644
index 0000000..31e3563
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/debian/copyright
@@ -0,0 +1,16 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2014, somebody1
+License: this | that
+
+Files: debian/*
+Copyright: 2014, somebody1
+License: this|that
+ this is a valid license short name
+
+License: this | that
+ should be "this or that"
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/fill-values
new file mode 100644
index 0000000..a5bfa60
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-pipe-as-or
+Description: Test for the pipe symbol being used as an "or"
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/orig/README b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/orig/README
new file mode 100644
index 0000000..1a9d2ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/build-spec/orig/README
@@ -0,0 +1 @@
+trivial
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/desc
new file mode 100644
index 0000000..2ddc75d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-pipe-as-or
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/hints
new file mode 100644
index 0000000..7ecd5b0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/hints
@@ -0,0 +1,5 @@
+source-copyright-pipe-as-or (source): update-debian-copyright 2014 vs CHANGELOG-YEAR [debian/copyright:11]
+source-copyright-pipe-as-or (source): space-in-std-shortname-in-dep5-copyright this | that [debian/copyright:8]
+source-copyright-pipe-as-or (source): space-in-std-shortname-in-dep5-copyright this | that [debian/copyright:15]
+source-copyright-pipe-as-or (source): pipe-symbol-used-as-license-disjunction this | that [debian/copyright:8]
+source-copyright-pipe-as-or (source): pipe-symbol-used-as-license-disjunction this | that [debian/copyright:15]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-pipe-as-or/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/copyright
new file mode 100644
index 0000000..82dfe2c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/copyright
@@ -0,0 +1,29 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Files-Excluded: exclude-this
+ exclude-dir
+ */exclude-dir
+ exclude-dir-2/*
+ .*
+ */js/jquery.js
+ lib/*
+ debian/*
+ debian/copyright
+ recreated-file
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/0001-recreate-file.diff b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/0001-recreate-file.diff
new file mode 100644
index 0000000..a40e2b1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/0001-recreate-file.diff
@@ -0,0 +1,6 @@
+Re-create a file.
+
+--- /dev/null
++++ debian/recreated-file
+@@ -0,0 +1 @@
++This file was created via a patch system and should be ignored.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/series b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/series
new file mode 100644
index 0000000..ab898ca
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/debian/patches/series
@@ -0,0 +1 @@
+0001-recreate-file.diff
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/fill-values
new file mode 100644
index 0000000..6cef61f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: source-copyright-source-files-excluded
+Skeleton: upload-non-native
+Version: 1.0+dfsg-1
+Description: Test for files listed in Files-Excluded
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/.matches b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/.matches
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/.matches
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir-2/filename b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir-2/filename
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir-2/filename
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename-2 b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename-2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-dir/filename-2
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-this b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-this
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/exclude-this
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/foolib/false-positive b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/foolib/false-positive
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/build-spec/orig/foolib/false-positive
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/desc
new file mode 100644
index 0000000..2605614
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/desc
@@ -0,0 +1,4 @@
+Testname: source-copyright-source-files-excluded
+Test-Against:
+ files-excluded-without-copyright-format-1.0
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/hints
new file mode 100644
index 0000000..2f9d869
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-source-files-excluded/eval/hints
@@ -0,0 +1,5 @@
+source-copyright-source-files-excluded (source): source-ships-excluded-file exclude-this [debian/copyright:2]
+source-copyright-source-files-excluded (source): source-ships-excluded-file exclude-dir/filename-2 [debian/copyright:2]
+source-copyright-source-files-excluded (source): source-ships-excluded-file exclude-dir/filename [debian/copyright:2]
+source-copyright-source-files-excluded (source): source-ships-excluded-file exclude-dir-2/filename [debian/copyright:2]
+source-copyright-source-files-excluded (source): source-ships-excluded-file .matches [debian/copyright:2]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/copyright
new file mode 100644
index 0000000..8ff4ab0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/copyright
@@ -0,0 +1,56 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2014, somebody1
+License: Fixme
+ Fixme-license text
+
+
+Files: debian/*
+Copyright: 2015, somebody2
+License: unknown
+ Fixme
+
+Files: debian/a
+Copyright: 2016, somebody2
+License: unknow
+ Fixme
+
+Files: debian/b
+Copyright: 2014, somebody2
+License: todo
+ Fixme
+
+Files: debian/c
+comment: some spacing
+Copyright: 2017, somebody2
+License: -
+ Fixme
+
+Files: debian/d
+comment: some spacing
+Copyright: 2014, somebody2
+License: -
+ Fixme
+
+Files: debian/e
+Comment: too many false positive with space
+Copyright: 2014, somebody2
+License: undefined license
+ Fixme
+
+Files: debian/f
+comment: some spacing
+Copyright: 2014, somebody2
+License: undefined
+ Fixme
+
+Files: debian/g
+comment: false positive
+Copyright: 2014, somebody2
+License: common public license - v 1.0
+ Fixme
+
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/plus+file b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/plus+file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/debian/plus+file
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/fill-values
new file mode 100644
index 0000000..9588707
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-undefined
+Description: Test for fixme/todo/unknown
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/desc
new file mode 100644
index 0000000..f0c691e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-undefined
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/hints
new file mode 100644
index 0000000..eb13a9f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/hints
@@ -0,0 +1,19 @@
+source-copyright-undefined (source): update-debian-copyright 2017 vs CHANGELOG-YEAR [debian/copyright:29]
+source-copyright-undefined (source): superfluous-file-pattern debian/g [debian/copyright:51]
+source-copyright-undefined (source): superfluous-file-pattern debian/f [debian/copyright:45]
+source-copyright-undefined (source): superfluous-file-pattern debian/e [debian/copyright:39]
+source-copyright-undefined (source): superfluous-file-pattern debian/d [debian/copyright:33]
+source-copyright-undefined (source): superfluous-file-pattern debian/c [debian/copyright:27]
+source-copyright-undefined (source): superfluous-file-pattern debian/b [debian/copyright:22]
+source-copyright-undefined (source): superfluous-file-pattern debian/a [debian/copyright:17]
+source-copyright-undefined (source): superfluous-file-pattern * [debian/copyright:6]
+source-copyright-undefined (source): space-in-std-shortname-in-dep5-copyright undefined license [debian/copyright:42]
+source-copyright-undefined (source): space-in-std-shortname-in-dep5-copyright common public license - v 1.0 [debian/copyright:54]
+source-copyright-undefined (source): license-problem-undefined-license unknown [debian/copyright:14]
+source-copyright-undefined (source): license-problem-undefined-license unknow [debian/copyright:19]
+source-copyright-undefined (source): license-problem-undefined-license undefined license [debian/copyright:42]
+source-copyright-undefined (source): license-problem-undefined-license undefined [debian/copyright:48]
+source-copyright-undefined (source): license-problem-undefined-license todo [debian/copyright:24]
+source-copyright-undefined (source): license-problem-undefined-license fixme [debian/copyright:8]
+source-copyright-undefined (source): license-problem-undefined-license - [debian/copyright:36]
+source-copyright-undefined (source): license-problem-undefined-license - [debian/copyright:30]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-undefined/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/debian/copyright
new file mode 100644
index 0000000..1f88946
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/debian/copyright
@@ -0,0 +1,36 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+License: some-license
+ some license
+
+Files: *
+Copyright: 2014, somebody1
+License: some-license
+
+Files: code
+Copyright: none
+License: public-domain
+ this work is PD because I say so
+
+Files: code2
+Copyright: none
+License: public-domain
+ this work is also in the public domain
+
+Files: debian/*
+Copyright: 2014, somebody1
+License: other-license
+ this is a valid license short name
+
+Files: NEWS
+Copyright: 2014, somebody1
+License: other-license
+ this is a valid license short name 3
+
+License: other-license
+ other-license
+
+License: other-license
+ other-license 2
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/fill-values
new file mode 100644
index 0000000..f730d09
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-unique
+Description: Test if standalone paragraph name are unique
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/NEWS b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/NEWS
new file mode 100644
index 0000000..8a7f3d9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/NEWS
@@ -0,0 +1 @@
+no news \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/README b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/README
new file mode 100644
index 0000000..1a9d2ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/README
@@ -0,0 +1 @@
+trivial
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code
new file mode 100644
index 0000000..1e2b25a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code
@@ -0,0 +1 @@
+simple 3rd party code
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code2 b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code2
new file mode 100644
index 0000000..31d7114
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/build-spec/orig/code2
@@ -0,0 +1 @@
+another simple 3rd party code
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/desc
new file mode 100644
index 0000000..68f492a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-unique
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/hints
new file mode 100644
index 0000000..9474fab
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/hints
@@ -0,0 +1,6 @@
+source-copyright-unique (source): update-debian-copyright 2014 vs CHANGELOG-YEAR [debian/copyright:23]
+source-copyright-unique (source): unused-license-paragraph-in-dep5-copyright other-license [debian/copyright:35]
+source-copyright-unique (source): unused-license-paragraph-in-dep5-copyright other-license [debian/copyright:32]
+source-copyright-unique (source): dep5-file-paragraph-references-header-paragraph some-license [debian/copyright:8]
+source-copyright-unique (source): dep5-copyright-license-name-not-unique other-license [debian/copyright:35]
+source-copyright-unique (source): dep5-copyright-license-name-not-unique other-license [debian/copyright:32]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unique/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/debian/copyright
new file mode 100644
index 0000000..63e0f4b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/debian/copyright
@@ -0,0 +1,22 @@
+Format-Specification: http://bzr.debian.org/loggerhead/dep/dep5/trunk/annotate/110/dep5.mdwn
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/fill-values
new file mode 100644
index 0000000..a8c3d18
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-unknown-uri
+Description: Test for unknown DEP 5-like URI
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/desc
new file mode 100644
index 0000000..19eb061
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-unknown-uri
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/hints
new file mode 100644
index 0000000..eb7e817
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unknown-uri/eval/hints
@@ -0,0 +1 @@
+source-copyright-unknown-uri (source): unknown-copyright-format-uri http://bzr.debian.org/loggerhead/dep/dep5/trunk/annotate/110/dep5.mdwn [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/debian/copyright
new file mode 100644
index 0000000..cf66541
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/debian/copyright
@@ -0,0 +1,22 @@
+Format: http://dep.debian.net/deps/dep5/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/fill-values
new file mode 100644
index 0000000..d6c7346
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-unversioned-uri
+Description: Test for unversioned DEP 5-like URI
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/desc
new file mode 100644
index 0000000..0ac0fed
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-unversioned-uri
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/hints
new file mode 100644
index 0000000..24233ca
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-unversioned-uri/eval/hints
@@ -0,0 +1 @@
+source-copyright-unversioned-uri (source): unversioned-copyright-format-uri http://dep.debian.net/deps/dep5/ [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/debian/copyright
new file mode 100644
index 0000000..4b8947c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/debian/copyright
@@ -0,0 +1,22 @@
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=196
+Upstream-Name: Doohickey
+Upstream-Maintainer: J. Random Hacker <j.r.hacker@example.com>
+Upstream-Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2011 J. Random Hacker <j.r.hacker@example.com>
+License: GPL-2
+ This package is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; version 2 dated June, 1991.
+ .
+ This package is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301, USA.
+ .
+ On Debian systems, the full text of the GNU General Public License version 2
+ can be found in the file `/usr/share/common-licenses/GPL-2'.
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/fill-values
new file mode 100644
index 0000000..c25663d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-wiki-uri
+Description: Test for wiki.debian.org DEP 5-like URI
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/desc
new file mode 100644
index 0000000..62b154c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-wiki-uri
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/hints
new file mode 100644
index 0000000..11c2375
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wiki-uri/eval/hints
@@ -0,0 +1 @@
+source-copyright-wiki-uri (source): wiki-copyright-format-uri http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=196 [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/debian/copyright
new file mode 100644
index 0000000..e9828d4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/debian/copyright
@@ -0,0 +1,43 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: file?with?commas
+ deb*
+Copyright: 2014, somebody1
+Comment: this paragraph is superfluous because all files are matched
+ by the following paragraphs
+License: mylicense
+ Fixme
+
+Files: i-do-not-exist
+Copyright: 2014, somebody1
+License: mylicense-1
+ Fixme
+
+Files: invalid-escape\n
+Copyright: 2014, somebody1
+License: mylicense-2
+ Fixme
+
+Files: debian/*
+Copyright: 2014, somebody1
+License: mylicense-3
+ Fixme
+
+Files:
+ file,with,commas
+Copyright: 2014, somebody1
+Comment: this paragraph starts with a newline and ends with a space
+License: mylicense-4
+ Fixme
+
+Files: rare-filenames/01-file-with-(something-in-parenthesis).png
+ rare-filenames/02-or-perhaps-only-one-{-which-causes-a-compile-failure.png
+ rare-filenames/03-even-]-is-not-safe.png
+ rare-filenames/04-Perhaps-even-|-will-cause-problems.png
+ rare-filenames/05-Lets-not-forget-^-and-$-for-added-fun.png
+Copyright: 2014, somebody1
+License: mylicense-5
+ Fixme
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/fill-values
new file mode 100644
index 0000000..4861b6c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-wildcard-matching
+Description: Test whether the Files wildcards match all files in the source
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING
new file mode 100644
index 0000000..421376d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING
@@ -0,0 +1 @@
+dummy
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING.CC-BY-SA-3.0 b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING.CC-BY-SA-3.0
new file mode 100644
index 0000000..421376d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/COPYING.CC-BY-SA-3.0
@@ -0,0 +1 @@
+dummy
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/LICENSE b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/LICENSE
new file mode 100644
index 0000000..421376d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/LICENSE
@@ -0,0 +1 @@
+dummy
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/file,with,commas b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/file,with,commas
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/file,with,commas
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/i-have-no-copyright-information b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/i-have-no-copyright-information
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/i-have-no-copyright-information
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/01-file-with-(something-in-parenthesis).png b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/01-file-with-(something-in-parenthesis).png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/01-file-with-(something-in-parenthesis).png
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/02-or-perhaps-only-one-{-which-causes-a-compile-failure.png b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/02-or-perhaps-only-one-{-which-causes-a-compile-failure.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/02-or-perhaps-only-one-{-which-causes-a-compile-failure.png
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/03-even-]-is-not-safe.png b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/03-even-]-is-not-safe.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/03-even-]-is-not-safe.png
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/04-Perhaps-even-|-will-cause-problems.png b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/04-Perhaps-even-|-will-cause-problems.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/04-Perhaps-even-|-will-cause-problems.png
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/05-Lets-not-forget-^-and-$-for-added-fun.png b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/05-Lets-not-forget-^-and-$-for-added-fun.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/build-spec/orig/rare-filenames/05-Lets-not-forget-^-and-$-for-added-fun.png
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/desc b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/desc
new file mode 100644
index 0000000..660d288
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-wildcard-matching
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/hints b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/hints
new file mode 100644
index 0000000..2fc8b34
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/hints
@@ -0,0 +1,7 @@
+source-copyright-wildcard-matching (source): update-debian-copyright 2014 vs CHANGELOG-YEAR [debian/copyright:25]
+source-copyright-wildcard-matching (source): superfluous-file-pattern invalid-escape\n [debian/copyright:19]
+source-copyright-wildcard-matching (source): superfluous-file-pattern i-do-not-exist [debian/copyright:14]
+source-copyright-wildcard-matching (source): superfluous-file-pattern file?with?commas [debian/copyright:6]
+source-copyright-wildcard-matching (source): superfluous-file-pattern deb* [debian/copyright:6]
+source-copyright-wildcard-matching (source): invalid-escape-sequence-in-dep5-copyright \n [debian/copyright:19]
+source-copyright-wildcard-matching (source): file-without-copyright-information i-have-no-copyright-information [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/post-test b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/source-copyright-wildcard-matching/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2d380f5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * This line has a speling error.
+ - This line has the same speling error, but we should only
+ get one tag for it.
+ * Corrected spelling: abov -> above.
+ * Corrected typo: abov -> above.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/copyright
new file mode 100644
index 0000000..30cbe5c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This duplicate duplicate word should not trigger. (re. #897402)
+
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2010 Russ Allbery <rra@debian.org>
+
+This text should not generate a spelling error for "ment":
+
+ computer software documentation," as such terms are used in
+ 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern-
+ ment only as a commercial end item. Consistent with 48 C.F.R.
+ 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995),
+
+But deafult is still a spelling error.
+
+This text should not generate a spelling error for the duplicate "a" (re. #844166)
+
+ following Attribution Information: (a) a copyright notice including the name
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/doc-base b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/doc-base
new file mode 100644
index 0000000..3839a9b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/doc-base
@@ -0,0 +1,9 @@
+Document: spelling-general
+Title: Check for debian doc-base spelling errors
+Author: Russ Allbery
+Abstract: This control file exercises, picky, speling error checks for
+ Debian doc-base files, such as meta-package.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/spelling-general/copyright
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/add-readme b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/add-readme
new file mode 100644
index 0000000..b1647ba
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/add-readme
@@ -0,0 +1,8 @@
+This is a deliberate speling error. duplicate
+
+duplicate
+
+--- upstream.orig/README
++++ upstream/README
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/nonrel b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/nonrel
new file mode 100644
index 0000000..48e7740
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/nonrel
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; description mentions typo)
+
+--- upstream.orig/nonrel
++++ upstream/nonrel
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/series b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..0bfb03d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/series
@@ -0,0 +1,3 @@
+add-readme
+spelling
+nonrel
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/spelling b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/spelling
new file mode 100644
index 0000000..29b9cfd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/debian/patches/spelling
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; filename match)
+
+--- upstream.orig/spelling
++++ upstream/spelling
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/fill-values
new file mode 100644
index 0000000..1c8c790
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: spelling-general
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: General checks for spelling errors
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/eval/desc b/t/recipes/checks/debian/copyright/dep5/spelling-general/eval/desc
new file mode 100644
index 0000000..bb19368
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-general
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/spelling-general/eval/hints b/t/recipes/checks/debian/copyright/dep5/spelling-general/eval/hints
new file mode 100644
index 0000000..6ec43c5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/spelling-general/eval/hints
@@ -0,0 +1 @@
+spelling-general (source): no-dep5-copyright [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/debian/copyright
new file mode 100644
index 0000000..b6f6c00
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/debian/copyright
@@ -0,0 +1,35 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Comment: This is part of the testsuite of lintian.
+ See the file debian/copyright
+ in the lintian source directory for more details.
+
+Files: *
+Copyright:
+ 2008 Frank Lichtenheld <djpig@debian.org>
+ 2009 Russ Allbery <rra@debian.org>
+ 2018 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ TAB FOLLOWS.
+ .
+ PARAGRAPH INDENTED WITH TAB.
+ .
+ TAB PRECEDES.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/fill-values
new file mode 100644
index 0000000..c815b61
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: tab-in-license-text
+Description: Test for disallowed tab character in DEP-5 long license text
diff --git a/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/desc b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/desc
new file mode 100644
index 0000000..be68783
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/desc
@@ -0,0 +1,2 @@
+Testname: tab-in-license-text
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/hints b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/hints
new file mode 100644
index 0000000..b3655d2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/tab-in-license-text/eval/hints
@@ -0,0 +1 @@
+tab-in-license-text (source): tab-in-license-text [debian/copyright:14]
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/rules b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/rules
new file mode 100644
index 0000000..1ecb975
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/$(shell dh_listpackages)
+APPSYNC_DIR=$(DESTDIR)/usr/share/metainfo/
+UDEV_DIR=$(DESTDIR)/lib/udev/rules.d/
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ install -m 0644 debian/udev-rules.metadata.xml $(APPSYNC_DIR)
+ ln -s dangling $(UDEV_DIR)/60-dangling-symlink.rules
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.dirs b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.dirs
new file mode 100644
index 0000000..d0cd146
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.dirs
@@ -0,0 +1,2 @@
+lib/udev/rules.d
+usr/share/metainfo
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.metadata.xml b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.metadata.xml
new file mode 100644
index 0000000..2564e98
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component>
+ <id>udev-rules</id>
+ <metadata_license>MIT</metadata_license>
+ <name>lintian udev-rules test</name>
+ <summary>Test udev related checks in lintian</summary>
+ <description>
+ <p>
+ This is a test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular
+ package. It may be an empty package.
+ </p>
+ </description>
+ <provides>
+ <modalias>usb:v0000p0001d*</modalias>
+ <modalias>usb:v0000p0002d*</modalias>
+ <modalias>usb:v0000p0003d*</modalias>
+ <modalias>usb:v0000p0004d*</modalias>
+ <modalias>usb:v0000p000Ad*</modalias>
+ </provides>
+</component>
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.udev b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.udev
new file mode 100644
index 0000000..e35482d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/debian/udev-rules.udev
@@ -0,0 +1,25 @@
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0001", \
+ MODE="0666"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0002", \
+ MODE="0660", GROUP="plugdev"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0003", \
+ TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0004", \
+ MODE="0660", GROUP="plugdev", TAG+="uaccess"
+
+ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0005", \
+ MODE="0660", GROUP="plugdev", TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="000a", \
+ ID_TEST_DEVICE="1"
+
+SUBSYSTEM!="usb", GOTO="target"
+ENV{DEVTYPE}!="usb_device", GOTO="target"
+ATTR{idVendor}=="0000", ATTR{idProduct}=="0000", RUN+="missing-subsystem-false-positive"
+LABEL="target"
+
+# Ensure we trigger this one after a GOTO
+ATTR{idVendor}=="0000", ATTR{idProduct}=="0000", RUN+="missing-subsystem"
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/fill-values
new file mode 100644
index 0000000..6463c54
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: udev-rules
+Description: Check udev rules for mistakes
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/eval/desc b/t/recipes/checks/debian/copyright/dep5/udev-rules/eval/desc
new file mode 100644
index 0000000..3d6a92e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/eval/desc
@@ -0,0 +1,2 @@
+Testname: udev-rules
+Check: debian/copyright/dep5
diff --git a/t/recipes/checks/debian/copyright/dep5/udev-rules/eval/hints b/t/recipes/checks/debian/copyright/dep5/udev-rules/eval/hints
new file mode 100644
index 0000000..291b20d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/udev-rules/eval/hints
@@ -0,0 +1 @@
+udev-rules (source): inconsistent-appstream-metadata-license debian/udev-rules.metadata.xml (mit != gpl-2+) [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/copyright
new file mode 100644
index 0000000..4fd9937
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+# taken from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=905747#5
+# but split up for each of the two conditions
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+Copyright: (C) 2018 Niels Thykier
+License: License1
+
+Files: debian/patches/*
+Copyright: (C) 2019 Niels Thykier
+License: License1
+
+Files: debian/*
+Copyright: (C) 2018 Niels Thykier
+License: License2
+
+License: License1
+ Please call the author for this license.
+
+License: License2
+ Please call the author for this license.
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/patches/a.patch b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/patches/a.patch
new file mode 100644
index 0000000..294a68c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/debian/patches/a.patch
@@ -0,0 +1 @@
+A PATCH
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/fill-values b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/fill-values
new file mode 100644
index 0000000..79c5734
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: wildcard-out-of-order
+Description: Wildcards not ordered by depth in the directory tree
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/orig/a-file b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/orig/a-file
new file mode 100644
index 0000000..fadb157
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/build-spec/orig/a-file
@@ -0,0 +1 @@
+A FILE
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/desc b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/desc
new file mode 100644
index 0000000..ffd1a6d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/desc
@@ -0,0 +1,3 @@
+Testname: wildcard-out-of-order
+Check: debian/copyright/dep5
+See-Also: Bug#905747
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/hints b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/hints
new file mode 100644
index 0000000..e2ec0eb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/hints
@@ -0,0 +1,3 @@
+wildcard-out-of-order (source): update-debian-copyright 2019 vs CHANGELOG-YEAR [debian/copyright:10]
+wildcard-out-of-order (source): superfluous-file-pattern debian/patches/* [debian/copyright:9]
+wildcard-out-of-order (source): globbing-patterns-out-of-order debian/patches/* debian/* debian/patches/a.patch [debian/copyright:13]
diff --git a/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/post-test b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/post-test
new file mode 100644
index 0000000..feeacfc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/dep5/wildcard-out-of-order/eval/post-test
@@ -0,0 +1 @@
+s/vs [0-9]+/vs CHANGELOG-YEAR/
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/desc b/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..35dfeaf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: debian/copyright
+See-Also:
+ Bug#497347
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/hints b/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..b5417b3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/hints
@@ -0,0 +1,5 @@
+generic-dh-make-2008 (binary): helper-templates-in-copyright
+generic-dh-make-2008 (binary): copyright-without-copyright-notice
+generic-dh-make-2008 (binary): copyright-with-old-dh-make-debian-copyright
+generic-dh-make-2008 (binary): copyright-has-url-from-dh_make-boilerplate
+generic-dh-make-2008 (binary): copyright-contains-dh_make-todo-boilerplate
diff --git a/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/post-test b/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/rules b/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/debian/copyright/generic-empty/build-spec/fill-values b/t/recipes/checks/debian/copyright/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/debian/copyright/generic-empty/build-spec/orig/README b/t/recipes/checks/debian/copyright/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/debian/copyright/generic-empty/build-spec/pre-build b/t/recipes/checks/debian/copyright/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/debian/copyright/generic-empty/eval/desc b/t/recipes/checks/debian/copyright/generic-empty/eval/desc
new file mode 100644
index 0000000..eee49bb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/generic-empty/eval/hints b/t/recipes/checks/debian/copyright/generic-empty/eval/hints
new file mode 100644
index 0000000..4c97d8f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/generic-empty/eval/hints
@@ -0,0 +1,2 @@
+generic-empty (source): no-debian-copyright-in-source
+generic-empty (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..4546c62
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/eval/desc b/t/recipes/checks/debian/copyright/legacy-binary/eval/desc
new file mode 100644
index 0000000..060c487
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/eval/hints b/t/recipes/checks/debian/copyright/legacy-binary/eval/hints
new file mode 100644
index 0000000..aaada18
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (binary): possible-gpl-code-linked-with-openssl
+binary (binary): old-fsf-address-in-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-binary/eval/post-test b/t/recipes/checks/debian/copyright/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/eval/desc b/t/recipes/checks/debian/copyright/legacy-debconf/eval/desc
new file mode 100644
index 0000000..6ea363a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/eval/hints b/t/recipes/checks/debian/copyright/legacy-debconf/eval/hints
new file mode 100644
index 0000000..bed3522
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/eval/hints
@@ -0,0 +1,8 @@
+debconf-test-preinst (binary): old-fsf-address-in-copyright-file
+debconf-test-preinst (binary): copyright-contains-dh_make-todo-boilerplate
+debconf-test-postinst (binary): old-fsf-address-in-copyright-file
+debconf-test-postinst (binary): copyright-contains-dh_make-todo-boilerplate
+debconf-test-noscripts (binary): old-fsf-address-in-copyright-file
+debconf-test-noscripts (binary): copyright-contains-dh_make-todo-boilerplate
+debconf-test (binary): old-fsf-address-in-copyright-file
+debconf-test (binary): copyright-contains-dh_make-todo-boilerplate
diff --git a/t/recipes/checks/debian/copyright/legacy-debconf/eval/post-test b/t/recipes/checks/debian/copyright/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/desc b/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..1782fc0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/hints b/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..2ebfa16
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/post-test b/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/eval/desc b/t/recipes/checks/debian/copyright/legacy-fields/eval/desc
new file mode 100644
index 0000000..10be13b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/eval/hints b/t/recipes/checks/debian/copyright/legacy-fields/eval/hints
new file mode 100644
index 0000000..6ce7d6e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/eval/hints
@@ -0,0 +1,2 @@
+fields (binary): no-copyright-file
+another-version (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-fields/eval/post-test b/t/recipes/checks/debian/copyright/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/eval/desc b/t/recipes/checks/debian/copyright/legacy-filenames/eval/desc
new file mode 100644
index 0000000..2f3ffb9
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/eval/hints b/t/recipes/checks/debian/copyright/legacy-filenames/eval/hints
new file mode 100644
index 0000000..577cfcf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/eval/hints
@@ -0,0 +1,3 @@
+more-filename-games (binary): no-copyright-file
+filenames (binary): no-copyright-file
+filename-games (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-filenames/eval/post-test b/t/recipes/checks/debian/copyright/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..3e86b96
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses non-UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/eval/desc b/t/recipes/checks/debian/copyright/legacy-foo++/eval/desc
new file mode 100644
index 0000000..0dc67a8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/eval/hints b/t/recipes/checks/debian/copyright/legacy-foo++/eval/hints
new file mode 100644
index 0000000..22a97cb
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-foo++/eval/post-test b/t/recipes/checks/debian/copyright/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..234d577
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..b0944ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1 @@
+maintainer-scripts (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/eval/desc b/t/recipes/checks/debian/copyright/legacy-relations/eval/desc
new file mode 100644
index 0000000..51af737
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/eval/hints b/t/recipes/checks/debian/copyright/legacy-relations/eval/hints
new file mode 100644
index 0000000..ee30253
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/eval/hints
@@ -0,0 +1,2 @@
+relations-multiple-libs (binary): usr-share-doc-symlink-without-dependency relations
+relations (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/legacy-relations/eval/post-test b/t/recipes/checks/debian/copyright/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/eval/desc b/t/recipes/checks/debian/copyright/legacy-scripts/eval/desc
new file mode 100644
index 0000000..10da391
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/eval/hints b/t/recipes/checks/debian/copyright/legacy-scripts/eval/hints
new file mode 100644
index 0000000..5ab0622
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): copyright-file-lacks-pointer-to-perl-license
diff --git a/t/recipes/checks/debian/copyright/legacy-scripts/eval/post-test b/t/recipes/checks/debian/copyright/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/fill-values b/t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/fill-values
new file mode 100644
index 0000000..da1fd11
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: named-copyright-in-source
+Description: Builds single package and uses d/$package.copyright as name
diff --git a/t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/pre-build b/t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/pre-build
new file mode 100755
index 0000000..90f1ee3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/named-copyright-in-source/build-spec/pre-build
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd "$1/debian"
+mv copyright named-copyright-in-source.copyright
diff --git a/t/recipes/checks/debian/copyright/named-copyright-in-source/eval/desc b/t/recipes/checks/debian/copyright/named-copyright-in-source/eval/desc
new file mode 100644
index 0000000..f3ddca1
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/named-copyright-in-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: named-copyright-in-source
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/named-copyright-in-source/eval/hints b/t/recipes/checks/debian/copyright/named-copyright-in-source/eval/hints
new file mode 100644
index 0000000..4000c74
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/named-copyright-in-source/eval/hints
@@ -0,0 +1 @@
+named-copyright-in-source (source): named-copyright-for-single-installable [debian/named-copyright-in-source.copyright]
diff --git a/t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/fill-values b/t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/fill-values
new file mode 100644
index 0000000..013c23c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-missing
+Description: Test for missing copyright
diff --git a/t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/pre-build b/t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/pre-build
new file mode 100755
index 0000000..50ea07f
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-missing/build-spec/pre-build
@@ -0,0 +1,2 @@
+#!/bin/sh
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/debian/copyright/source-copyright-missing/eval/desc b/t/recipes/checks/debian/copyright/source-copyright-missing/eval/desc
new file mode 100644
index 0000000..0cf3873
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-missing
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/source-copyright-missing/eval/hints b/t/recipes/checks/debian/copyright/source-copyright-missing/eval/hints
new file mode 100644
index 0000000..73ace17
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-missing/eval/hints
@@ -0,0 +1,2 @@
+source-copyright-missing (source): no-debian-copyright-in-source
+source-copyright-missing (binary): no-copyright-file
diff --git a/t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/fill-values b/t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/fill-values
new file mode 100644
index 0000000..2b5fdb3
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-symlink
+Description: Test for symlinked debian/copyright
diff --git a/t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/pre-build b/t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/pre-build
new file mode 100755
index 0000000..0afeafe
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-symlink/build-spec/pre-build
@@ -0,0 +1,4 @@
+#!/bin/sh
+cd "$1/debian"
+mv copyright source-copyright-symlink.copyright
+ln -sf source-copyright-symlink.copyright copyright
diff --git a/t/recipes/checks/debian/copyright/source-copyright-symlink/eval/desc b/t/recipes/checks/debian/copyright/source-copyright-symlink/eval/desc
new file mode 100644
index 0000000..8d47ecf
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-symlink
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/source-copyright-symlink/eval/hints b/t/recipes/checks/debian/copyright/source-copyright-symlink/eval/hints
new file mode 100644
index 0000000..27b032a
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-symlink/eval/hints
@@ -0,0 +1 @@
+source-copyright-symlink (source): debian-copyright-is-symlink [debian/copyright]
diff --git a/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/copyright
new file mode 100644
index 0000000..049fb78
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/copyright
@@ -0,0 +1,56 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Doohickey
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: http://examples.com/doohickey/source/
+
+Files: *
+Copyright: 2014, somebody1
+License: Fixme
+ Fixme-license text
+
+
+Files: debian/*
+Copyright: 2014, somebody2
+License: unknown
+ Fixme
+
+Files: debian/a
+Copyright: 2014, somebody2
+License: unknow
+ Fixme
+
+Files: debian/b
+Copyright: 2014, somebody2
+License: todo
+ Fixme
+
+Files: debian/c
+comment: some spacing
+Copyright: 2014, somebody2
+License: -
+ Fixme
+
+Files: debian/d
+comment: some spacing
+Copyright: 2014, somebody2
+License: -
+ Fixme
+
+Files: debian/e
+Comment: too many false positive with space
+Copyright: 2014, somebody2
+License: undefined license
+ Fixme
+
+Files: debian/f
+comment: some spacing
+Copyright: 2014, somebody2
+License: undefined
+ Fixme
+
+Files: debian/g
+comment: false positive
+Copyright: 2014, somebody2
+License: common public license - v 1.0
+ Fixme
+
diff --git a/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/plus+file b/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/plus+file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/debian/plus+file
diff --git a/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/fill-values b/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/fill-values
new file mode 100644
index 0000000..9588707
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-undefined/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: source-copyright-undefined
+Description: Test for fixme/todo/unknown
diff --git a/t/recipes/checks/debian/copyright/source-copyright-undefined/eval/desc b/t/recipes/checks/debian/copyright/source-copyright-undefined/eval/desc
new file mode 100644
index 0000000..7fa8574
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-undefined/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-copyright-undefined
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/source-copyright-undefined/eval/hints b/t/recipes/checks/debian/copyright/source-copyright-undefined/eval/hints
new file mode 100644
index 0000000..cff9e45
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/source-copyright-undefined/eval/hints
@@ -0,0 +1 @@
+source-copyright-undefined (binary): spelling-error-in-copyright unknow unknown
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2d380f5
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * This line has a speling error.
+ - This line has the same speling error, but we should only
+ get one tag for it.
+ * Corrected spelling: abov -> above.
+ * Corrected typo: abov -> above.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/copyright b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/copyright
new file mode 100644
index 0000000..30cbe5c
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This duplicate duplicate word should not trigger. (re. #897402)
+
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2010 Russ Allbery <rra@debian.org>
+
+This text should not generate a spelling error for "ment":
+
+ computer software documentation," as such terms are used in
+ 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern-
+ ment only as a commercial end item. Consistent with 48 C.F.R.
+ 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995),
+
+But deafult is still a spelling error.
+
+This text should not generate a spelling error for the duplicate "a" (re. #844166)
+
+ following Attribution Information: (a) a copyright notice including the name
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/doc-base b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/doc-base
new file mode 100644
index 0000000..3839a9b
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/doc-base
@@ -0,0 +1,9 @@
+Document: spelling-general
+Title: Check for debian doc-base spelling errors
+Author: Russ Allbery
+Abstract: This control file exercises, picky, speling error checks for
+ Debian doc-base files, such as meta-package.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/spelling-general/copyright
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/add-readme b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/add-readme
new file mode 100644
index 0000000..b1647ba
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/add-readme
@@ -0,0 +1,8 @@
+This is a deliberate speling error. duplicate
+
+duplicate
+
+--- upstream.orig/README
++++ upstream/README
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/nonrel b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/nonrel
new file mode 100644
index 0000000..48e7740
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/nonrel
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; description mentions typo)
+
+--- upstream.orig/nonrel
++++ upstream/nonrel
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/series b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..0bfb03d
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/series
@@ -0,0 +1,3 @@
+add-readme
+spelling
+nonrel
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/spelling b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/spelling
new file mode 100644
index 0000000..29b9cfd
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/debian/patches/spelling
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; filename match)
+
+--- upstream.orig/spelling
++++ upstream/spelling
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/copyright/spelling-general/build-spec/fill-values b/t/recipes/checks/debian/copyright/spelling-general/build-spec/fill-values
new file mode 100644
index 0000000..1c8c790
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: spelling-general
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: General checks for spelling errors
diff --git a/t/recipes/checks/debian/copyright/spelling-general/eval/desc b/t/recipes/checks/debian/copyright/spelling-general/eval/desc
new file mode 100644
index 0000000..62005c6
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-general
+Check: debian/copyright
diff --git a/t/recipes/checks/debian/copyright/spelling-general/eval/hints b/t/recipes/checks/debian/copyright/spelling-general/eval/hints
new file mode 100644
index 0000000..66eb250
--- /dev/null
+++ b/t/recipes/checks/debian/copyright/spelling-general/eval/hints
@@ -0,0 +1 @@
+spelling-general (binary): spelling-error-in-copyright deafult default
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/config b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/config
new file mode 100644
index 0000000..fdec12b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/config
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -e
+
+# Forget to load the confmodule
+# . /usr/share/debconf/confmodule
+
+
+db_input low debconf/note-abuse
+db_go
+
+
+db_input unknown debconf/unknown-priority
+db_go
+
+db_fset debconf/deprecated-default isdefault true
+
+db_input low debconf/deprecated-default
+db_go
+
+db_input low debconf/translated
+db_go
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/da.po b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/da.po
new file mode 100644
index 0000000..d659394
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/da.po
@@ -0,0 +1,42 @@
+# Danish translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-10-01 22:49+0200\n"
+"PO-Revision-Date: 2012-07-23 23:08+0200\n"
+"Last-Translator: Niels Thykier <niels@thykier.net>\n"
+"Language-Team: Danish\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr "Ubrugelig note"
+
+#. Type: note
+#. Description
+#: ../templates:2001
+msgid "This is a note abuse"
+msgstr "Dette er et note misbrug"
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Invoked with unknown debconf priority"
+msgstr "Kaldt med ukendt debconf prioritet"
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this use deprecated?"
+msgstr "Er denne brug forældet?"
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..2107421
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/po/templates.pot
@@ -0,0 +1,42 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-10-01 22:49+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:2001
+msgid "This is a note abuse"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../templates:3001
+msgid "Invoked with unknown debconf priority"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this use deprecated?"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/templates b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/templates
new file mode 100644
index 0000000..5097b3a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/debian/templates
@@ -0,0 +1,15 @@
+Template: debconf/translated
+Type: error
+_Description: Useless note
+
+Template: debconf/note-abuse
+Type: note
+_Description: This is a note abuse
+
+Template: debconf/unknown-priority
+Type: error
+_Description: Invoked with unknown debconf priority
+
+Template: debconf/deprecated-default
+Type: boolean
+_Description: Is this use deprecated?
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/fill-values
new file mode 100644
index 0000000..bf494b1
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-config-general
+Description: Test for various debconf config issues
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/eval/desc b/t/recipes/checks/debian/debconf/debconf-config-general/eval/desc
new file mode 100644
index 0000000..e2a46b0
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-config-general
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-config-general/eval/hints b/t/recipes/checks/debian/debconf/debconf-config-general/eval/hints
new file mode 100644
index 0000000..73b5290
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-general/eval/hints
@@ -0,0 +1,4 @@
+debconf-config-general (binary): unknown-debconf-priority unknown [config:12]
+debconf-config-general (binary): possible-debconf-note-abuse debconf/note-abuse [config:8]
+debconf-config-general (binary): isdefault-flag-is-deprecated [config:15]
+debconf-config-general (binary): config-does-not-load-confmodule [config]
diff --git a/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/config b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/config
new file mode 100644
index 0000000..d429f9b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/config
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
diff --git a/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/control.in b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/control.in
new file mode 100644
index 0000000..68a964d
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/rules b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/rules
new file mode 100755
index 0000000..558750b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+TMP=debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ chmod 0644 "$(TMP)/DEBIAN/config"
+ dh_builddeb
diff --git a/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/fill-values
new file mode 100644
index 0000000..3ea2f84
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-not-executable/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debconf-config-not-executable
+Description: Test for debian/config not being executable
+Extra-Build-Depends: dpkg (<< 1.19.0)
+# dpkg 1.19.0 will error out due to https://anonscm.debian.org/git/dpkg/dpkg.git/commit/?id=cd791ccf8117398ea765eda3a92db52a9cf04c23
diff --git a/t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/desc b/t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/desc
new file mode 100644
index 0000000..be30442
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/desc
@@ -0,0 +1,3 @@
+Testname: debconf-config-not-executable
+Check: debian/debconf
+# dpkg 1.19.0 will error out due to https://anonscm.debian.org/git/dpkg/dpkg.git/commit/?id=cd791ccf8117398ea765eda3a92db52a9cf04c23
diff --git a/t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/hints b/t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/hints
new file mode 100644
index 0000000..e5b6aaa
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-config-not-executable/eval/hints
@@ -0,0 +1,4 @@
+debconf-config-not-executable (binary): postinst-does-not-load-confmodule
+debconf-config-not-executable (binary): no-debconf-templates
+debconf-config-not-executable (binary): debconf-config-not-executable
+debconf-config-not-executable (binary): control-file-has-bad-permissions config 0644 != 0755
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/install b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/install
new file mode 100644
index 0000000..28c8417
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/install
@@ -0,0 +1 @@
+script usr/share/lintian
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/da.po b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/da.po
new file mode 100644
index 0000000..343c3e8
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/da.po
@@ -0,0 +1,25 @@
+# Danish translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-25 11:04+0200\n"
+"PO-Revision-Date: 2012-07-23 23:08+0200\n"
+"Last-Translator: Niels Thykier <niels@thykier.net>\n"
+"Language-Team: Danish\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr "Ubrugelig note"
+
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..fd4f94f
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/po/templates.pot
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-25 11:04+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/templates b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/templates
new file mode 100644
index 0000000..a45cfa3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/debian/templates
@@ -0,0 +1,4 @@
+Template: debconf/translated
+Type: error
+_Description: Useless note
+
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/fill-values
new file mode 100644
index 0000000..98b6768
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-is-not-registry
+Description: Test for using debconf as a registry
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/config-gen.pl b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/config-gen.pl
new file mode 100644
index 0000000..e6588b7
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/config-gen.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Helper script to generate d/config from d/templates.
+# It is just here to make sure all templates are "used".
+
+use strict;
+use warnings;
+
+print <<EOF ;
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+EOF
+
+for my $line ( <STDIN> ) {
+
+ if ($line =~ /^Template:\s*(\S+)\s*$/) {
+
+ my $template = $1;
+ next
+ unless defined $template;
+
+ print "db_input high $template || true\n";
+ print "db_go\n\n";
+ }
+}
+
+exit 0;
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/gen-source.mk b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/gen-source.mk
new file mode 100755
index 0000000..f6f5975
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/gen-source.mk
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+all: debian/config
+
+debian/config: debian/templates
+ perl config-gen.pl < $< > $@
+
+
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/script b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/script
new file mode 100755
index 0000000..3a05d3a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/orig/script
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+. /usr/share/debconf/confmodule
+
+db_get debconf/translated
+db_go
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/pre-build b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/pre-build
new file mode 100755
index 0000000..bfcb477
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/build-spec/pre-build
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+DIR="$1"
+make --silent -C "$DIR" -f "$DIR/gen-source.mk" all
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/desc b/t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/desc
new file mode 100644
index 0000000..c4cd0cd
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-is-not-registry
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/hints b/t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/hints
new file mode 100644
index 0000000..117dfba
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-is-not-registry/eval/hints
@@ -0,0 +1 @@
+debconf-is-not-registry (binary): debconf-is-not-a-registry [usr/share/lintian/script:3]
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/config b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/config
new file mode 100644
index 0000000..9659eb3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/config
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get debconf/translated
+db_go
+
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/da.po b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/da.po
new file mode 100644
index 0000000..e7cceb3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/da.po
@@ -0,0 +1,24 @@
+# Danish translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-23 23:07+0200\n"
+"PO-Revision-Date: 2012-07-23 23:08+0200\n"
+"Last-Translator: Niels Thykier <niels@thykier.net>\n"
+"Language-Team: Danish\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr "Ubrugelig note"
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..3edd4a9
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/po/templates.pot
@@ -0,0 +1,24 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-23 23:07+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postinst
new file mode 100644
index 0000000..df9df64
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+db_input low debconf/translated
+db_go
+
+
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postrm b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postrm
new file mode 100644
index 0000000..5169df8
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/postrm
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+if [ -f /usr/share/debconf/confmodule.sh ] ; then
+ . /usr/share/debconf/confmodule.sh
+ # no debconf purging
+fi
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/preinst b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/preinst
new file mode 100644
index 0000000..8d41696
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/preinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get debconf/translated || true
+db_go
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/rules b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/rules
new file mode 100644
index 0000000..e1f0e1b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/rules
@@ -0,0 +1,16 @@
+#!/usr/bin/make -f
+
+PKG=debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ # Manually copy the scripts - otherwise debhelper with insert
+ # the "correct magic" in each of them.
+ cp -a debian/preinst debian/postinst debian/postrm "$(PKG)/DEBIAN"
+ chmod 0755 "$(PKG)/DEBIAN/preinst" "$(PKG)/DEBIAN/postinst" \
+ "$(PKG)/DEBIAN/postrm"
+ sed -i '/#DEBHELPER#/ d' "$(PKG)/DEBIAN/preinst" \
+ "$(PKG)/DEBIAN/postinst" "$(PKG)/DEBIAN/postrm"
+ dh_builddeb
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/templates b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/templates
new file mode 100644
index 0000000..a45cfa3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/debian/templates
@@ -0,0 +1,4 @@
+Template: debconf/translated
+Type: error
+_Description: Useless note
+
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/fill-values
new file mode 100644
index 0000000..6f558ec
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-maintscripts-deps
+Description: Test for various debconf maintscripts and dep issues
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/desc b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/desc
new file mode 100644
index 0000000..aac2cc6
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-maintscripts-deps
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/hints b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/hints
new file mode 100644
index 0000000..3c1fb67
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-maintscripts-deps/eval/hints
@@ -0,0 +1,5 @@
+debconf-maintscripts-deps (binary): postrm-does-not-purge-debconf [postrm]
+debconf-maintscripts-deps (binary): postinst-uses-db-input [postinst:5]
+debconf-maintscripts-deps (binary): postinst-does-not-load-confmodule [postinst]
+debconf-maintscripts-deps (binary): missing-debconf-dependency-for-preinst
+debconf-maintscripts-deps (binary): loads-obsolete-confmodule /usr/share/debconf/confmodule.sh [postrm:5]
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/da.po b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/da.po
new file mode 100644
index 0000000..343c3e8
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/da.po
@@ -0,0 +1,25 @@
+# Danish translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-25 11:04+0200\n"
+"PO-Revision-Date: 2012-07-23 23:08+0200\n"
+"Last-Translator: Niels Thykier <niels@thykier.net>\n"
+"Language-Team: Danish\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr "Ubrugelig note"
+
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..fd4f94f
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/po/templates.pot
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-25 11:04+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/rules b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/rules
new file mode 100644
index 0000000..f8e47a0
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_gencontrol:
+ sed -i '/^misc:Depends=/ d' debian/*substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/templates b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/templates
new file mode 100644
index 0000000..a45cfa3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/debian/templates
@@ -0,0 +1,4 @@
+Template: debconf/translated
+Type: error
+_Description: Useless note
+
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/fill-values
new file mode 100644
index 0000000..bc71e44
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-missing-dep
+Description: Test for missing debconf dependency
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/config-gen.pl b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/config-gen.pl
new file mode 100644
index 0000000..e6588b7
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/config-gen.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Helper script to generate d/config from d/templates.
+# It is just here to make sure all templates are "used".
+
+use strict;
+use warnings;
+
+print <<EOF ;
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+EOF
+
+for my $line ( <STDIN> ) {
+
+ if ($line =~ /^Template:\s*(\S+)\s*$/) {
+
+ my $template = $1;
+ next
+ unless defined $template;
+
+ print "db_input high $template || true\n";
+ print "db_go\n\n";
+ }
+}
+
+exit 0;
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/gen-source.mk b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/gen-source.mk
new file mode 100755
index 0000000..f6f5975
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/orig/gen-source.mk
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+all: debian/config
+
+debian/config: debian/templates
+ perl config-gen.pl < $< > $@
+
+
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/pre-build b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/pre-build
new file mode 100755
index 0000000..bfcb477
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/build-spec/pre-build
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+DIR="$1"
+make --silent -C "$DIR" -f "$DIR/gen-source.mk" all
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/eval/desc b/t/recipes/checks/debian/debconf/debconf-missing-dep/eval/desc
new file mode 100644
index 0000000..baab935
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-missing-dep
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-missing-dep/eval/hints b/t/recipes/checks/debian/debconf/debconf-missing-dep/eval/hints
new file mode 100644
index 0000000..4f4dcf5
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-missing-dep/eval/hints
@@ -0,0 +1 @@
+debconf-missing-dep (binary): missing-debconf-dependency
diff --git a/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/config b/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/config
new file mode 100644
index 0000000..6f264ea
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/config
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/postinst
new file mode 100644
index 0000000..0ae7a18
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/fill-values
new file mode 100644
index 0000000..7075c56
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-no-templates/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-no-templates
+Description: Test for missing debconf templates
diff --git a/t/recipes/checks/debian/debconf/debconf-no-templates/eval/desc b/t/recipes/checks/debian/debconf/debconf-no-templates/eval/desc
new file mode 100644
index 0000000..f1d7d8e
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-no-templates/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-no-templates
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-no-templates/eval/hints b/t/recipes/checks/debian/debconf/debconf-no-templates/eval/hints
new file mode 100644
index 0000000..dac69aa
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-no-templates/eval/hints
@@ -0,0 +1 @@
+debconf-no-templates (binary): no-debconf-templates
diff --git a/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/config b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/config
new file mode 100644
index 0000000..6f264ea
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/config
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/templates b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/templates
new file mode 100644
index 0000000..adf2ece
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/debian/templates
@@ -0,0 +1,3 @@
+Template: debconf/syntax-error
+Type: note
+Description whoops, I forgot a colon
diff --git a/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/fill-values
new file mode 100644
index 0000000..2197de4
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-syntax-error/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-syntax-error
+Description: Test for syntax error in debconf files
diff --git a/t/recipes/checks/debian/debconf/debconf-syntax-error/eval/desc b/t/recipes/checks/debian/debconf/debconf-syntax-error/eval/desc
new file mode 100644
index 0000000..075c037
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-syntax-error/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-syntax-error
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-syntax-error/eval/hints b/t/recipes/checks/debian/debconf/debconf-syntax-error/eval/hints
new file mode 100644
index 0000000..d48999c
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-syntax-error/eval/hints
@@ -0,0 +1,2 @@
+debconf-syntax-error (source): syntax-error-in-debconf-template Cannot parse line 3: Description whoops, I forgot a colon [debian/templates]
+debconf-syntax-error (binary): syntax-error-in-debconf-template Cannot parse line 3: Description whoops, I forgot a colon [templates]
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/control.in b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/control.in
new file mode 100644
index 0000000..1140f19
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, cdebconf
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en.po b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en.po
new file mode 100644
index 0000000..0734922
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en.po
@@ -0,0 +1,241 @@
+# English translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-01-01 22:34+0000\n"
+"PO-Revision-Date: 2012-10-01 22:54+0200\n"
+"Last-Translator: Niels Thykier <niels@thykier.net>\n"
+"Language-Team: English\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr "Useless note"
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "left, right, up, down"
+msgstr "left, right, up, down"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Pick the odd one out"
+msgstr "Pick the odd one out"
+
+#. Type: text
+#. Description
+#: ../templates:3001
+msgid "Missing template field."
+msgstr "Missing template field."
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this a bad template?"
+msgstr "Is this a bad template?"
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Missing type"
+msgstr "Missing type"
+
+#. Type: lintian
+#. Description
+#: ../templates:6001
+msgid "Template with unknown type"
+msgstr "Template with unknown type"
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "How do you like the default?"
+msgstr "How do you like the default?"
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "On a scale of \"false\" to \"true\"."
+msgstr "On a scale of \"false\" to \"true\"."
+
+#. Type: select
+#. Description
+#: ../templates:8001
+msgid "A boolean type would have been better"
+msgstr "A boolean type would have been better"
+
+#. Type: select
+#. Description
+#: ../templates:9001
+msgid "Preference"
+msgstr "Preference"
+
+#. Type: select
+#. Description
+#: ../templates:10001
+msgid "Missing a Choices field"
+msgstr "Missing a Choices field"
+
+#. Type: error
+#. Description
+#. Type: error
+#. Description
+#: ../templates:12001
+msgid "Duplicate long description"
+msgstr "Duplicate long description"
+
+#. Type: boolean
+#. Description
+#: ../templates:13001
+msgid "Is the field below unknown?"
+msgstr "Is the field below unknown?"
+
+#. Type: string
+#. Description
+#: ../templates:14001
+msgid "What is the name of this package checker:"
+msgstr "What is the name of this package checker:"
+
+#. Type: select
+#. Description
+#: ../templates:15001
+msgid "Select either x or y"
+msgstr "Select either x or y"
+
+#. Type: boolean
+#. Description
+#: ../templates:16001
+msgid "Lintian is the best!"
+msgstr "Lintian is the best!"
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Do you like sakana?"
+msgstr "Do you like sakana?"
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Or do you prefer sake?"
+msgstr "Or do you prefer sake?"
+
+#. Type: note
+#. Description
+#: ../templates:18001
+msgid "Aren't you tired of all these debconf prompts?"
+msgstr "Aren't you tired of all these debconf prompts?"
+
+#. Type: boolean
+#. Description
+#: ../templates:19001
+msgid ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+msgstr ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+
+#. Type: select
+#. Description
+#: ../templates:20001
+msgid "I think Lintian is the best"
+msgstr "I think Lintian is the best"
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Do you like Lintian?"
+msgstr "Do you like Lintian?"
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Pick \"yes\" if you do."
+msgstr "Pick \"yes\" if you do."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid "Name the title of this song:"
+msgstr "Name the title of this song:"
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+msgstr ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+msgstr ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+msgstr ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+msgstr ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+msgstr ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+
+#. Type: entropy
+#. Description
+#: ../templates:23001
+#| msgid "Template with unknown type"
+msgid "Template with entropy type"
+msgstr "Template with unknown type"
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en_US.po b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en_US.po
new file mode 100644
index 0000000..450a03c
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/en_US.po
@@ -0,0 +1,223 @@
+# English translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-01-01 22:34+0000\n"
+"PO-Revision-Date: 2012-10-01 22:54+0200\n"
+"Last-Translator: Russ Allbery <rra@debian.org>\n"
+"Language-Team: English <debian-i18n@lists.debian.org>\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "left, right, up, down"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Pick the odd one out"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../templates:3001
+msgid "Missing template field."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this a bad template?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Missing type"
+msgstr ""
+
+#. Type: lintian
+#. Description
+#: ../templates:6001
+msgid "Template with unknown type"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "How do you like the default?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "On a scale of \"false\" to \"true\"."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:8001
+msgid "A boolean type would have been better"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:9001
+msgid "Preference"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:10001
+msgid "Missing a Choices field"
+msgstr ""
+
+#. Type: error
+#. Description
+#. Type: error
+#. Description
+#: ../templates:12001
+msgid "Duplicate long description"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:13001
+msgid "Is the field below unknown?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:14001
+msgid "What is the name of this package checker:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:15001
+msgid "Select either x or y"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:16001
+msgid "Lintian is the best!"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Do you like sakana?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Or do you prefer sake?"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:18001
+msgid "Aren't you tired of all these debconf prompts?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:19001
+msgid ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:20001
+msgid "I think Lintian is the best"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Do you like Lintian?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Pick \"yes\" if you do."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid "Name the title of this song:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+msgstr ""
+
+#. Type: entropy
+#. Description
+#: ../templates:23001
+msgid "Template with entropy type"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..b7f5a7b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/po/templates.pot
@@ -0,0 +1,223 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-01-01 22:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "left, right, up, down"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Pick the odd one out"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../templates:3001
+msgid "Missing template field."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this a bad template?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Missing type"
+msgstr ""
+
+#. Type: lintian
+#. Description
+#: ../templates:6001
+msgid "Template with unknown type"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "How do you like the default?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "On a scale of \"false\" to \"true\"."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:8001
+msgid "A boolean type would have been better"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:9001
+msgid "Preference"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:10001
+msgid "Missing a Choices field"
+msgstr ""
+
+#. Type: error
+#. Description
+#. Type: error
+#. Description
+#: ../templates:12001
+msgid "Duplicate long description"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:13001
+msgid "Is the field below unknown?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:14001
+msgid "What is the name of this package checker:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:15001
+msgid "Select either x or y"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:16001
+msgid "Lintian is the best!"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Do you like sakana?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Or do you prefer sake?"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:18001
+msgid "Aren't you tired of all these debconf prompts?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:19001
+msgid ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:20001
+msgid "I think Lintian is the best"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Do you like Lintian?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Pick \"yes\" if you do."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid "Name the title of this song:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+msgstr ""
+
+#. Type: entropy
+#. Description
+#: ../templates:23001
+msgid "Template with entropy type"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/postinst b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/templates b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/templates
new file mode 100644
index 0000000..46ca184
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/debian/templates
@@ -0,0 +1,124 @@
+Template: debconf/translated
+Type: error
+_Description: Useless note
+
+Template: debconf/unsplit-choices
+Type: select
+_Choices: left, right, up, down
+_Description: Pick the odd one out
+
+Type: text
+_Description: Missing template field.
+
+Template: debconf-malformed-template
+Type: boolean
+_Description: Is this a bad template?
+
+Template: debconf/no-type
+_Description: Missing type
+
+Template: debconf/unknown-type
+Type: lintian
+_Description: Template with unknown type
+
+Template: debconf/boolean-bogus-default
+Type: boolean
+Default: lintian
+_Description: How do you like the default?
+ On a scale of "false" to "true".
+
+Template: debconf/select-boolean-choice
+Type: select
+Choices: yes, no
+_Description: A boolean type would have been better
+
+Template: debconf/select-empty-trans-choices
+Type: select
+Choices: sakana, sake
+Choices-Da:
+_Description: Preference
+
+Template: debconf/select-without-choices
+Type: select
+_Description: Missing a Choices field
+
+Template: debconf/no-description
+Type: error
+
+Template: debconf/duplicate-long-desc
+Type: error
+_Description: Duplicate long description
+ Duplicate long description
+
+Template: debconf/unknown-field
+Type: boolean
+_Description: Is the field below unknown?
+Unknown-field: yes, it is.
+
+Template: debconf/malformed-prompt
+Type: string
+_Description: What is the name of this package checker:
+
+Template: debconf/imperative-select
+Type: select
+Choices: x,y
+_Description: Select either x or y
+
+Template: debconf/malformed-question
+Type: boolean
+_Description: Lintian is the best!
+
+Template: debconf/question-in-extended
+Type: boolean
+_Description: Do you like sakana?
+ Or do you prefer sake?
+
+Template: debconf/malformed-note-title
+Type: note
+_Description: Aren't you tired of all these debconf prompts?
+
+Template: debconf/too-long-short-desc
+Type: boolean
+_Description: This template has a very long short description, is that what you call an oxymoron?
+
+Template: debconf/first-person
+Type: select
+Choices: lintian, no-lintian
+_Description: I think Lintian is the best
+
+Template: debconf/assumption
+Type: boolean
+_Description: Do you like Lintian?
+ Pick "yes" if you do.
+
+Template: debconf/5-green-bottles-on-the-wall
+Type: string
+_Description: Name the title of this song:
+ Five green bottles sitting on the wall,
+ Five green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be four green bottles sitting on the wall.
+ .
+ Four green bottles sitting on the wall,
+ Four green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be three green bottles sitting on the wall.
+ .
+ Three green bottles sitting on the wall,
+ Three green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be two green bottles sitting on the wall.
+ .
+ Two green bottles sitting on the wall,
+ Two green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be one green bottle sitting on the wall.
+ .
+ One green bottle sitting on the wall,
+ One green bottle sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be no green bottles sitting on the wall.
+
+Template: debconf/entropy-type
+Type: entropy
+_Description: Template with entropy type
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/fill-values
new file mode 100644
index 0000000..2018d2c
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-templates-general
+Description: Test for various debconf template issues
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/config-gen.pl b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/config-gen.pl
new file mode 100644
index 0000000..e6588b7
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/config-gen.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Helper script to generate d/config from d/templates.
+# It is just here to make sure all templates are "used".
+
+use strict;
+use warnings;
+
+print <<EOF ;
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+EOF
+
+for my $line ( <STDIN> ) {
+
+ if ($line =~ /^Template:\s*(\S+)\s*$/) {
+
+ my $template = $1;
+ next
+ unless defined $template;
+
+ print "db_input high $template || true\n";
+ print "db_go\n\n";
+ }
+}
+
+exit 0;
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/gen-source.mk b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/gen-source.mk
new file mode 100755
index 0000000..f6f5975
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/orig/gen-source.mk
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+all: debian/config
+
+debian/config: debian/templates
+ perl config-gen.pl < $< > $@
+
+
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/pre-build b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/pre-build
new file mode 100755
index 0000000..bfcb477
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/build-spec/pre-build
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+DIR="$1"
+make --silent -C "$DIR" -f "$DIR/gen-source.mk" all
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/eval/desc b/t/recipes/checks/debian/debconf/debconf-templates-general/eval/desc
new file mode 100644
index 0000000..4e1bb81
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-templates-general
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-templates-general/eval/hints b/t/recipes/checks/debian/debconf/debconf-templates-general/eval/hints
new file mode 100644
index 0000000..908230a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-templates-general/eval/hints
@@ -0,0 +1,22 @@
+debconf-templates-general (source): template-uses-unsplit-choices debconf/unsplit-choices [debian/templates:7]
+debconf-templates-general (binary): using-question-in-extended-description-in-templates debconf/question-in-extended [templates:91]
+debconf-templates-general (binary): using-imperative-form-in-templates debconf/imperative-select [templates:81]
+debconf-templates-general (binary): using-first-person-in-templates debconf/first-person [templates:109]
+debconf-templates-general (binary): unknown-template-type lintian [templates:27]
+debconf-templates-general (binary): unknown-field-in-templates debconf/unknown-field Unknown-field [templates:71]
+debconf-templates-general (binary): too-long-short-description-in-templates debconf/too-long-short-desc [templates:103]
+debconf-templates-general (binary): too-long-extended-description-in-templates debconf/5-green-bottles-on-the-wall [templates:121]
+debconf-templates-general (binary): select-without-choices debconf/select-without-choices [templates:52]
+debconf-templates-general (binary): select-with-boolean-choices debconf/select-boolean-choice [templates:41]
+debconf-templates-general (binary): no-template-type debconf/no-type [templates:22]
+debconf-templates-general (binary): no-template-name [templates:13]
+debconf-templates-general (binary): no-template-description debconf/no-description [templates:57]
+debconf-templates-general (binary): mismatch-translated-choices debconf/select-empty-trans-choices Choices-Da [templates:47]
+debconf-templates-general (binary): malformed-title-in-templates debconf/malformed-note-title [templates:98]
+debconf-templates-general (binary): malformed-template-name debconf-malformed-template [templates:17]
+debconf-templates-general (binary): malformed-question-in-templates debconf/malformed-question [templates:86]
+debconf-templates-general (binary): malformed-prompt-in-templates debconf/malformed-prompt [templates:75]
+debconf-templates-general (binary): making-assumptions-about-interfaces-in-templates debconf/assumption [templates:114]
+debconf-templates-general (binary): empty-translated-choices debconf/select-empty-trans-choices Choices-Da [templates:47]
+debconf-templates-general (binary): duplicate-long-description-in-template debconf/duplicate-long-desc [templates:62]
+debconf-templates-general (binary): boolean-template-has-bogus-default debconf/boolean-bogus-default lintian [templates:33]
diff --git a/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/dpkg-overrides b/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/dpkg-overrides
new file mode 100644
index 0000000..250f0b6
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/dpkg-overrides
@@ -0,0 +1 @@
+-DBinary="../unpacked/debian/changelog@NULL@"
diff --git a/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/fill-values b/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/fill-values
new file mode 100644
index 0000000..f979196
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: debconf-traversal
+Version: 1
+Description: Test for traversal issues via debconf templates
diff --git a/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/post-build b/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/post-build
new file mode 100755
index 0000000..b419dc6
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-traversal/build-spec/post-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="$1"
+
+perl -pi -e 's/\@NULL\@/\0/g' "$product"
diff --git a/t/recipes/checks/debian/debconf/debconf-traversal/eval/desc b/t/recipes/checks/debian/debconf/debconf-traversal/eval/desc
new file mode 100644
index 0000000..e4e1548
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-traversal/eval/desc
@@ -0,0 +1,3 @@
+Testname: debconf-traversal
+Test-Against: syntax-error-in-debconf-template
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/debconf-traversal/eval/hints b/t/recipes/checks/debian/debconf/debconf-traversal/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/debconf-traversal/eval/hints
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/eval/desc b/t/recipes/checks/debian/debconf/legacy-debconf/eval/desc
new file mode 100644
index 0000000..d6e9b44
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/eval/hints b/t/recipes/checks/debian/debconf/legacy-debconf/eval/hints
new file mode 100644
index 0000000..688e979
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/eval/hints
@@ -0,0 +1,49 @@
+debconf-udeb (udeb): unknown-field-in-templates debian-installer/debconf-udeb/title description-de.UTF-8 [templates:4]
+debconf-udeb (udeb): unknown-field-in-templates debian-installer/debconf-udeb/title description [templates:3]
+debconf-udeb (udeb): missing-debconf-dependency
+debconf (source): template-uses-unsplit-choices debconf/testmulti-escape [debian/debconf-test.templates:12]
+debconf-test-preinst (binary): unknown-field-in-templates debconf/test description [templates:3]
+debconf-test-preinst (binary): possible-debconf-note-abuse debconf/test [preinst:8]
+debconf-test-preinst (binary): missing-debconf-dependency-for-preinst
+debconf-test-preinst (binary): loads-obsolete-confmodule /usr/share/debconf/confmodule.sh [preinst:4]
+debconf-test-postinst (binary): unknown-field-in-templates debconf/test description [templates:3]
+debconf-test-postinst (binary): postinst-uses-db-input [postinst:5]
+debconf-test-postinst (binary): possible-debconf-note-abuse debconf/test [postinst:5]
+debconf-test-postinst (binary): no-debconf-config
+debconf-test-noscripts (binary): unused-debconf-template debconf/test [templates:1]
+debconf-test-noscripts (binary): unknown-field-in-templates debconf/test description [templates:3]
+debconf-test-noscripts (binary): postrm-does-not-purge-debconf postrm
+debconf-test-noscripts (binary): no-debconf-config
+debconf-test (binary): using-question-in-extended-description-in-templates debconf/testboolean [templates:19]
+debconf-test (binary): using-imperative-form-in-templates debconf/should-be-boolean [templates:93]
+debconf-test (binary): using-imperative-form-in-templates debconf/1st-person [templates:54]
+debconf-test (binary): using-first-person-in-templates debconf/1st-person [templates:54]
+debconf-test (binary): unused-debconf-template debconf/translate [templates:67]
+debconf-test (binary): unused-debconf-template debconf/teststring [templates:22]
+debconf-test (binary): unused-debconf-template debconf/testnote [templates:47]
+debconf-test (binary): unused-debconf-template debconf/testmulti-escape [templates:11]
+debconf-test (binary): unused-debconf-template debconf/testmulti [templates:5]
+debconf-test (binary): unused-debconf-template debconf/testboolean [templates:17]
+debconf-test (binary): unused-debconf-template debconf/should-be-no-longer-a-problem [templates:96]
+debconf-test (binary): unused-debconf-template debconf/should-be-boolean [templates:90]
+debconf-test (binary): unused-debconf-template debconf/no-description [templates:64]
+debconf-test (binary): unused-debconf-template debconf/language [templates:79]
+debconf-test (binary): unused-debconf-template debconf/internal [templates:58]
+debconf-test (binary): unused-debconf-template debconf/error [templates:85]
+debconf-test (binary): unused-debconf-template debconf/1st-person [templates:51]
+debconf-test (binary): unknown-field-in-templates debconf/test description [templates:3]
+debconf-test (binary): unknown-debconf-priority normal [config:10]
+debconf-test (binary): unknown-debconf-priority LOW [config:9]
+debconf-test (binary): too-long-short-description-in-templates debconf/testnote [templates:49]
+debconf-test (binary): too-long-extended-description-in-templates debconf/teststring [templates:24]
+debconf-test (binary): select-with-boolean-choices debconf/should-be-boolean [templates:92]
+debconf-test (binary): possible-debconf-note-abuse debconf/test [postinst:7]
+debconf-test (binary): possible-debconf-note-abuse debconf/test [config:18]
+debconf-test (binary): no-template-type debconf/language [templates:79]
+debconf-test (binary): no-template-description debconf/no-description [templates:64]
+debconf-test (binary): mismatch-translated-choices debconf/testmulti-escape Choices-de.UTF-8 [templates:13]
+debconf-test (binary): malformed-title-in-templates debconf/testnote [templates:49]
+debconf-test (binary): malformed-question-in-templates debconf/testboolean [templates:19]
+debconf-test (binary): malformed-question-in-templates debconf/should-be-no-longer-a-problem [templates:98]
+debconf-test (binary): malformed-prompt-in-templates debconf/teststring [templates:24]
+debconf-test (binary): making-assumptions-about-interfaces-in-templates debconf/testboolean [templates:19]
diff --git a/t/recipes/checks/debian/debconf/legacy-debconf/eval/post-test b/t/recipes/checks/debian/debconf/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/debconf/national-encoding/build-spec/debian/templates b/t/recipes/checks/debian/debconf/national-encoding/build-spec/debian/templates
new file mode 100644
index 0000000..9a2dfc1
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/national-encoding/build-spec/debian/templates
@@ -0,0 +1,3 @@
+Template: debconf/translated
+Type: error
+_Description: Nicht nützlich
diff --git a/t/recipes/checks/debian/debconf/national-encoding/build-spec/fill-values b/t/recipes/checks/debian/debconf/national-encoding/build-spec/fill-values
new file mode 100644
index 0000000..d6c7a70
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/national-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: national-encoding
+Description: National encoding in debconf template
diff --git a/t/recipes/checks/debian/debconf/national-encoding/eval/desc b/t/recipes/checks/debian/debconf/national-encoding/eval/desc
new file mode 100644
index 0000000..7350979
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/national-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: national-encoding
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/national-encoding/eval/hints b/t/recipes/checks/debian/debconf/national-encoding/eval/hints
new file mode 100644
index 0000000..6869670
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/national-encoding/eval/hints
@@ -0,0 +1 @@
+national-encoding (binary): no-debconf-config
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/English.po b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/English.po
new file mode 100644
index 0000000..e99b822
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/English.po
@@ -0,0 +1 @@
+Not a PO file or an English translation.
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..da5857e
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,3 @@
+# This is a comment, which should be ignored.
+[type: gettext/rfc822deb] templates
+some-other-file
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/de.po b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/de.po
new file mode 100644
index 0000000..545fd25
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/de.po
@@ -0,0 +1,2 @@
+This is just some random other file that isn't a German translation at
+all.
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..420734f
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/po/templates.pot
@@ -0,0 +1,30 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Lintian 2.4.3\n"
+"PO-Revision-Date: +2010-07-25 17:07 -0700\n"
+"Last-Translator: Russ Allbery <rra@debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Default
+#: ../templates:1001
+msgid "foo"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "This is a string question used for testing:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "This is a second string question:"
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "This one ensures no 100% translation of the template."
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates
new file mode 100644
index 0000000..b626825
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates
@@ -0,0 +1,10 @@
+Template: po-debconf-general/test
+Type: string
+_Default: foo
+Description: This is a string question used for testing:
+
+Template: po-debconf-general/test-2
+Type: string
+Default: bar
+_Description: This is a second string question:
+ This one ensures no 100% translation of the template.
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates.en_US b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates.en_US
new file mode 100644
index 0000000..617a474
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/debian/templates.en_US
@@ -0,0 +1,5 @@
+Template: po-debconf-general/test
+Type: string
+Default: foo
+_Description: This is an English translation that shouldn't be in this
+ directory.
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/fill-values b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/fill-values
new file mode 100644
index 0000000..bbcbc61
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: po-debconf-general
+Description: General tests for debconf translations
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/eval/desc b/t/recipes/checks/debian/debconf/po-debconf-general/eval/desc
new file mode 100644
index 0000000..c4ebe68
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: po-debconf-general
+Check: debian/debconf
diff --git a/t/recipes/checks/debian/debconf/po-debconf-general/eval/hints b/t/recipes/checks/debian/debconf/po-debconf-general/eval/hints
new file mode 100644
index 0000000..0d9bd21
--- /dev/null
+++ b/t/recipes/checks/debian/debconf/po-debconf-general/eval/hints
@@ -0,0 +1,3 @@
+po-debconf-general (binary): unused-debconf-template po-debconf-general/test-2 [templates:6]
+po-debconf-general (binary): unused-debconf-template po-debconf-general/test [templates:1]
+po-debconf-general (binary): no-debconf-config
diff --git a/t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/debian/not-forwarded.desktop b/t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/debian/not-forwarded.desktop
new file mode 100644
index 0000000..7d47ab9
--- /dev/null
+++ b/t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/debian/not-forwarded.desktop
@@ -0,0 +1 @@
+A MENU ENTRY ACCORDING FREEDESKTOP.ORG
diff --git a/t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/fill-values b/t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/fill-values
new file mode 100644
index 0000000..3cf49b9
--- /dev/null
+++ b/t/recipes/checks/debian/desktop-entries/desktop-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: desktop-file
+Skeleton: source-non-native
+Description: Maintainer keeps a *.desktop menu item in ./debian
diff --git a/t/recipes/checks/debian/desktop-entries/desktop-file/eval/desc b/t/recipes/checks/debian/desktop-entries/desktop-file/eval/desc
new file mode 100644
index 0000000..0e834a9
--- /dev/null
+++ b/t/recipes/checks/debian/desktop-entries/desktop-file/eval/desc
@@ -0,0 +1,3 @@
+Testname: desktop-file
+Check: debian/desktop-entries
+See-Also: social contract item 2, developer-reference 3.1.4, policy 4.3, Bug#755161
diff --git a/t/recipes/checks/debian/desktop-entries/desktop-file/eval/hints b/t/recipes/checks/debian/desktop-entries/desktop-file/eval/hints
new file mode 100644
index 0000000..2da647f
--- /dev/null
+++ b/t/recipes/checks/debian/desktop-entries/desktop-file/eval/hints
@@ -0,0 +1 @@
+desktop-file (source): maintainer-desktop-entry [debian/not-forwarded.desktop]
diff --git a/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS b/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS
new file mode 100644
index 0000000..da28de5
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS
@@ -0,0 +1,62 @@
+unison (2.48.4-3) unstable; urgency=medium
+
+ This version is compiled with a new version of OCaml (4.08.1) and
+ is incompatible with previous versions of unison shipped in Debian,
+ in particular the one in Debian 10 (buster).
+
+ -- Stéphane Glondu <glondu@debian.org> Tue, 03 Dec 2019 11:38:54 +0100
+
+unison (2.40.63-1) experimental; urgency=low
+
+ This new version uses a protocol incompatible with the precedent one
+ (2.32.52) which was the version available in Debian 6.0 (a.k.a.
+ "Squeeze"). If you want to synchronize with the previous version of
+ Unison, use the unison2.32.52 package.
+
+ -- Stéphane Glondu <glondu@debian.org> Sat, 14 Jan 2012 11:31:14 +0100
+
+unison (2.13.16-1) unstable; urgency=low
+
+ As of version 2.10.2, the package use an alternative to let the user
+ choose between unison and unison2.9.1 binaries for unison and
+ unison-gtk. The binaries used in unison and unison-gtk package were
+ versionned binaries (ie unison2.10.2 and unison2.10.2-gtk). This was a
+ mistake. When trying to upgrade to new upstream version, former
+ alternatives were not removed and you keep symlinks to non existent
+ binaries (ie you stay with unison pointing to unison2.10.2). This
+ behavior is corrected by using a stable name for unison binaries (ie
+ unison-latest-stable).
+
+ If you have configured alternatives, you may encounter some problem,
+ because during upgrade the symlink won't be updated, since it has been
+ user configured. In this case, you should run "update-alternatives
+ --auto unison && update-alternatives --auto unison-gtk" to restore the
+ good behavior.
+
+ -- Sylvain Le Gall <gildor@debian.org> Sat, 13 Aug 2005 20:17:11 +0200
+
+unison (2.10.2-2) unstable; urgency=low
+
+ Upgrading from version 2.9.1 to 2.10.2 involves a lot of changes. In
+ particular, most of the configuration of the former stable release
+ (2.9.1) is no longer valid. Archive format has changed: if you have any
+ unsynchronized changes when you upgrade to this new archive format, you
+ have to merge them all by hand. You can also use the new package
+ unison2.9.1 (which is the former stable release) to synchronise your
+ old archive before migrating.
+
+ Version 2.10.2 and 2.9.1 are not compatible. You will need to have the
+ same version of unison on both end of the synchronisation link (ie if
+ you need to synchronise two computers, you will need to have unison
+ 2.10.2 on both).
+
+ -- Sylvain Le Gall <gildor@debian.org> Mon, 25 Apr 2005 23:06:44 +0200
+
+unison (2.10.2-1) unstable; urgency=medium
+
+ With this new stable release, a package split has been made. Now the
+ package unison will always hold the latest stable release of unison.
+ If you need to use the former stable release, you will need to install
+ unison2.9.1, which is a new debian package.
+
+ -- Sylvain Le Gall <gildor@debian.org> Tue, 19 Apr 2005 00:08:05 +0200
diff --git a/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..da28de5
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/debian/NEWS.Debian
@@ -0,0 +1,62 @@
+unison (2.48.4-3) unstable; urgency=medium
+
+ This version is compiled with a new version of OCaml (4.08.1) and
+ is incompatible with previous versions of unison shipped in Debian,
+ in particular the one in Debian 10 (buster).
+
+ -- Stéphane Glondu <glondu@debian.org> Tue, 03 Dec 2019 11:38:54 +0100
+
+unison (2.40.63-1) experimental; urgency=low
+
+ This new version uses a protocol incompatible with the precedent one
+ (2.32.52) which was the version available in Debian 6.0 (a.k.a.
+ "Squeeze"). If you want to synchronize with the previous version of
+ Unison, use the unison2.32.52 package.
+
+ -- Stéphane Glondu <glondu@debian.org> Sat, 14 Jan 2012 11:31:14 +0100
+
+unison (2.13.16-1) unstable; urgency=low
+
+ As of version 2.10.2, the package use an alternative to let the user
+ choose between unison and unison2.9.1 binaries for unison and
+ unison-gtk. The binaries used in unison and unison-gtk package were
+ versionned binaries (ie unison2.10.2 and unison2.10.2-gtk). This was a
+ mistake. When trying to upgrade to new upstream version, former
+ alternatives were not removed and you keep symlinks to non existent
+ binaries (ie you stay with unison pointing to unison2.10.2). This
+ behavior is corrected by using a stable name for unison binaries (ie
+ unison-latest-stable).
+
+ If you have configured alternatives, you may encounter some problem,
+ because during upgrade the symlink won't be updated, since it has been
+ user configured. In this case, you should run "update-alternatives
+ --auto unison && update-alternatives --auto unison-gtk" to restore the
+ good behavior.
+
+ -- Sylvain Le Gall <gildor@debian.org> Sat, 13 Aug 2005 20:17:11 +0200
+
+unison (2.10.2-2) unstable; urgency=low
+
+ Upgrading from version 2.9.1 to 2.10.2 involves a lot of changes. In
+ particular, most of the configuration of the former stable release
+ (2.9.1) is no longer valid. Archive format has changed: if you have any
+ unsynchronized changes when you upgrade to this new archive format, you
+ have to merge them all by hand. You can also use the new package
+ unison2.9.1 (which is the former stable release) to synchronise your
+ old archive before migrating.
+
+ Version 2.10.2 and 2.9.1 are not compatible. You will need to have the
+ same version of unison on both end of the synchronisation link (ie if
+ you need to synchronise two computers, you will need to have unison
+ 2.10.2 on both).
+
+ -- Sylvain Le Gall <gildor@debian.org> Mon, 25 Apr 2005 23:06:44 +0200
+
+unison (2.10.2-1) unstable; urgency=medium
+
+ With this new stable release, a package split has been made. Now the
+ package unison will always hold the latest stable release of unison.
+ If you need to use the former stable release, you will need to install
+ unison2.9.1, which is a new debian package.
+
+ -- Sylvain Le Gall <gildor@debian.org> Tue, 19 Apr 2005 00:08:05 +0200
diff --git a/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/fill-values b/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/fill-values
new file mode 100644
index 0000000..630a0bb
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/duplicate-news-files/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: duplicate-news-files
+Description: Contains both NEWS and NEWS.Debian files.
diff --git a/t/recipes/checks/debian/filenames/duplicate-news-files/eval/desc b/t/recipes/checks/debian/filenames/duplicate-news-files/eval/desc
new file mode 100644
index 0000000..32c4856
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/duplicate-news-files/eval/desc
@@ -0,0 +1,3 @@
+Testname: duplicate-news-files
+See-Also: #429510, #946126
+Check: debian/filenames
diff --git a/t/recipes/checks/debian/filenames/duplicate-news-files/eval/hints b/t/recipes/checks/debian/filenames/duplicate-news-files/eval/hints
new file mode 100644
index 0000000..a307101
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/duplicate-news-files/eval/hints
@@ -0,0 +1 @@
+duplicate-news-files (source): duplicate-packaging-file better: debian/NEWS [debian/NEWS.Debian]
diff --git a/t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..da28de5
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/debian/NEWS.Debian
@@ -0,0 +1,62 @@
+unison (2.48.4-3) unstable; urgency=medium
+
+ This version is compiled with a new version of OCaml (4.08.1) and
+ is incompatible with previous versions of unison shipped in Debian,
+ in particular the one in Debian 10 (buster).
+
+ -- Stéphane Glondu <glondu@debian.org> Tue, 03 Dec 2019 11:38:54 +0100
+
+unison (2.40.63-1) experimental; urgency=low
+
+ This new version uses a protocol incompatible with the precedent one
+ (2.32.52) which was the version available in Debian 6.0 (a.k.a.
+ "Squeeze"). If you want to synchronize with the previous version of
+ Unison, use the unison2.32.52 package.
+
+ -- Stéphane Glondu <glondu@debian.org> Sat, 14 Jan 2012 11:31:14 +0100
+
+unison (2.13.16-1) unstable; urgency=low
+
+ As of version 2.10.2, the package use an alternative to let the user
+ choose between unison and unison2.9.1 binaries for unison and
+ unison-gtk. The binaries used in unison and unison-gtk package were
+ versionned binaries (ie unison2.10.2 and unison2.10.2-gtk). This was a
+ mistake. When trying to upgrade to new upstream version, former
+ alternatives were not removed and you keep symlinks to non existent
+ binaries (ie you stay with unison pointing to unison2.10.2). This
+ behavior is corrected by using a stable name for unison binaries (ie
+ unison-latest-stable).
+
+ If you have configured alternatives, you may encounter some problem,
+ because during upgrade the symlink won't be updated, since it has been
+ user configured. In this case, you should run "update-alternatives
+ --auto unison && update-alternatives --auto unison-gtk" to restore the
+ good behavior.
+
+ -- Sylvain Le Gall <gildor@debian.org> Sat, 13 Aug 2005 20:17:11 +0200
+
+unison (2.10.2-2) unstable; urgency=low
+
+ Upgrading from version 2.9.1 to 2.10.2 involves a lot of changes. In
+ particular, most of the configuration of the former stable release
+ (2.9.1) is no longer valid. Archive format has changed: if you have any
+ unsynchronized changes when you upgrade to this new archive format, you
+ have to merge them all by hand. You can also use the new package
+ unison2.9.1 (which is the former stable release) to synchronise your
+ old archive before migrating.
+
+ Version 2.10.2 and 2.9.1 are not compatible. You will need to have the
+ same version of unison on both end of the synchronisation link (ie if
+ you need to synchronise two computers, you will need to have unison
+ 2.10.2 on both).
+
+ -- Sylvain Le Gall <gildor@debian.org> Mon, 25 Apr 2005 23:06:44 +0200
+
+unison (2.10.2-1) unstable; urgency=medium
+
+ With this new stable release, a package split has been made. Now the
+ package unison will always hold the latest stable release of unison.
+ If you need to use the former stable release, you will need to install
+ unison2.9.1, which is a new debian package.
+
+ -- Sylvain Le Gall <gildor@debian.org> Tue, 19 Apr 2005 00:08:05 +0200
diff --git a/t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/fill-values b/t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/fill-values
new file mode 100644
index 0000000..91ce21d
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/news-has-debian-extension/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: news-has-debian-extension
+Description: Contains a NEWS.Debian file.
diff --git a/t/recipes/checks/debian/filenames/news-has-debian-extension/eval/desc b/t/recipes/checks/debian/filenames/news-has-debian-extension/eval/desc
new file mode 100644
index 0000000..bcecab7
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/news-has-debian-extension/eval/desc
@@ -0,0 +1,3 @@
+Testname: news-has-debian-extension
+See-Also: #429510, #946126, #946041
+Check: debian/filenames
diff --git a/t/recipes/checks/debian/filenames/news-has-debian-extension/eval/hints b/t/recipes/checks/debian/filenames/news-has-debian-extension/eval/hints
new file mode 100644
index 0000000..7227dd6
--- /dev/null
+++ b/t/recipes/checks/debian/filenames/news-has-debian-extension/eval/hints
@@ -0,0 +1 @@
+news-has-debian-extension (source): incorrect-packaging-filename better: debian/NEWS [debian/NEWS.Debian]
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/changelog.in b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7174e69
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/control.in b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/control.in
new file mode 100644
index 0000000..c4d5304
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/install b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/install
new file mode 100644
index 0000000..47fc6a3
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/debian/install
@@ -0,0 +1 @@
+dummy usr/share/doc/foo/
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/fill-values b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/fill-values
new file mode 100644
index 0000000..faa216c
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-crlf-eols
+Package-Architecture: all
+Description: Check that control files with CRLF EOLs are reported
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/orig/dummy b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/orig/dummy
new file mode 100644
index 0000000..5c3118d
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/build-spec/orig/dummy
@@ -0,0 +1 @@
+dummy file
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/desc b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/desc
new file mode 100644
index 0000000..36a6eab
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-crlf-eols
+Check: debian/line-separators
diff --git a/t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/hints b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/hints
new file mode 100644
index 0000000..b1c59a6
--- /dev/null
+++ b/t/recipes/checks/debian/line-separators/cruft-crlf-eols/eval/hints
@@ -0,0 +1,2 @@
+cruft-crlf-eols (source): carriage-return-line-feed [debian/control]
+cruft-crlf-eols (source): carriage-return-line-feed [debian/changelog]
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/debian/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/debian/lintian-overrides
new file mode 100644
index 0000000..2bcfb95
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/debian/lintian-overrides
@@ -0,0 +1,6 @@
+# This comment will not appear in the output, also the last
+# tag should not have a comment due to the empty line between
+# it and the one before it.
+
+# absolutly no context
+cute-field
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/fill-values
new file mode 100644
index 0000000..2a6e91a
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: absolutely-misspelled
+Description: Absolutely misspelled in override comment
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/desc b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/desc
new file mode 100644
index 0000000..5978f59
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/desc
@@ -0,0 +1,2 @@
+Testname: absolutely-misspelled
+Check: debian/lintian-overrides/comments
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/hints b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/hints
new file mode 100644
index 0000000..4aa816e
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/absolutely-misspelled/eval/hints
@@ -0,0 +1 @@
+absolutely-misspelled (binary): spelling-in-override-comment cute-field absolutly absolutely [usr/share/lintian/overrides/absolutely-misspelled:5]
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/debian/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/debian/lintian-overrides
new file mode 100644
index 0000000..050ab92
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/debian/lintian-overrides
@@ -0,0 +1,6 @@
+# This comment will not appear in the output, also the last
+# tag should not have a comment due to the empty line between
+# it and the one before it.
+
+# for postgresql
+cute-field
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/fill-values
new file mode 100644
index 0000000..8aa25ef
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lowercase-sql
+Description: PostgreSQL not properly capitalized in override comment
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/desc b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/desc
new file mode 100644
index 0000000..3955372
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/desc
@@ -0,0 +1,2 @@
+Testname: lowercase-sql
+Check: debian/lintian-overrides/comments
diff --git a/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/hints b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/hints
new file mode 100644
index 0000000..3ed46b3
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/comments/lowercase-sql/eval/hints
@@ -0,0 +1 @@
+lowercase-sql (binary): capitalization-in-override-comment cute-field postgresql PostgreSQL [usr/share/lintian/overrides/lowercase-sql:5]
diff --git a/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/debian/source/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/debian/source/lintian-overrides
new file mode 100644
index 0000000..c2811ff
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/debian/source/lintian-overrides
@@ -0,0 +1,2 @@
+cute-field duplicate-context-cute-field_1.0.dsc arch*
+cute-field duplicate-context-cute-field_1.0.dsc arch*
diff --git a/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/fill-values
new file mode 100644
index 0000000..474697d
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: duplicate-context-cute-field
+Skeleton: source-native
+Description: Same context used in two overrides
diff --git a/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/post-build b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/post-build
new file mode 100755
index 0000000..689ad67
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/build-spec/post-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="$1"
+
+perl -pi -e 's/^(Architecture:)/\L$1\E/' "$product"
diff --git a/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/desc b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/desc
new file mode 100644
index 0000000..6e79c37
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/desc
@@ -0,0 +1,2 @@
+Testname: duplicate-context-cute-field
+Check: debian/lintian-overrides/duplicate
diff --git a/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/hints b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/hints
new file mode 100644
index 0000000..ceb0be1
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/duplicate/duplicate-context-cute-field/eval/hints
@@ -0,0 +1 @@
+duplicate-context-cute-field (source): duplicate-override-context cute-field (lines 1 2) [debian/source/lintian-overrides]
diff --git a/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/fill-values
new file mode 100644
index 0000000..7521c6c
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-override-misplaced
+Description: Check for misplaced override file detection
diff --git a/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/orig/Makefile b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/orig/Makefile
new file mode 100644
index 0000000..a4c0682
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/build-spec/orig/Makefile
@@ -0,0 +1,18 @@
+ROOT = $(DESTDIR)/usr/share/doc/files-override-misplaced
+
+default:
+ :
+
+install:
+ mkdir -p $(DESTDIR)/usr/share/doc/files-override-misplaced
+ echo 'files-override-misplaced: some-override' \
+ > $(DESTDIR)/usr/share/doc/files-override-misplaced/override.lintian
+ echo 'files-override-misplaced: some-override' \
+ > $(DESTDIR)/usr/share/doc/files-override-misplaced/override.Lintian
+ gzip -n -9 $(DESTDIR)/usr/share/doc/files-override-misplaced/override.Lintian
+ mkdir -p $(DESTDIR)/usr/share/lintian/overrides/files-override-misplaced
+ touch $(DESTDIR)/usr/share/lintian/overrides/files-override-misplaced/some-override
+ mkdir -p $(DESTDIR)/usr/share/lintian/overrides/wrong-package
+ touch $(DESTDIR)/usr/share/lintian/overrides/wrong-package/some-override
+
+.PHONY: clean distclean realclean install check test
diff --git a/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/desc b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/desc
new file mode 100644
index 0000000..2954af8
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-override-misplaced
+Check: debian/lintian-overrides
diff --git a/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/hints b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/hints
new file mode 100644
index 0000000..788993e
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/files-override-misplaced/eval/hints
@@ -0,0 +1,4 @@
+files-override-misplaced (binary): override-file-in-wrong-package wrong-package [usr/share/lintian/overrides/wrong-package/some-override]
+files-override-misplaced (binary): override-file-in-wrong-location [usr/share/lintian/overrides/files-override-misplaced/some-override]
+files-override-misplaced (binary): override-file-in-wrong-location [usr/share/doc/files-override-misplaced/override.lintian]
+files-override-misplaced (binary): override-file-in-wrong-location [usr/share/doc/files-override-misplaced/override.Lintian.gz]
diff --git a/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/debian/source/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/debian/source/lintian-overrides
new file mode 100644
index 0000000..19eebe6
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/debian/source/lintian-overrides
@@ -0,0 +1 @@
+missing-colon (source) cute-field duplicate-context-cute-field_1.0.dsc arch*
diff --git a/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/fill-values
new file mode 100644
index 0000000..425ec11
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: missing-colon
+Skeleton: source-native
+Description: Missing colon in a source override
diff --git a/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/desc b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/desc
new file mode 100644
index 0000000..2a5f4dc
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/desc
@@ -0,0 +1,2 @@
+Testname: missing-colon
+Check: debian/lintian-overrides/malformed
diff --git a/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/hints b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/hints
new file mode 100644
index 0000000..81bace9
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/malformed/missing-colon/eval/hints
@@ -0,0 +1 @@
+missing-colon (source): malformed-override Expected a colon [debian/source/lintian-overrides:1]
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in
new file mode 100644
index 0000000..88afb0f
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Multi-Arch: same
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-nonrel
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (false positive)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a false-positive.
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64 b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64 b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values
new file mode 100644
index 0000000..085fb2f
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-multi-arch-same-package-has-arch-specific-overrides
+Description: Test for Multi-Arch: same package with arch-specific overrides
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc
new file mode 100644
index 0000000..dce7d2b
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-multi-arch-same-package-has-arch-specific-overrides
+Test-Architectures: amd64
+Check: debian/lintian-overrides/mystery
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints
new file mode 100644
index 0000000..a731e06
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints
@@ -0,0 +1,2 @@
+fields-multi-arch-same-package-has-arch-specific-overrides-nonrel (binary): alien-tag foo [usr/share/lintian/overrides/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel:1]
+fields-multi-arch-same-package-has-arch-specific-overrides (binary): alien-tag foo [usr/share/lintian/overrides/fields-multi-arch-same-package-has-arch-specific-overrides:1]
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/overrides b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/overrides
new file mode 100644
index 0000000..fcf6f7b
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/overrides
@@ -0,0 +1,2 @@
+lintian-override:
+lintian-overrides: copyright-contains-dh_make-todo-boilerplate foo-bar-extra
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/rules b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/rules
new file mode 100755
index 0000000..8685ec8
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+pkg=lintian-overrides
+
+%:
+ dh $@
+
+override_dh_fixperms:
+ install -D -m 0644 $(CURDIR)/debian/overrides \
+ $(CURDIR)/debian/$(pkg)/usr/share/lintian/overrides/$(pkg)
+ dh_fixperms
+
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/fill-values
new file mode 100644
index 0000000..b52ea67
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lintian-overrides
+Description: Test the couple of overrides-related tags
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/desc b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/desc
new file mode 100644
index 0000000..e99d9d4
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/desc
@@ -0,0 +1,2 @@
+Testname: lintian-overrides
+Check: debian/lintian-overrides/mystery
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/hints b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/hints
new file mode 100644
index 0000000..0b32d54
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/lintian-overrides/eval/hints
@@ -0,0 +1 @@
+lintian-overrides (binary): alien-tag lintian-override: [usr/share/lintian/overrides/lintian-overrides:1]
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/install b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/install
new file mode 100644
index 0000000..747a313
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/install
@@ -0,0 +1 @@
+foo.1 /etc/apt/sources.list.d \ No newline at end of file
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/lintian-overrides
new file mode 100644
index 0000000..04ae11b
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/lintian-overrides
@@ -0,0 +1,20 @@
+# This comment will not appear in the output, also the last
+# tag should not have a comment due to the empty line between
+# it and the one before it.
+
+# override without extra information
+manpage-has-bad-whatis-entry
+# Architecture specific override
+[i386]: FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:6 /usr/etc/
+[!i386]: FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:6 /usr/etc/
+# exact extra information
+FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:4 /usr/dict/
+# These are wildcard overrides
+FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:2*
+FSSTND-dir-in-manual-page */foo.1.gz:5 /usr/doc/
+FSSTND-dir-in-manual-page */foo.1.gz:3*
+
+# renamed tag
+package-install-apt-sources *
+
+#FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz * more occurrences not shown
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/manpages b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/manpages
new file mode 100644
index 0000000..efb5c57
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/debian/manpages
@@ -0,0 +1 @@
+foo.1
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/fill-values
new file mode 100644
index 0000000..0facd1c
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: mixed-overrides
+Package-Architecture: any
+Description: Test override handling
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/orig/foo.1 b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/orig/foo.1
new file mode 100644
index 0000000..233a578
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/build-spec/orig/foo.1
@@ -0,0 +1,32 @@
+.TH FOO 1 "Sep 13, 2008" "Debian GNU/Linux"
+
+.SH DESCRIPTION
+/usr/dict/
+/usr/doc/
+/usr/etc/
+
+
+
+
+
+/usr/info/
+/usr/man/
+/usr/adm/
+
+
+
+
+
+
+/var/adm/
+/var/catman/
+/var/named/
+
+
+
+
+
+
+/var/nis/
+/var/preserve/
+/usr/preserve/
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/desc b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/desc
new file mode 100644
index 0000000..618dacd
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/desc
@@ -0,0 +1,4 @@
+Testname: mixed-overrides
+Check: debian/lintian-overrides/mystery
+Test-Against:
+ alien-tag
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/hints b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/hints
new file mode 100644
index 0000000..1a22602
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/mixed-overrides/eval/hints
@@ -0,0 +1,2 @@
+mixed-overrides (binary): renamed-tag package-install-apt-sources => package-installs-apt-sources [usr/share/lintian/overrides/mixed-overrides:18]
+mixed-overrides (binary): renamed-tag manpage-has-bad-whatis-entry => bad-whatis-entry [usr/share/lintian/overrides/mixed-overrides:6]
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/install b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/install
new file mode 100644
index 0000000..747a313
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/install
@@ -0,0 +1 @@
+foo.1 /etc/apt/sources.list.d \ No newline at end of file
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/manpages b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/manpages
new file mode 100644
index 0000000..efb5c57
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/manpages
@@ -0,0 +1 @@
+foo.1
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/overrides-shown.lintian-overrides b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/overrides-shown.lintian-overrides
new file mode 100644
index 0000000..bda39f8
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/debian/overrides-shown.lintian-overrides
@@ -0,0 +1,21 @@
+# This comment will not appear in the output, also the last
+# tag should not have a comment due to the empty line between
+# it and the one before it.
+
+# override without extra information
+manpage-has-bad-whatis-entry
+# Architecture specific override
+[i386]: FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:6 /usr/etc/
+[!i386]: FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:6 /usr/etc/
+# exact extra information
+FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:4 /usr/dict/
+# These are wildcard overrides
+FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz:2*
+FSSTND-dir-in-manual-page */foo.1.gz:5 /usr/doc/
+# Comments in UTF-8: ✓ (☃)
+FSSTND-dir-in-manual-page */foo.1.gz:3*
+
+# renamed tag
+package-install-apt-sources *
+
+#FSSTND-dir-in-manual-page usr/share/man/man1/foo.1.gz * more occurrences not shown
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/fill-values
new file mode 100644
index 0000000..ce9e283
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: overrides-shown
+Package-Architecture: any
+Description: Test override handling
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/orig/foo.1 b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/orig/foo.1
new file mode 100644
index 0000000..233a578
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/build-spec/orig/foo.1
@@ -0,0 +1,32 @@
+.TH FOO 1 "Sep 13, 2008" "Debian GNU/Linux"
+
+.SH DESCRIPTION
+/usr/dict/
+/usr/doc/
+/usr/etc/
+
+
+
+
+
+/usr/info/
+/usr/man/
+/usr/adm/
+
+
+
+
+
+
+/var/adm/
+/var/catman/
+/var/named/
+
+
+
+
+
+
+/var/nis/
+/var/preserve/
+/usr/preserve/
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/desc b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/desc
new file mode 100644
index 0000000..3c82de2
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/desc
@@ -0,0 +1,5 @@
+Testname: overrides-shown
+Options: --show-overrides
+Check: debian/lintian-overrides/mystery
+Test-Against:
+ alien-tag
diff --git a/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/hints b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/hints
new file mode 100644
index 0000000..d81abaf
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/mystery/overrides-shown/eval/hints
@@ -0,0 +1,2 @@
+overrides-shown (binary): renamed-tag package-install-apt-sources => package-installs-apt-sources [usr/share/lintian/overrides/overrides-shown:19]
+overrides-shown (binary): renamed-tag manpage-has-bad-whatis-entry => bad-whatis-entry [usr/share/lintian/overrides/overrides-shown:6]
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/debian/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/debian/lintian-overrides
new file mode 100644
index 0000000..deea577
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/debian/lintian-overrides
@@ -0,0 +1 @@
+[amd64]: cute-field
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/fill-values
new file mode 100644
index 0000000..886cd60
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: amd64-on-arch-all
+Skeleton: upload-native
+Description: Override with amd64 architecture restriction on an Arch: all installable.
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/desc b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/desc
new file mode 100644
index 0000000..a34c828
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/desc
@@ -0,0 +1,2 @@
+Testname: amd64-on-arch-all
+Check: debian/lintian-overrides/restricted
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/hints b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/hints
new file mode 100644
index 0000000..d74e878
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/amd64-on-arch-all/eval/hints
@@ -0,0 +1 @@
+amd64-on-arch-all (binary): invalid-override-restriction Architecture list in Arch:all installable [usr/share/lintian/overrides/amd64-on-arch-all:1]
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/debian/lintian-overrides b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/debian/lintian-overrides
new file mode 100644
index 0000000..bb1c669
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/debian/lintian-overrides
@@ -0,0 +1 @@
+[bingo]: cute-field
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/fill-values
new file mode 100644
index 0000000..b30cb70
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: arch-bingo
+Skeleton: upload-native
+Description: Override with 'bingo' architecture restriction on an Arch: any installable
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/desc b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/desc
new file mode 100644
index 0000000..8dfe2b2
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/desc
@@ -0,0 +1,2 @@
+Testname: arch-bingo
+Check: debian/lintian-overrides/restricted
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/hints b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/hints
new file mode 100644
index 0000000..667ea2f
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/arch-bingo/eval/hints
@@ -0,0 +1 @@
+arch-bingo (binary): invalid-override-restriction Unknown architecture wildcard bingo [usr/share/lintian/overrides/arch-bingo:1]
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in
new file mode 100644
index 0000000..88afb0f
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Multi-Arch: same
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-nonrel
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (false positive)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a false-positive.
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64 b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64 b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values
new file mode 100644
index 0000000..085fb2f
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-multi-arch-same-package-has-arch-specific-overrides
+Description: Test for Multi-Arch: same package with arch-specific overrides
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc
new file mode 100644
index 0000000..7aa72a6
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-multi-arch-same-package-has-arch-specific-overrides
+Test-Architectures: amd64
+Check: debian/lintian-overrides/restricted
+Test-Against:
+ invalid-override-restriction
diff --git a/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/lintian-overrides/restricted/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/debian/maintscript b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/debian/maintscript
new file mode 100644
index 0000000..6a583d7
--- /dev/null
+++ b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/debian/maintscript
@@ -0,0 +1,4 @@
+rm_conffile /etc/correct.conf 0.2~ foo
+rm_conffile /etc/incorrect.conf 0.2~ foo -- "$@"
+rm_conffile /etc/incorrect.conf 0.2~ foo -- "${@}"
+rm_conffile /etc/incorrect.conf 0.2~ foo -- "$@"
diff --git a/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/fill-values b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/fill-values
new file mode 100644
index 0000000..c750dfe
--- /dev/null
+++ b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: maintscript-includes-maint-script-parameters
+Dh-Compat-Level: 11
+Description: Check dh_installdeb .maintscript files
diff --git a/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/desc b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/desc
new file mode 100644
index 0000000..453fab1
--- /dev/null
+++ b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/desc
@@ -0,0 +1,2 @@
+Testname: maintscript-includes-maint-script-parameters
+Check: debian/maintscript
diff --git a/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/hints b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/hints
new file mode 100644
index 0000000..6fcf5bf
--- /dev/null
+++ b/t/recipes/checks/debian/maintscript/maintscript-includes-maint-script-parameters/eval/hints
@@ -0,0 +1,3 @@
+maintscript-includes-maint-script-parameters (source): maintscript-includes-maint-script-parameters [debian/maintscript:4]
+maintscript-includes-maint-script-parameters (source): maintscript-includes-maint-script-parameters [debian/maintscript:3]
+maintscript-includes-maint-script-parameters (source): maintscript-includes-maint-script-parameters [debian/maintscript:2]
diff --git a/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/bin/not-suitable-for-upstream b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/bin/not-suitable-for-upstream
new file mode 100755
index 0000000..e47f731
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/bin/not-suitable-for-upstream
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+# USER-FACING EXECUTABLE NOT SUITABLE FOR INCLUSION UPSTREAM
diff --git a/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/not-suitable-for-upstream.1 b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/not-suitable-for-upstream.1
new file mode 100644
index 0000000..1c0946b
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/debian/not-suitable-for-upstream.1
@@ -0,0 +1 @@
+A MANPAGE
diff --git a/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/fill-values b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/fill-values
new file mode 100644
index 0000000..763e8dd
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: maintainer-provided-executable
+Skeleton: source-non-native
+Description: Maintainer manual page with executable also so provided (false positive)
diff --git a/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/desc b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/desc
new file mode 100644
index 0000000..82cc179
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/desc
@@ -0,0 +1,9 @@
+Testname: maintainer-provided-executable
+Check: debian/manual-pages
+Test-Against:
+ maintainer-manual-page
+See-Also:
+ social contract item 2,
+ developer-reference 3.1.4,
+ policy 4.3,
+ Bug#755161
diff --git a/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/hints b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/maintainer-provided-executable/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/debian/not-forwarded.1 b/t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/debian/not-forwarded.1
new file mode 100644
index 0000000..1c0946b
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/debian/not-forwarded.1
@@ -0,0 +1 @@
+A MANPAGE
diff --git a/t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/fill-values b/t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/fill-values
new file mode 100644
index 0000000..e9cf9d4
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/manpage-in-1/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-in-1
+Skeleton: source-non-native
+Description: Maintainer keeps a manpage from section 1 in ./debian
diff --git a/t/recipes/checks/debian/manual-pages/manpage-in-1/eval/desc b/t/recipes/checks/debian/manual-pages/manpage-in-1/eval/desc
new file mode 100644
index 0000000..bcce654
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/manpage-in-1/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-in-1
+Check: debian/manual-pages
+See-Also: social contract item 2, developer-reference 3.1.4, policy 4.3, Bug#755161
diff --git a/t/recipes/checks/debian/manual-pages/manpage-in-1/eval/hints b/t/recipes/checks/debian/manual-pages/manpage-in-1/eval/hints
new file mode 100644
index 0000000..818b90c
--- /dev/null
+++ b/t/recipes/checks/debian/manual-pages/manpage-in-1/eval/hints
@@ -0,0 +1 @@
+manpage-in-1 (source): maintainer-manual-page [debian/not-forwarded.1]
diff --git a/t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/debian/not-installed b/t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/debian/not-installed
new file mode 100644
index 0000000..3bb0456
--- /dev/null
+++ b/t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/debian/not-installed
@@ -0,0 +1 @@
+usr/lib/x86_64-linux-gnu/does-not-exist.a
diff --git a/t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/fill-values b/t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/fill-values
new file mode 100644
index 0000000..447697c
--- /dev/null
+++ b/t/recipes/checks/debian/not-installed/triplet-in-library-path/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: triplet-in-library-path
+Skeleton: source-native
+Description: Excludes a library from installation only on one architecture
diff --git a/t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/desc b/t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/desc
new file mode 100644
index 0000000..e46ecfc
--- /dev/null
+++ b/t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/desc
@@ -0,0 +1,3 @@
+Testname: triplet-in-library-path
+Check: debian/not-installed
+See-Also: Debian Bug#961973
diff --git a/t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/hints b/t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/hints
new file mode 100644
index 0000000..32b37b5
--- /dev/null
+++ b/t/recipes/checks/debian/not-installed/triplet-in-library-path/eval/hints
@@ -0,0 +1 @@
+triplet-in-library-path (source): unwanted-path-too-specific usr/lib/x86_64-linux-gnu/does-not-exist.a [debian/not-installed:1]
diff --git a/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch1 b/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch1
diff --git a/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch2 b/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/patch2
diff --git a/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/series
new file mode 100644
index 0000000..8c90984
--- /dev/null
+++ b/t/recipes/checks/debian/patches/count/two-patches/build-spec/debian/patches/series
@@ -0,0 +1,5 @@
+patch1
+# a comment
+patch2 # another comment
+ # yet another comment
+# patch3
diff --git a/t/recipes/checks/debian/patches/count/two-patches/build-spec/fill-values b/t/recipes/checks/debian/patches/count/two-patches/build-spec/fill-values
new file mode 100644
index 0000000..436ad89
--- /dev/null
+++ b/t/recipes/checks/debian/patches/count/two-patches/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: two-patches
+Description: Package with two Debian patches
diff --git a/t/recipes/checks/debian/patches/count/two-patches/eval/desc b/t/recipes/checks/debian/patches/count/two-patches/eval/desc
new file mode 100644
index 0000000..333ef3b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/count/two-patches/eval/desc
@@ -0,0 +1,2 @@
+Testname: two-patches
+Check: debian/patches/count
diff --git a/t/recipes/checks/debian/patches/count/two-patches/eval/hints b/t/recipes/checks/debian/patches/count/two-patches/eval/hints
new file mode 100644
index 0000000..e7e3e7d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/count/two-patches/eval/hints
@@ -0,0 +1 @@
+two-patches (source): number-of-patches 2 [debian/patches/series]
diff --git a/t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/debian/patches/applied-upstream.patch b/t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/debian/patches/applied-upstream.patch
new file mode 100644
index 0000000..a1193df
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/debian/patches/applied-upstream.patch
@@ -0,0 +1,15 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+Applied-Upstream: https://gitlab.gnome.org/World/lollypop/-/commit/4c1435ee22220c4a7f2ccaa05bce60a3e64cb912
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/fill-values b/t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/fill-values
new file mode 100644
index 0000000..3017656
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/applied-upstream/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: applied-upstream
+Description: Debian patch with Applied-Upstream (false positive)
diff --git a/t/recipes/checks/debian/patches/dep3/applied-upstream/eval/desc b/t/recipes/checks/debian/patches/dep3/applied-upstream/eval/desc
new file mode 100644
index 0000000..7dbb942
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/applied-upstream/eval/desc
@@ -0,0 +1,5 @@
+Testname: applied-upstream
+Check: debian/patches/dep3
+Test-Against:
+ patch-not-forwarded-upstream
+See-Also: Bug#965119
diff --git a/t/recipes/checks/debian/patches/dep3/applied-upstream/eval/hints b/t/recipes/checks/debian/patches/dep3/applied-upstream/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/applied-upstream/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/debian/patches/silent.patch b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/debian/patches/silent.patch
new file mode 100644
index 0000000..f35f299
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/debian/patches/silent.patch
@@ -0,0 +1,14 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/fill-values b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/fill-values
new file mode 100644
index 0000000..479f07d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: empty-forwarded-no-bug
+Description: Debian patch with empty Forwarded and no Bug
diff --git a/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/desc b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/desc
new file mode 100644
index 0000000..0fd262b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/desc
@@ -0,0 +1,3 @@
+Testname: empty-forwarded-no-bug
+Check: debian/patches/dep3
+See-Also: Bug#755153
diff --git a/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/hints b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/hints
new file mode 100644
index 0000000..8a913be
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/empty-forwarded-no-bug/eval/hints
@@ -0,0 +1 @@
+empty-forwarded-no-bug (source): patch-not-forwarded-upstream [debian/patches/silent.patch]
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/debian/patches/not-forwarded.patch b/t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/debian/patches/not-forwarded.patch
new file mode 100644
index 0000000..4b48b32
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/debian/patches/not-forwarded.patch
@@ -0,0 +1,15 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+Forwarded: no
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/fill-values b/t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/fill-values
new file mode 100644
index 0000000..4cd9c11
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-no/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: forwarded-no
+Description: Debian patch with Forwarded: no
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-no/eval/desc b/t/recipes/checks/debian/patches/dep3/forwarded-no/eval/desc
new file mode 100644
index 0000000..edb980d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-no/eval/desc
@@ -0,0 +1,3 @@
+Testname: forwarded-no
+Check: debian/patches/dep3
+See-Also: Bug#755153
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-no/eval/hints b/t/recipes/checks/debian/patches/dep3/forwarded-no/eval/hints
new file mode 100644
index 0000000..428ce9f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-no/eval/hints
@@ -0,0 +1 @@
+forwarded-no (source): patch-not-forwarded-upstream [debian/patches/not-forwarded.patch]
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/debian/patches/no-forwarding-needed.patch b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/debian/patches/no-forwarding-needed.patch
new file mode 100644
index 0000000..65e7f54
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/debian/patches/no-forwarding-needed.patch
@@ -0,0 +1,15 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+Forwarded: not-needed
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/fill-values b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/fill-values
new file mode 100644
index 0000000..aae5187
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: forwarded-not-needed
+Description: Debian patch with Forwarded: not-needed (false positive)
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/desc b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/desc
new file mode 100644
index 0000000..b69011f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/desc
@@ -0,0 +1,5 @@
+Testname: forwarded-not-needed
+Check: debian/patches/dep3
+Test-Against:
+ patch-not-forwarded-upstream
+See-Also: Bug#755153
diff --git a/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/hints b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/forwarded-not-needed/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/debian/patches/13_document_modifiers.diff b/t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/debian/patches/13_document_modifiers.diff
new file mode 100644
index 0000000..76548ba
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/debian/patches/13_document_modifiers.diff
@@ -0,0 +1,41 @@
+Description: Better document modifiers
+Author: Emanuele Giaquinta
+Origin: upstream, https://github.com/exg/rxvt-unicode/commit/b881e3714ba253d08dc1b900d9333b73759db126
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839769
+Last-Update: 2017-10-16
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+Index: rxvt-unicode/doc/rxvt.1.pod
+===================================================================
+--- rxvt-unicode.orig/doc/rxvt.1.pod 2017-10-16 11:03:33.669407628 -0400
++++ rxvt-unicode/doc/rxvt.1.pod 2017-10-16 11:03:33.629407435 -0400
+@@ -1081,10 +1081,25 @@
+
+ (modifiers-)key
+
+-Where I<modifiers> can be any combination of B<ISOLevel3>, B<AppKeypad>,
+-B<Control>, B<NumLock>, B<Shift>, B<Meta>, B<Lock>, B<Mod1>, B<Mod2>,
+-B<Mod3>, B<Mod4>, B<Mod5>, and the abbreviated B<I>, B<K>, B<C>, B<N>,
+-B<S>, B<M>, B<A>, B<L>, B<1>, B<2>, B<3>, B<4>, B<5>.
++Where I<modifiers> can be any combination of the following full or
++abbreviated modifier names:
++
++=begin table
++
++ B<ISOLevel3> B<I>
++ B<AppKeypad> B<K>
++ B<Control> B<C>
++ B<NumLock> B<N>
++ B<Shift> B<S>
++ B<Meta> B<M> B<A>
++ B<Lock> B<L>
++ B<Mod1> B<1>
++ B<Mod2> B<2>
++ B<Mod3> B<3>
++ B<Mod4> B<4>
++ B<Mod5> B<5>
++
++=end table
+
+ The B<NumLock>, B<Meta> and B<ISOLevel3> modifiers are usually aliased to
+ whatever modifier the NumLock key, Meta/Alt keys or ISO Level3 Shift/AltGr
diff --git a/t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/fill-values b/t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/fill-values
new file mode 100644
index 0000000..d086fa1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/origin-upstream/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: origin-upstream
+Description: Debian patch with Origin: upstream, URL (taken from Bug#966140)
diff --git a/t/recipes/checks/debian/patches/dep3/origin-upstream/eval/desc b/t/recipes/checks/debian/patches/dep3/origin-upstream/eval/desc
new file mode 100644
index 0000000..8dd636e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/origin-upstream/eval/desc
@@ -0,0 +1,5 @@
+Testname: origin-upstream
+Check: debian/patches/dep3
+Test-Against:
+ patch-not-forwarded-upstream
+See-Also: Bug#966140
diff --git a/t/recipes/checks/debian/patches/dep3/origin-upstream/eval/hints b/t/recipes/checks/debian/patches/dep3/origin-upstream/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/origin-upstream/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/debian/patches/no-forwarding-needed.patch b/t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/debian/patches/no-forwarding-needed.patch
new file mode 100644
index 0000000..2c51d06
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/debian/patches/no-forwarding-needed.patch
@@ -0,0 +1,17 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+
+# second pseudo-header allowed by DEP-3, see Bug#966024
+Forwarded: not-needed
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/fill-values b/t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/fill-values
new file mode 100644
index 0000000..1e762d9
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/pseudo-header/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: pseudo-header
+Description: Debian patch with Forwarded: not-needed in a pseudo-header (false positive)
diff --git a/t/recipes/checks/debian/patches/dep3/pseudo-header/eval/desc b/t/recipes/checks/debian/patches/dep3/pseudo-header/eval/desc
new file mode 100644
index 0000000..18c9f9d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/pseudo-header/eval/desc
@@ -0,0 +1,5 @@
+Testname: pseudo-header
+Check: debian/patches/dep3
+Test-Against:
+ patch-not-forwarded-upstream
+See-Also: Bug#966024
diff --git a/t/recipes/checks/debian/patches/dep3/pseudo-header/eval/hints b/t/recipes/checks/debian/patches/dep3/pseudo-header/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dep3/pseudo-header/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/desc b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/desc
new file mode 100644
index 0000000..0dd0b1d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/patches/dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/hints b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/hints
new file mode 100644
index 0000000..4a90e73
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/hints
@@ -0,0 +1,5 @@
+scripts (source): package-uses-deprecated-dpatch-patch-system
+scripts (source): dpatch-missing-description [debian/patches/04_i_dont_have_a_description_either.patch]
+scripts (source): dpatch-missing-description [debian/patches/02_i_dont_have_a_description.patch]
+scripts (source): dpatch-index-references-non-existent-patch 01_some_other_patch_thats_not_in_the_package.dpatch
+scripts (source): dpatch-index-references-non-existent-patch 01_not_here_right_now.dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/post-test b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/README.source b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/README.source
new file mode 100644
index 0000000..4ff54b4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/README.source
@@ -0,0 +1 @@
+I am using dpatch.
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list
new file mode 100644
index 0000000..52ee366
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list
@@ -0,0 +1,12 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
+05_dep3.diff
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00options b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff
new file mode 100644
index 0000000..5cbb237
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 05_dep3.diff by Russ Allbery <rra@debian.org>
+#
+# Description: Patch using the DEP 3 patch header
+# Author: Russ Allbery <rra@debian.org>
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/fill-values b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/fill-values
new file mode 100644
index 0000000..cb818e9
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-dpatch-description
+Description: Test patch-system tags for a dpatch package
+Extra-Build-Depends: dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/desc b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/desc
new file mode 100644
index 0000000..7212807
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-dpatch-description
+Check: debian/patches/dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/hints b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/hints
new file mode 100644
index 0000000..f617634
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-dpatch-description/eval/hints
@@ -0,0 +1,5 @@
+patch-systems-dpatch-description (source): package-uses-deprecated-dpatch-patch-system
+patch-systems-dpatch-description (source): dpatch-missing-description [debian/patches/04_i_dont_have_a_description_either.patch]
+patch-systems-dpatch-description (source): dpatch-missing-description [debian/patches/02_i_dont_have_a_description.patch]
+patch-systems-dpatch-description (source): dpatch-index-references-non-existent-patch 01_some_other_patch_thats_not_in_the_package.dpatch
+patch-systems-dpatch-description (source): dpatch-index-references-non-existent-patch 01_not_here_right_now.dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/README.source b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/README.source
new file mode 100644
index 0000000..052084e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some stuff about quilt here.
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README.patches b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README.patches
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/README.patches
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..040d7e8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/series
@@ -0,0 +1,6 @@
+# tries to create an existing file, which fails in dpkg-source
+# some-file
+some-other-file -p0
+# non-existent patches trigger error in dpkg-source
+# some-nonexistent-patch
+# file-commented-out
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-file b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-file
new file mode 100644
index 0000000..7749d40
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-file
@@ -0,0 +1,11 @@
+Some regular patch creating a file.
+
+--- /dev/null
++++ debian/debian/some-file
+@@ -0,0 +1,6 @@
++Some
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-other-file b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
new file mode 100644
index 0000000..ed24c8f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
@@ -0,0 +1,12 @@
+Some -p0 patch creating a file.
+
+--- /dev/null
++++ debian/some-other-file
+@@ -0,0 +1,7 @@
++Some
++other
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/README b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2 b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
new file mode 100644
index 0000000..4232ed0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
@@ -0,0 +1 @@
+file-mentioned-in-vendor-series
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/diff/README b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/diff/README
new file mode 100644
index 0000000..55d9771
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/diff/README
@@ -0,0 +1 @@
+Debian README
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/fill-values b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/fill-values
new file mode 100644
index 0000000..ced4b7a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-general
+Skeleton: upload-non-native
+Extra-Build-Depends: quilt, dpatch
+Description: General tests of a quilt patch system
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/desc b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/desc
new file mode 100644
index 0000000..154b396
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-general
+Check: debian/patches/dpatch
diff --git a/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/hints b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/hints
new file mode 100644
index 0000000..24b71da
--- /dev/null
+++ b/t/recipes/checks/debian/patches/dpatch/patch-systems-quilt-general/eval/hints
@@ -0,0 +1,2 @@
+patch-systems-quilt-general (source): package-uses-deprecated-dpatch-patch-system
+patch-systems-quilt-general (source): dpatch-build-dep-but-no-patch-list
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/eval/desc b/t/recipes/checks/debian/patches/legacy-debconf/eval/desc
new file mode 100644
index 0000000..3043d9c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/eval/hints b/t/recipes/checks/debian/patches/legacy-debconf/eval/hints
new file mode 100644
index 0000000..d46c37c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/eval/hints
@@ -0,0 +1,2 @@
+debconf (source): patch-system-but-no-source-readme
+debconf (source): patch-system dpatch
diff --git a/t/recipes/checks/debian/patches/legacy-debconf/eval/post-test b/t/recipes/checks/debian/patches/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/patches/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/patches/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/patches/legacy-relations/eval/desc b/t/recipes/checks/debian/patches/legacy-relations/eval/desc
new file mode 100644
index 0000000..adcbfe1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/legacy-relations/eval/hints b/t/recipes/checks/debian/patches/legacy-relations/eval/hints
new file mode 100644
index 0000000..e3cb73d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/eval/hints
@@ -0,0 +1,2 @@
+relations (source): patch-system-but-no-source-readme
+relations (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/legacy-relations/eval/post-test b/t/recipes/checks/debian/patches/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/eval/desc b/t/recipes/checks/debian/patches/legacy-scripts/eval/desc
new file mode 100644
index 0000000..2f22144
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/eval/hints b/t/recipes/checks/debian/patches/legacy-scripts/eval/hints
new file mode 100644
index 0000000..672cda0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/eval/hints
@@ -0,0 +1,3 @@
+scripts (source): patch-system quilt
+scripts (source): patch-system dpatch
+scripts (source): more-than-one-patch-system
diff --git a/t/recipes/checks/debian/patches/legacy-scripts/eval/post-test b/t/recipes/checks/debian/patches/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/README.source b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/README.source
new file mode 100644
index 0000000..4ff54b4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/README.source
@@ -0,0 +1 @@
+I am using dpatch.
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list
new file mode 100644
index 0000000..52ee366
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list
@@ -0,0 +1,12 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
+05_dep3.diff
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00options b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff
new file mode 100644
index 0000000..5cbb237
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 05_dep3.diff by Russ Allbery <rra@debian.org>
+#
+# Description: Patch using the DEP 3 patch header
+# Author: Russ Allbery <rra@debian.org>
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/fill-values
new file mode 100644
index 0000000..cb818e9
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-dpatch-description
+Description: Test patch-system tags for a dpatch package
+Extra-Build-Depends: dpatch
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/desc b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/desc
new file mode 100644
index 0000000..11ff095
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-dpatch-description
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/hints b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/hints
new file mode 100644
index 0000000..646bd69
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-dpatch-description/eval/hints
@@ -0,0 +1 @@
+patch-systems-dpatch-description (source): patch-system dpatch
diff --git a/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/README.source b/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/patches/series
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/debian/patches/series
diff --git a/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/fill-values
new file mode 100644
index 0000000..7bfde22
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-empty-series/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-empty-series
+Description: Test for quilt patches with empty series
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-empty-series/eval/desc b/t/recipes/checks/debian/patches/patch-systems-empty-series/eval/desc
new file mode 100644
index 0000000..de141e2
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-empty-series/eval/desc
@@ -0,0 +1,3 @@
+Testname: patch-systems-empty-series
+See-Also: Debian Bug #525005
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-empty-series/eval/hints b/t/recipes/checks/debian/patches/patch-systems-empty-series/eval/hints
new file mode 100644
index 0000000..c7f9fec
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-empty-series/eval/hints
@@ -0,0 +1 @@
+patch-systems-empty-series (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/diff/README b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/diff/README
new file mode 100644
index 0000000..c2513f3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/diff/README
@@ -0,0 +1 @@
+README with some Debian change to create a diff
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/fill-values
new file mode 100644
index 0000000..0922b52
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-no-patch-system
+Skeleton: upload-non-native
+Source-Format: 1.0
+Description: Diagnose lack of a patch system
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/desc b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/desc
new file mode 100644
index 0000000..a6feb2f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-no-patch-system
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/hints b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/hints
new file mode 100644
index 0000000..7e66d4d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-patch-system/eval/hints
@@ -0,0 +1 @@
+patch-systems-no-patch-system (source): direct-changes-in-diff-but-no-patch-system README
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/01_this_patch_is_ok b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/01_this_patch_is_ok
new file mode 100644
index 0000000..7eee707
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/01_this_patch_is_ok
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/series
new file mode 100644
index 0000000..a342eb3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/debian/patches/series
@@ -0,0 +1 @@
+01_this_patch_is_ok
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/fill-values
new file mode 100644
index 0000000..d307faf
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-no-readme-source
+Description: Patch system with no README.source
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/desc b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/desc
new file mode 100644
index 0000000..0d70fa3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/desc
@@ -0,0 +1,3 @@
+Testname: patch-systems-no-readme-source
+See-Also: Debian Bug #537969
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/hints b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/hints
new file mode 100644
index 0000000..a53bbab
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-no-readme-source/eval/hints
@@ -0,0 +1,2 @@
+patch-systems-no-readme-source (source): patch-system-but-no-source-readme
+patch-systems-no-readme-source (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-1 b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-1
new file mode 100644
index 0000000..7d0132f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-1
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a/a 2008-11-11 19:38:12.000000000 +0000
++++ a/a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/series
new file mode 100644
index 0000000..9ca2b60
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/debian/patches/series
@@ -0,0 +1 @@
+debian-changes-1.0-1
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/fill-values
new file mode 100644
index 0000000..69be6ed
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-debian-changes
+Description: Test a 3.0 (quilt) package which has a debian-changes-XXX patch
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/orig/a b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/orig/a
new file mode 100644
index 0000000..c0acc64
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/build-spec/orig/a
@@ -0,0 +1 @@
+sample text
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/desc b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/desc
new file mode 100644
index 0000000..db1fb19
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-debian-changes
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/hints b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/hints
new file mode 100644
index 0000000..94bd4e2
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-debian-changes/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-debian-changes (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/README.source b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok
new file mode 100644
index 0000000..7eee707
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description
new file mode 100644
index 0000000..12128b8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description
@@ -0,0 +1,5 @@
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch
new file mode 100644
index 0000000..025656a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch
@@ -0,0 +1,8 @@
+diff --git a/a b/a
+index eb39593..7258d2f 100644
+--- a 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,3 @@
+ sample text
+ and some more sample text
++and yet another line
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/04_template_description b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/04_template_description
new file mode 100644
index 0000000..09bfd88
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/04_template_description
@@ -0,0 +1,17 @@
+Description: <short summary of the patch>
+ This patch include a templated text for description
+ TODO: Put a short summary on the line above and replace this paragraph
+ with a longer explanation of this change. Complete the meta-information
+ with other relevant fields (see below for details). To make it easier, the
+ information below has been extracted from the changelog. Adjust it or drop
+ it.
+ .
+diff --git a/a b/a
+index eb39593..7258d2f 100644
+--- a 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,4 @@
+ sample text
+ and some more sample text
+ and yet another line
++and so on
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/series
new file mode 100644
index 0000000..a7ab472
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/debian/patches/series
@@ -0,0 +1,4 @@
+01_this_patch_is_ok
+02_this_one_has_no_description
+03_a_git_patch
+04_template_description
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/fill-values
new file mode 100644
index 0000000..d957fdd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-quilt-description
+Description: Test for quilt patches which do not have accompanying descriptions
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/desc b/t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/desc
new file mode 100644
index 0000000..bcfc987
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/desc
@@ -0,0 +1,3 @@
+Testname: patch-systems-quilt-description
+See-Also: Debian Bug #498892
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/hints b/t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/hints
new file mode 100644
index 0000000..c79c3e1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-description/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-description (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/README.source b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/README.source
new file mode 100644
index 0000000..052084e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some stuff about quilt here.
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README.patches b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README.patches
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/README.patches
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..040d7e8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/series
@@ -0,0 +1,6 @@
+# tries to create an existing file, which fails in dpkg-source
+# some-file
+some-other-file -p0
+# non-existent patches trigger error in dpkg-source
+# some-nonexistent-patch
+# file-commented-out
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-file b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-file
new file mode 100644
index 0000000..7749d40
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-file
@@ -0,0 +1,11 @@
+Some regular patch creating a file.
+
+--- /dev/null
++++ debian/debian/some-file
+@@ -0,0 +1,6 @@
++Some
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-other-file b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
new file mode 100644
index 0000000..ed24c8f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
@@ -0,0 +1,12 @@
+Some -p0 patch creating a file.
+
+--- /dev/null
++++ debian/some-other-file
+@@ -0,0 +1,7 @@
++Some
++other
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/README b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2 b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
new file mode 100644
index 0000000..4232ed0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
@@ -0,0 +1 @@
+file-mentioned-in-vendor-series
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/diff/README b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/diff/README
new file mode 100644
index 0000000..55d9771
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/diff/README
@@ -0,0 +1 @@
+Debian README
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/fill-values
new file mode 100644
index 0000000..ced4b7a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-general
+Skeleton: upload-non-native
+Extra-Build-Depends: quilt, dpatch
+Description: General tests of a quilt patch system
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/desc b/t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/desc
new file mode 100644
index 0000000..f856f3e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-general
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/hints b/t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/hints
new file mode 100644
index 0000000..a78e16f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-general/eval/hints
@@ -0,0 +1,3 @@
+patch-systems-quilt-general (source): patch-system quilt
+patch-systems-quilt-general (source): patch-system dpatch
+patch-systems-quilt-general (source): more-than-one-patch-system
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/README.source b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok
new file mode 100644
index 0000000..7eee707
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/series
new file mode 100644
index 0000000..0ca9c9c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/debian/patches/series
@@ -0,0 +1 @@
+01_this_patch_is_ok \ No newline at end of file
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/fill-values
new file mode 100644
index 0000000..40b486d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-quilt-no-newline
+Description: Patch system with no debian/series that does not end with newline
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/desc b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/desc
new file mode 100644
index 0000000..32a8f15
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-no-newline
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/hints b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/hints
new file mode 100644
index 0000000..4e852b0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-newline/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-no-newline (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/debian/README.source b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/fill-values b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/fill-values
new file mode 100644
index 0000000..5234bfe
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: patch-systems-quilt-no-series
+Skeleton: upload-non-native
+Source-Format: 1.0
+Description: Test for quilt patches with no series
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/orig/README b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/desc b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/desc
new file mode 100644
index 0000000..e57d098
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-no-series
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/hints b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/hints
new file mode 100644
index 0000000..5067cf1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/patch-systems-quilt-no-series/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-no-series (source): patch-system quilt
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/patches/wig-pen b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
new file mode 100644
index 0000000..a452b53
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
@@ -0,0 +1,5 @@
+--- upstream/README
++++ debian/README
+@@ -1 +1 @@
+-README
++README for wig&pen
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/rules b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/substvars b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/fill-values
new file mode 100644
index 0000000..edb39d9
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-wig-pen
+Skeleton: upload-non-native
+Source-Format: 2.0
+Description: Check for cruft added in a 2.0 package
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/orig/README b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/pre-build b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/pre-build
new file mode 100755
index 0000000..78f359c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/desc b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/desc
new file mode 100644
index 0000000..9e824e6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-general-wig-pen
+Test-Against: patch-file-present-but-not-mentioned-in-series
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/hints b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/cruft-general-wig-pen/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/control b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/rules b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/desc b/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/desc
new file mode 100644
index 0000000..c70804e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/hints b/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/hints
new file mode 100644
index 0000000..d8929ea
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/hints
@@ -0,0 +1 @@
+relations (source): quilt-build-dep-but-no-series-file
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/post-test b/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/desc b/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/desc
new file mode 100644
index 0000000..d5236c9
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/hints b/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/hints
new file mode 100644
index 0000000..71dee45
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/hints
@@ -0,0 +1,6 @@
+scripts (source): patch-file-present-but-not-mentioned-in-series [debian/patches/04_i_dont_have_a_description_either.patch]
+scripts (source): patch-file-present-but-not-mentioned-in-series [debian/patches/03_specified_without_dpatch.dpatch]
+scripts (source): patch-file-present-but-not-mentioned-in-series [debian/patches/02_i_dont_have_a_description.patch]
+scripts (source): patch-file-present-but-not-mentioned-in-series [debian/patches/00options]
+scripts (source): patch-file-present-but-not-mentioned-in-series [debian/patches/00list]
+scripts (source): patch-file-present-but-not-mentioned-in-series [debian/patches/00list.sparc]
diff --git a/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/post-test b/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/README.source b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/patches/series
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/debian/patches/series
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/fill-values
new file mode 100644
index 0000000..7bfde22
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-empty-series
+Description: Test for quilt patches with empty series
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/desc
new file mode 100644
index 0000000..213374f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/desc
@@ -0,0 +1,4 @@
+Testname: patch-systems-empty-series
+Test-Against: quilt-build-dep-but-no-series-file
+See-Also: Debian Bug #525005
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-empty-series/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-1 b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-1
new file mode 100644
index 0000000..7d0132f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/debian-changes-1.0-1
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a/a 2008-11-11 19:38:12.000000000 +0000
++++ a/a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/series
new file mode 100644
index 0000000..9ca2b60
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/debian/patches/series
@@ -0,0 +1 @@
+debian-changes-1.0-1
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/fill-values
new file mode 100644
index 0000000..69be6ed
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-debian-changes
+Description: Test a 3.0 (quilt) package which has a debian-changes-XXX patch
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/orig/a b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/orig/a
new file mode 100644
index 0000000..c0acc64
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/build-spec/orig/a
@@ -0,0 +1 @@
+sample text
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/desc
new file mode 100644
index 0000000..2a5f21f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-debian-changes
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/hints
new file mode 100644
index 0000000..fd3a321
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-debian-changes/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-debian-changes (source): format-3.0-but-debian-changes-patch [debian/patches/debian-changes-1.0-1]
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/README.source b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok
new file mode 100644
index 0000000..7eee707
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/01_this_patch_is_ok
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description
new file mode 100644
index 0000000..12128b8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/02_this_one_has_no_description
@@ -0,0 +1,5 @@
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch
new file mode 100644
index 0000000..025656a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/03_a_git_patch
@@ -0,0 +1,8 @@
+diff --git a/a b/a
+index eb39593..7258d2f 100644
+--- a 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,3 @@
+ sample text
+ and some more sample text
++and yet another line
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/04_template_description b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/04_template_description
new file mode 100644
index 0000000..09bfd88
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/04_template_description
@@ -0,0 +1,17 @@
+Description: <short summary of the patch>
+ This patch include a templated text for description
+ TODO: Put a short summary on the line above and replace this paragraph
+ with a longer explanation of this change. Complete the meta-information
+ with other relevant fields (see below for details). To make it easier, the
+ information below has been extracted from the changelog. Adjust it or drop
+ it.
+ .
+diff --git a/a b/a
+index eb39593..7258d2f 100644
+--- a 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,4 @@
+ sample text
+ and some more sample text
+ and yet another line
++and so on
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/series
new file mode 100644
index 0000000..a7ab472
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/debian/patches/series
@@ -0,0 +1,4 @@
+01_this_patch_is_ok
+02_this_one_has_no_description
+03_a_git_patch
+04_template_description
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/fill-values
new file mode 100644
index 0000000..d957fdd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-quilt-description
+Description: Test for quilt patches which do not have accompanying descriptions
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/desc
new file mode 100644
index 0000000..90fcde3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/desc
@@ -0,0 +1,3 @@
+Testname: patch-systems-quilt-description
+See-Also: Debian Bug #498892
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/hints
new file mode 100644
index 0000000..dd7eb59
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-description/eval/hints
@@ -0,0 +1,3 @@
+patch-systems-quilt-description (source): quilt-patch-using-template-description [debian/patches/04_template_description]
+patch-systems-quilt-description (source): quilt-patch-missing-description [debian/patches/03_a_git_patch]
+patch-systems-quilt-description (source): quilt-patch-missing-description [debian/patches/02_this_one_has_no_description]
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/README.source b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/README.source
new file mode 100644
index 0000000..052084e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some stuff about quilt here.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README.patches b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README.patches
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/README.patches
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..040d7e8
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/series
@@ -0,0 +1,6 @@
+# tries to create an existing file, which fails in dpkg-source
+# some-file
+some-other-file -p0
+# non-existent patches trigger error in dpkg-source
+# some-nonexistent-patch
+# file-commented-out
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-file b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-file
new file mode 100644
index 0000000..7749d40
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-file
@@ -0,0 +1,11 @@
+Some regular patch creating a file.
+
+--- /dev/null
++++ debian/debian/some-file
+@@ -0,0 +1,6 @@
++Some
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-other-file b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
new file mode 100644
index 0000000..ed24c8f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
@@ -0,0 +1,12 @@
+Some -p0 patch creating a file.
+
+--- /dev/null
++++ debian/some-other-file
+@@ -0,0 +1,7 @@
++Some
++other
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/README b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2 b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
new file mode 100644
index 0000000..4232ed0
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
@@ -0,0 +1 @@
+file-mentioned-in-vendor-series
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/diff/README b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/diff/README
new file mode 100644
index 0000000..55d9771
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/diff/README
@@ -0,0 +1 @@
+Debian README
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/fill-values
new file mode 100644
index 0000000..ced4b7a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-general
+Skeleton: upload-non-native
+Extra-Build-Depends: quilt, dpatch
+Description: General tests of a quilt patch system
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/desc
new file mode 100644
index 0000000..d60faca
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-general
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/hints
new file mode 100644
index 0000000..211bcbd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-general/eval/hints
@@ -0,0 +1,6 @@
+patch-systems-quilt-general (source): quilt-patch-with-non-standard-options some-other-file -p0 [debian/patches/series:3]
+patch-systems-quilt-general (source): quilt-patch-using-template-description [debian/patches/debian-changes-1.0-1]
+patch-systems-quilt-general (source): patch-file-present-but-not-mentioned-in-series [debian/patches/subdir/file-not-referenced-in-series-2]
+patch-systems-quilt-general (source): patch-file-present-but-not-mentioned-in-series [debian/patches/file-not-referenced-in-series]
+patch-systems-quilt-general (source): package-uses-vendor-specific-patch-series [debian/patches/vendorname.series]
+patch-systems-quilt-general (source): format-3.0-but-debian-changes-patch [debian/patches/debian-changes-1.0-1]
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/series
new file mode 100644
index 0000000..a920a3a
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/series
@@ -0,0 +1 @@
+some-change.patch
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/some-change.patch b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/some-change.patch
new file mode 100644
index 0000000..c34fd8f
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/debian/patches/some-change.patch
@@ -0,0 +1,6 @@
+Description: Does something very useful - it hides "empty-series" tag
+--- a/README 2010-12-27 14:09:55.025074505 +0100
++++ b/README 2010-12-27 14:10:09.656080199 +0100
+@@ -1 +1,2 @@
+ Hello World
++Goodbye world
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/fill-values
new file mode 100644
index 0000000..16086dc
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: patch-systems-quilt-no-depends
+Description: Test for quilt series but no B-D on quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/orig/README b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/orig/README
new file mode 100644
index 0000000..557db03
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/build-spec/orig/README
@@ -0,0 +1 @@
+Hello World
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/desc
new file mode 100644
index 0000000..6b230a3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/desc
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-no-depends
+Test-Against:
+ patch-file-present-but-not-mentioned-in-series
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/hints
new file mode 100644
index 0000000..b868327
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-depends/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-no-depends (source): quilt-series-but-no-build-dep [debian/patches/series]
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/README.source b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok
new file mode 100644
index 0000000..7eee707
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/01_this_patch_is_ok
@@ -0,0 +1,7 @@
+This is a description of the patch
+
+--- a.orig 2008-11-11 19:38:12.000000000 +0000
++++ a 2008-11-11 19:38:26.000000000 +0000
+@@ -1 +1,2 @@
+ sample text
++and some more sample text
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/series
new file mode 100644
index 0000000..0ca9c9c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/debian/patches/series
@@ -0,0 +1 @@
+01_this_patch_is_ok \ No newline at end of file
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/fill-values
new file mode 100644
index 0000000..40b486d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-quilt-no-newline
+Description: Patch system with no debian/series that does not end with newline
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/desc
new file mode 100644
index 0000000..0cee74b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-no-newline
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/hints
new file mode 100644
index 0000000..5417fe3
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-newline/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-no-newline (source): quilt-series-without-trailing-newline [debian/patches/series]
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/debian/README.source b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/debian/README.source
new file mode 100644
index 0000000..17250a4
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/debian/README.source
@@ -0,0 +1 @@
+This package uses quilt. See /usr/share/doc/quilt/README.source.
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/fill-values
new file mode 100644
index 0000000..5234bfe
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: patch-systems-quilt-no-series
+Skeleton: upload-non-native
+Source-Format: 1.0
+Description: Test for quilt patches with no series
+Extra-Build-Depends: quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/orig/README b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/desc b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/desc
new file mode 100644
index 0000000..db2e53d
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-no-series
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/hints b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/hints
new file mode 100644
index 0000000..d9f628c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/patch-systems-quilt-no-series/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-no-series (source): quilt-build-dep-but-no-series-file
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2d380f5
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * This line has a speling error.
+ - This line has the same speling error, but we should only
+ get one tag for it.
+ * Corrected spelling: abov -> above.
+ * Corrected typo: abov -> above.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/copyright b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/copyright
new file mode 100644
index 0000000..30cbe5c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This duplicate duplicate word should not trigger. (re. #897402)
+
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2010 Russ Allbery <rra@debian.org>
+
+This text should not generate a spelling error for "ment":
+
+ computer software documentation," as such terms are used in
+ 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern-
+ ment only as a commercial end item. Consistent with 48 C.F.R.
+ 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995),
+
+But deafult is still a spelling error.
+
+This text should not generate a spelling error for the duplicate "a" (re. #844166)
+
+ following Attribution Information: (a) a copyright notice including the name
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/doc-base b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/doc-base
new file mode 100644
index 0000000..3839a9b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/doc-base
@@ -0,0 +1,9 @@
+Document: spelling-general
+Title: Check for debian doc-base spelling errors
+Author: Russ Allbery
+Abstract: This control file exercises, picky, speling error checks for
+ Debian doc-base files, such as meta-package.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/spelling-general/copyright
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/add-readme b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/add-readme
new file mode 100644
index 0000000..b1647ba
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/add-readme
@@ -0,0 +1,8 @@
+This is a deliberate speling error. duplicate
+
+duplicate
+
+--- upstream.orig/README
++++ upstream/README
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel
new file mode 100644
index 0000000..48e7740
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; description mentions typo)
+
+--- upstream.orig/nonrel
++++ upstream/nonrel
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel2 b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel2
new file mode 100644
index 0000000..e7dd209
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/nonrel2
@@ -0,0 +1,8 @@
+From: Speling Error <test@example.com>
+Date: Mon, 10 Sep 2018 05:16:45 +0200
+Subject: Foo bar
+
+--- upstream.orig/nonrel2
++++ upstream/nonrel2
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..d31f673
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/series
@@ -0,0 +1,4 @@
+add-readme
+spelling
+nonrel
+nonrel2
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/spelling b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/spelling
new file mode 100644
index 0000000..29b9cfd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/debian/patches/spelling
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; filename match)
+
+--- upstream.orig/spelling
++++ upstream/spelling
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/fill-values b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/fill-values
new file mode 100644
index 0000000..1c8c790
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: spelling-general
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: General checks for spelling errors
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/eval/desc b/t/recipes/checks/debian/patches/quilt/spelling-general/eval/desc
new file mode 100644
index 0000000..6d9495e
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-general
+Check: debian/patches/quilt
diff --git a/t/recipes/checks/debian/patches/quilt/spelling-general/eval/hints b/t/recipes/checks/debian/patches/quilt/spelling-general/eval/hints
new file mode 100644
index 0000000..05d7e24
--- /dev/null
+++ b/t/recipes/checks/debian/patches/quilt/spelling-general/eval/hints
@@ -0,0 +1 @@
+spelling-general (source): spelling-error-in-patch-description speling spelling [debian/patches/add-readme]
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2d380f5
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * This line has a speling error.
+ - This line has the same speling error, but we should only
+ get one tag for it.
+ * Corrected spelling: abov -> above.
+ * Corrected typo: abov -> above.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/copyright b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/copyright
new file mode 100644
index 0000000..30cbe5c
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This duplicate duplicate word should not trigger. (re. #897402)
+
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2010 Russ Allbery <rra@debian.org>
+
+This text should not generate a spelling error for "ment":
+
+ computer software documentation," as such terms are used in
+ 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern-
+ ment only as a commercial end item. Consistent with 48 C.F.R.
+ 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995),
+
+But deafult is still a spelling error.
+
+This text should not generate a spelling error for the duplicate "a" (re. #844166)
+
+ following Attribution Information: (a) a copyright notice including the name
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/doc-base b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/doc-base
new file mode 100644
index 0000000..3839a9b
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/doc-base
@@ -0,0 +1,9 @@
+Document: spelling-general
+Title: Check for debian doc-base spelling errors
+Author: Russ Allbery
+Abstract: This control file exercises, picky, speling error checks for
+ Debian doc-base files, such as meta-package.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/spelling-general/copyright
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/add-readme b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/add-readme
new file mode 100644
index 0000000..b1647ba
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/add-readme
@@ -0,0 +1,8 @@
+This is a deliberate speling error. duplicate
+
+duplicate
+
+--- upstream.orig/README
++++ upstream/README
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel
new file mode 100644
index 0000000..48e7740
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; description mentions typo)
+
+--- upstream.orig/nonrel
++++ upstream/nonrel
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel2 b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel2
new file mode 100644
index 0000000..e7dd209
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/nonrel2
@@ -0,0 +1,8 @@
+From: Speling Error <test@example.com>
+Date: Mon, 10 Sep 2018 05:16:45 +0200
+Subject: Foo bar
+
+--- upstream.orig/nonrel2
++++ upstream/nonrel2
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/series b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..d31f673
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/series
@@ -0,0 +1,4 @@
+add-readme
+spelling
+nonrel
+nonrel2
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/spelling b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/spelling
new file mode 100644
index 0000000..29b9cfd
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/debian/patches/spelling
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; filename match)
+
+--- upstream.orig/spelling
++++ upstream/spelling
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/debian/patches/spelling-general/build-spec/fill-values b/t/recipes/checks/debian/patches/spelling-general/build-spec/fill-values
new file mode 100644
index 0000000..1c8c790
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: spelling-general
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: General checks for spelling errors
diff --git a/t/recipes/checks/debian/patches/spelling-general/eval/desc b/t/recipes/checks/debian/patches/spelling-general/eval/desc
new file mode 100644
index 0000000..0af4036
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-general
+Check: debian/patches
diff --git a/t/recipes/checks/debian/patches/spelling-general/eval/hints b/t/recipes/checks/debian/patches/spelling-general/eval/hints
new file mode 100644
index 0000000..b86bb71
--- /dev/null
+++ b/t/recipes/checks/debian/patches/spelling-general/eval/hints
@@ -0,0 +1 @@
+spelling-general (source): patch-system quilt
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/control.in b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/control.in
new file mode 100644
index 0000000..1140f19
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, cdebconf
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..cef83a3
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en.po b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en.po
new file mode 100644
index 0000000..0734922
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en.po
@@ -0,0 +1,241 @@
+# English translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-01-01 22:34+0000\n"
+"PO-Revision-Date: 2012-10-01 22:54+0200\n"
+"Last-Translator: Niels Thykier <niels@thykier.net>\n"
+"Language-Team: English\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr "Useless note"
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "left, right, up, down"
+msgstr "left, right, up, down"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Pick the odd one out"
+msgstr "Pick the odd one out"
+
+#. Type: text
+#. Description
+#: ../templates:3001
+msgid "Missing template field."
+msgstr "Missing template field."
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this a bad template?"
+msgstr "Is this a bad template?"
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Missing type"
+msgstr "Missing type"
+
+#. Type: lintian
+#. Description
+#: ../templates:6001
+msgid "Template with unknown type"
+msgstr "Template with unknown type"
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "How do you like the default?"
+msgstr "How do you like the default?"
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "On a scale of \"false\" to \"true\"."
+msgstr "On a scale of \"false\" to \"true\"."
+
+#. Type: select
+#. Description
+#: ../templates:8001
+msgid "A boolean type would have been better"
+msgstr "A boolean type would have been better"
+
+#. Type: select
+#. Description
+#: ../templates:9001
+msgid "Preference"
+msgstr "Preference"
+
+#. Type: select
+#. Description
+#: ../templates:10001
+msgid "Missing a Choices field"
+msgstr "Missing a Choices field"
+
+#. Type: error
+#. Description
+#. Type: error
+#. Description
+#: ../templates:12001
+msgid "Duplicate long description"
+msgstr "Duplicate long description"
+
+#. Type: boolean
+#. Description
+#: ../templates:13001
+msgid "Is the field below unknown?"
+msgstr "Is the field below unknown?"
+
+#. Type: string
+#. Description
+#: ../templates:14001
+msgid "What is the name of this package checker:"
+msgstr "What is the name of this package checker:"
+
+#. Type: select
+#. Description
+#: ../templates:15001
+msgid "Select either x or y"
+msgstr "Select either x or y"
+
+#. Type: boolean
+#. Description
+#: ../templates:16001
+msgid "Lintian is the best!"
+msgstr "Lintian is the best!"
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Do you like sakana?"
+msgstr "Do you like sakana?"
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Or do you prefer sake?"
+msgstr "Or do you prefer sake?"
+
+#. Type: note
+#. Description
+#: ../templates:18001
+msgid "Aren't you tired of all these debconf prompts?"
+msgstr "Aren't you tired of all these debconf prompts?"
+
+#. Type: boolean
+#. Description
+#: ../templates:19001
+msgid ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+msgstr ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+
+#. Type: select
+#. Description
+#: ../templates:20001
+msgid "I think Lintian is the best"
+msgstr "I think Lintian is the best"
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Do you like Lintian?"
+msgstr "Do you like Lintian?"
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Pick \"yes\" if you do."
+msgstr "Pick \"yes\" if you do."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid "Name the title of this song:"
+msgstr "Name the title of this song:"
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+msgstr ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+msgstr ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+msgstr ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+msgstr ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+msgstr ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+
+#. Type: entropy
+#. Description
+#: ../templates:23001
+#| msgid "Template with unknown type"
+msgid "Template with entropy type"
+msgstr "Template with unknown type"
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en_US.po b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en_US.po
new file mode 100644
index 0000000..450a03c
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/en_US.po
@@ -0,0 +1,223 @@
+# English translations for PACKAGE package.
+# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Niels Thykier <niels@thykier.net>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-01-01 22:34+0000\n"
+"PO-Revision-Date: 2012-10-01 22:54+0200\n"
+"Last-Translator: Russ Allbery <rra@debian.org>\n"
+"Language-Team: English <debian-i18n@lists.debian.org>\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "left, right, up, down"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Pick the odd one out"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../templates:3001
+msgid "Missing template field."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this a bad template?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Missing type"
+msgstr ""
+
+#. Type: lintian
+#. Description
+#: ../templates:6001
+msgid "Template with unknown type"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "How do you like the default?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "On a scale of \"false\" to \"true\"."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:8001
+msgid "A boolean type would have been better"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:9001
+msgid "Preference"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:10001
+msgid "Missing a Choices field"
+msgstr ""
+
+#. Type: error
+#. Description
+#. Type: error
+#. Description
+#: ../templates:12001
+msgid "Duplicate long description"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:13001
+msgid "Is the field below unknown?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:14001
+msgid "What is the name of this package checker:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:15001
+msgid "Select either x or y"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:16001
+msgid "Lintian is the best!"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Do you like sakana?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Or do you prefer sake?"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:18001
+msgid "Aren't you tired of all these debconf prompts?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:19001
+msgid ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:20001
+msgid "I think Lintian is the best"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Do you like Lintian?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Pick \"yes\" if you do."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid "Name the title of this song:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+msgstr ""
+
+#. Type: entropy
+#. Description
+#: ../templates:23001
+msgid "Template with entropy type"
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..b7f5a7b
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/po/templates.pot
@@ -0,0 +1,223 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-01-01 22:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#: ../templates:1001
+msgid "Useless note"
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "left, right, up, down"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Pick the odd one out"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../templates:3001
+msgid "Missing template field."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:4001
+msgid "Is this a bad template?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:5001
+msgid "Missing type"
+msgstr ""
+
+#. Type: lintian
+#. Description
+#: ../templates:6001
+msgid "Template with unknown type"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "How do you like the default?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:7001
+msgid "On a scale of \"false\" to \"true\"."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:8001
+msgid "A boolean type would have been better"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:9001
+msgid "Preference"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:10001
+msgid "Missing a Choices field"
+msgstr ""
+
+#. Type: error
+#. Description
+#. Type: error
+#. Description
+#: ../templates:12001
+msgid "Duplicate long description"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:13001
+msgid "Is the field below unknown?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:14001
+msgid "What is the name of this package checker:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:15001
+msgid "Select either x or y"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:16001
+msgid "Lintian is the best!"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Do you like sakana?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:17001
+msgid "Or do you prefer sake?"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:18001
+msgid "Aren't you tired of all these debconf prompts?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:19001
+msgid ""
+"This template has a very long short description, is that what you call an "
+"oxymoron?"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:20001
+msgid "I think Lintian is the best"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Do you like Lintian?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:21001
+msgid "Pick \"yes\" if you do."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid "Name the title of this song:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Five green bottles sitting on the wall, Five green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be four "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Four green bottles sitting on the wall, Four green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be three "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Three green bottles sitting on the wall, Three green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be two "
+"green bottles sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"Two green bottles sitting on the wall, Two green bottles sitting on the "
+"wall, And if one green bottle should accidentally fall, There'll be one "
+"green bottle sitting on the wall."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:22001
+msgid ""
+"One green bottle sitting on the wall, One green bottle sitting on the wall, "
+"And if one green bottle should accidentally fall, There'll be no green "
+"bottles sitting on the wall."
+msgstr ""
+
+#. Type: entropy
+#. Description
+#: ../templates:23001
+msgid "Template with entropy type"
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/postinst b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/templates b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/templates
new file mode 100644
index 0000000..46ca184
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/debian/templates
@@ -0,0 +1,124 @@
+Template: debconf/translated
+Type: error
+_Description: Useless note
+
+Template: debconf/unsplit-choices
+Type: select
+_Choices: left, right, up, down
+_Description: Pick the odd one out
+
+Type: text
+_Description: Missing template field.
+
+Template: debconf-malformed-template
+Type: boolean
+_Description: Is this a bad template?
+
+Template: debconf/no-type
+_Description: Missing type
+
+Template: debconf/unknown-type
+Type: lintian
+_Description: Template with unknown type
+
+Template: debconf/boolean-bogus-default
+Type: boolean
+Default: lintian
+_Description: How do you like the default?
+ On a scale of "false" to "true".
+
+Template: debconf/select-boolean-choice
+Type: select
+Choices: yes, no
+_Description: A boolean type would have been better
+
+Template: debconf/select-empty-trans-choices
+Type: select
+Choices: sakana, sake
+Choices-Da:
+_Description: Preference
+
+Template: debconf/select-without-choices
+Type: select
+_Description: Missing a Choices field
+
+Template: debconf/no-description
+Type: error
+
+Template: debconf/duplicate-long-desc
+Type: error
+_Description: Duplicate long description
+ Duplicate long description
+
+Template: debconf/unknown-field
+Type: boolean
+_Description: Is the field below unknown?
+Unknown-field: yes, it is.
+
+Template: debconf/malformed-prompt
+Type: string
+_Description: What is the name of this package checker:
+
+Template: debconf/imperative-select
+Type: select
+Choices: x,y
+_Description: Select either x or y
+
+Template: debconf/malformed-question
+Type: boolean
+_Description: Lintian is the best!
+
+Template: debconf/question-in-extended
+Type: boolean
+_Description: Do you like sakana?
+ Or do you prefer sake?
+
+Template: debconf/malformed-note-title
+Type: note
+_Description: Aren't you tired of all these debconf prompts?
+
+Template: debconf/too-long-short-desc
+Type: boolean
+_Description: This template has a very long short description, is that what you call an oxymoron?
+
+Template: debconf/first-person
+Type: select
+Choices: lintian, no-lintian
+_Description: I think Lintian is the best
+
+Template: debconf/assumption
+Type: boolean
+_Description: Do you like Lintian?
+ Pick "yes" if you do.
+
+Template: debconf/5-green-bottles-on-the-wall
+Type: string
+_Description: Name the title of this song:
+ Five green bottles sitting on the wall,
+ Five green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be four green bottles sitting on the wall.
+ .
+ Four green bottles sitting on the wall,
+ Four green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be three green bottles sitting on the wall.
+ .
+ Three green bottles sitting on the wall,
+ Three green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be two green bottles sitting on the wall.
+ .
+ Two green bottles sitting on the wall,
+ Two green bottles sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be one green bottle sitting on the wall.
+ .
+ One green bottle sitting on the wall,
+ One green bottle sitting on the wall,
+ And if one green bottle should accidentally fall,
+ There'll be no green bottles sitting on the wall.
+
+Template: debconf/entropy-type
+Type: entropy
+_Description: Template with entropy type
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/fill-values b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/fill-values
new file mode 100644
index 0000000..2018d2c
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-templates-general
+Description: Test for various debconf template issues
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/config-gen.pl b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/config-gen.pl
new file mode 100644
index 0000000..e6588b7
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/config-gen.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Helper script to generate d/config from d/templates.
+# It is just here to make sure all templates are "used".
+
+use strict;
+use warnings;
+
+print <<EOF ;
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+EOF
+
+for my $line ( <STDIN> ) {
+
+ if ($line =~ /^Template:\s*(\S+)\s*$/) {
+
+ my $template = $1;
+ next
+ unless defined $template;
+
+ print "db_input high $template || true\n";
+ print "db_go\n\n";
+ }
+}
+
+exit 0;
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/gen-source.mk b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/gen-source.mk
new file mode 100755
index 0000000..f6f5975
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/orig/gen-source.mk
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+all: debian/config
+
+debian/config: debian/templates
+ perl config-gen.pl < $< > $@
+
+
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/pre-build b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/pre-build
new file mode 100755
index 0000000..bfcb477
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/build-spec/pre-build
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+DIR="$1"
+make --silent -C "$DIR" -f "$DIR/gen-source.mk" all
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/desc b/t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/desc
new file mode 100644
index 0000000..ab9ee47
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-templates-general
+Check: debian/po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/hints b/t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/hints
new file mode 100644
index 0000000..e225a5a
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/debconf-templates-general/eval/hints
@@ -0,0 +1 @@
+debconf-templates-general (source): debconf-translation-using-general-list [debian/po/en_US.po]
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/config b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/config
new file mode 100755
index 0000000..224c204
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/config
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get test/checksum_error || true
+
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/control.in b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/control.in
new file mode 100644
index 0000000..1140f19
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, cdebconf
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..1c61d48
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+# taken from preseed 1.90; see #883653; FL
+[type: gettext/rfc822deb] templates
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..3abfcf6
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/templates.pot
@@ -0,0 +1,37 @@
+# taken from preseed 1.90; see #883653; FL
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: preseed\n"
+"Report-Msgid-Bugs-To: preseed@packages.debian.org\n"
+"POT-Creation-Date: 2016-11-22 22:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: error
+#. Description
+#. XXX: should be made translatable after Stretch
+#: ../templates:1001
+msgid "Checksum error"
+msgstr ""
+
+#. Type: error
+#. Description
+#. XXX: should be made translatable after Stretch
+#: ../templates:1001
+msgid ""
+"The ${ALGORITHM} checksum of the file retrieved from <${LOCATION}> fails to "
+"match the expected value of \"${CHECKSUM}\". The file may be corrupt, or "
+"the provided checksums may be out of date."
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/zh_CN.po b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/zh_CN.po
new file mode 100644
index 0000000..5be7a86
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/po/zh_CN.po
@@ -0,0 +1,64 @@
+# taken from preseed 1.90; see #883653; FL
+
+# THIS FILE IS GENERATED AUTOMATICALLY FROM THE D-I PO MASTER FILES
+# The master files can be found under packages/po/
+#
+# DO NOT MODIFY THIS FILE DIRECTLY: SUCH CHANGES WILL BE LOST
+#
+# Simplified Chinese translation for Debian Installer.
+#
+# Copyright (C) 2003-2008 Software in the Public Interest, Inc.
+# This file is distributed under the same license as debian-installer.
+#
+# Translated by Yijun Yuan (2004), Carlos Z.F. Liu (2004,2005,2006),
+# Ming Hua (2005,2006,2007,2008), Xiyue Deng (2008), Kov Chai (2008),
+# Kenlen Lai (2008), WCM (2008), Ren Xiaolei (2008).
+#
+#
+# Translations from iso-codes:
+# Tobias Toedter <t.toedter@gmx.net>, 2007.
+# Translations taken from ICU SVN on 2007-09-09
+#
+# Free Software Foundation, Inc., 2002, 2003, 2007, 2008.
+# Alastair McKinstry <mckinstry@computer.org>, 2001,2002.
+# Translations taken from KDE:
+# - Wang Jian <lark@linux.net.cn>, 2000.
+# - Carlos Z.F. Liu <carlosliu@users.sourceforge.net>, 2004 - 2006.
+# LI Daobing <lidaobing@gmail.com>, 2007, 2008, 2009, 2010.
+# YunQiang Su <wzssyqa@gmail.com>, 2011.
+#
+# Mai Hao Hui <mhh@126.com>, 2001 (translations from galeon)
+# YunQiang Su <wzssyqa@gmail.com>, 2010, 2011, 2012, 2013.
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgstr ""
+"Project-Id-Version: debian-installer\n"
+"Report-Msgid-Bugs-To: preseed@packages.debian.org\n"
+"POT-Creation-Date: 2016-11-22 22:34+0000\n"
+"PO-Revision-Date: 2017-06-11 18:20+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team: <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. Type: error
+#. Description
+#. XXX: should be made translatable after Stretch
+#: ../templates:1001
+msgid "Checksum error"
+msgstr "校验ç é”™è¯¯"
+
+#. Type: error
+#. Description
+#. XXX: should be made translatable after Stretch
+#: ../templates:1001
+msgid ""
+"The ${ALGORITHM} checksum of the file retrieved from <${LOCATION}> fails to "
+"match the expected value of \"${CHECKSUM}\". The file may be corrupt, or "
+"the provided checksums may be out of date."
+msgstr ""
+"从 <${LOCATION}> 下载的文件 ${ALGORITHM} 校验ç ä¸ç¬¦åˆé¢„期,预期的值"
+"为“${CHECKSUM}â€ã€‚文件å¯èƒ½å·²ç»æŸæ¯ï¼Œæˆ–所æ供的校验ç å¯èƒ½å·²ç»è¿‡æœŸã€‚"
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/postinst b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/postinst
new file mode 100644
index 0000000..4d6cb4d
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+. /usr/share/debconf/confmodule
+
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/templates b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/templates
new file mode 100644
index 0000000..144f922
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/debian/templates
@@ -0,0 +1,22 @@
+Template: test/checksum_error
+Type: error
+# Lintian test note: The space between '# and CHECKSUM' in the lines
+# below is the unicode character NO BREAK SPACE U+00A0 (\302\240 in
+# UTF-8) and the sole reason why intltool-update fails.
+#
+# ERROR: xgettext failed to generate PO template file because there is non-ASCII
+# string marked for translation. Please make sure that all strings marked
+# for translation are in uniform encoding (say UTF-8), then *prepend* the
+# following line to POTFILES.in and rerun intltool-update:
+#
+# [encoding: UTF-8]
+#
+# taken from preseed 1.90; see #883653; FL
+#
+# Translators : DO NOT TRANSLATE variable names : ALGORITHM, LOCATION
+# and CHECKSUM
+# :sl2:
+_Description: Checksum error
+ The ${ALGORITHM} checksum of the file retrieved from <${LOCATION}> fails
+ to match the expected value of "${CHECKSUM}". The file may be corrupt,
+ or the provided checksums may be out of date.
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/fill-values b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/fill-values
new file mode 100644
index 0000000..7862c3f
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: invalid-potfiles-in
+Skeleton: upload-native
+Description: Test for invalid POTFILES.in for debconf template
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/desc b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/desc
new file mode 100644
index 0000000..4e65531
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/desc
@@ -0,0 +1,2 @@
+Testname: invalid-potfiles-in
+Check: debian/po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/hints b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/hints
new file mode 100644
index 0000000..40d9932
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/invalid-potfiles-in/eval/hints
@@ -0,0 +1 @@
+invalid-potfiles-in (source): invalid-potfiles-in [debian/po/POTFILES.in]
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/desc b/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/desc
new file mode 100644
index 0000000..93e1d45
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debian/po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/hints b/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/hints
new file mode 100644
index 0000000..636bc66
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/hints
@@ -0,0 +1,12 @@
+debconf (source): untranslatable-debconf-templates [debian/debconf-test.templates:58]
+debconf (source): untranslatable-debconf-templates [debian/debconf-test.templates:47]
+debconf (source): unknown-encoding-in-po-file [debian/po/fr.po]
+debconf (source): translated-default-field [debian/debconf-test.templates:72]
+debconf (source): translated-default-field [debian/debconf-test.templates:67]
+debconf (source): stray-translated-debconf-templates [debian/debconf-test.templates.de]
+debconf (source): no-complete-debconf-translation
+debconf (source): newer-debconf-templates [debian/po/templates.pot]
+debconf (source): misnamed-po-file [debian/po/sample-file.po]
+debconf (source): misnamed-po-file [debian/po/lang.po]
+debconf (source): invalid-po-file [debian/po/sample-file.po]
+debconf (source): invalid-po-file [debian/po/fr.po]
diff --git a/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/post-test b/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/English.po b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/English.po
new file mode 100644
index 0000000..e99b822
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/English.po
@@ -0,0 +1 @@
+Not a PO file or an English translation.
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..da5857e
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,3 @@
+# This is a comment, which should be ignored.
+[type: gettext/rfc822deb] templates
+some-other-file
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/de.po b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/de.po
new file mode 100644
index 0000000..545fd25
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/de.po
@@ -0,0 +1,2 @@
+This is just some random other file that isn't a German translation at
+all.
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..420734f
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/po/templates.pot
@@ -0,0 +1,30 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Lintian 2.4.3\n"
+"PO-Revision-Date: +2010-07-25 17:07 -0700\n"
+"Last-Translator: Russ Allbery <rra@debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Default
+#: ../templates:1001
+msgid "foo"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "This is a string question used for testing:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "This is a second string question:"
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "This one ensures no 100% translation of the template."
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates
new file mode 100644
index 0000000..b626825
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates
@@ -0,0 +1,10 @@
+Template: po-debconf-general/test
+Type: string
+_Default: foo
+Description: This is a string question used for testing:
+
+Template: po-debconf-general/test-2
+Type: string
+Default: bar
+_Description: This is a second string question:
+ This one ensures no 100% translation of the template.
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates.en_US b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates.en_US
new file mode 100644
index 0000000..617a474
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/debian/templates.en_US
@@ -0,0 +1,5 @@
+Template: po-debconf-general/test
+Type: string
+Default: foo
+_Description: This is an English translation that shouldn't be in this
+ directory.
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/fill-values b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/fill-values
new file mode 100644
index 0000000..bbcbc61
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: po-debconf-general
+Description: General tests for debconf translations
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/eval/desc b/t/recipes/checks/debian/po-debconf/po-debconf-general/eval/desc
new file mode 100644
index 0000000..72652db
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: po-debconf-general
+Check: debian/po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-general/eval/hints b/t/recipes/checks/debian/po-debconf/po-debconf-general/eval/hints
new file mode 100644
index 0000000..af584a3
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-general/eval/hints
@@ -0,0 +1,8 @@
+po-debconf-general (source): untranslatable-debconf-templates [debian/templates:4]
+po-debconf-general (source): translated-default-field [debian/templates:3]
+po-debconf-general (source): stray-translated-debconf-templates [debian/templates.en_US]
+po-debconf-general (source): no-complete-debconf-translation
+po-debconf-general (source): missing-file-from-potfiles-in some-other-file [debian/po/POTFILES.in:3]
+po-debconf-general (source): misnamed-po-file [debian/po/English.po]
+po-debconf-general (source): invalid-po-file [debian/po/de.po]
+po-debconf-general (source): invalid-po-file [debian/po/English.po]
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/config b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/config
new file mode 100755
index 0000000..240b7f8
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/config
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get po-debconf-general/test || true
+db_get po-debconf-general/test-2 || true
+
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/po/en.po b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/po/en.po
new file mode 100644
index 0000000..dbf7e69
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/po/en.po
@@ -0,0 +1,17 @@
+# Woohoo, translations - here to suppress a "no-complete-translation"
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: po-debconf-missing\n"
+"Report-Msgid-Bugs-To: po-debconf-missing@packages.debian.org\n"
+"POT-Creation-Date: 2009-08-24 19:24+0200\n"
+"PO-Revision-Date: 2010-09-03 23:51+0200\n"
+"Last-Translator: Lintian Maintainers <debian-lint-maint@lists.debian.org>\n"
+"Language-Team: Lintian Maintainers <debian-lint-maint@lists.debian.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/postinst b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/postinst
new file mode 100644
index 0000000..0ae7a18
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/templates b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/templates
new file mode 100644
index 0000000..1285e40
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/debian/templates
@@ -0,0 +1,10 @@
+Template: po-debconf-general/test
+Type: string
+Default: foo
+_Description: This is a string question used for testing:
+
+Template: po-debconf-general/test-2
+Type: string
+Default: bar
+_Description: This is a second string question:
+ This one ensures no 100% translation of the template.
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/fill-values b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/fill-values
new file mode 100644
index 0000000..0e4fc01
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: po-debconf-missing
+Description: Test for missing po-debconf files
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/desc b/t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/desc
new file mode 100644
index 0000000..9a65aef
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: po-debconf-missing
+Check: debian/po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/hints b/t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/hints
new file mode 100644
index 0000000..6830040
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-missing/eval/hints
@@ -0,0 +1,2 @@
+po-debconf-missing (source): missing-templates-pot
+po-debconf-missing (source): missing-potfiles-in
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/config b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/config
new file mode 100755
index 0000000..240b7f8
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/config
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get po-debconf-general/test || true
+db_get po-debconf-general/test-2 || true
+
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/postinst b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/postinst
new file mode 100644
index 0000000..0ae7a18
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/templates b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/templates
new file mode 100644
index 0000000..1d685bc
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/debian/templates
@@ -0,0 +1,10 @@
+Template: po-debconf-general/test
+Type: string
+Default: foo
+Description: This is a string question used for testing:
+
+Template: po-debconf-general/test-2
+Type: string
+Default: bar
+Description: This is a second string question:
+ This one ensures no 100% translation of the template.
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/fill-values b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/fill-values
new file mode 100644
index 0000000..1b56e55
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: po-debconf-no-po-debconf
+Description: Test for not using po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/desc b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/desc
new file mode 100644
index 0000000..d3b4ab1
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: po-debconf-no-po-debconf
+Check: debian/po-debconf
diff --git a/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/hints b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/hints
new file mode 100644
index 0000000..2fd5c5b
--- /dev/null
+++ b/t/recipes/checks/debian/po-debconf/po-debconf-no-po-debconf/eval/hints
@@ -0,0 +1,3 @@
+po-debconf-no-po-debconf (source): untranslatable-debconf-templates [debian/templates:9]
+po-debconf-no-po-debconf (source): untranslatable-debconf-templates [debian/templates:4]
+po-debconf-no-po-debconf (source): not-using-po-debconf
diff --git a/t/recipes/checks/debian/readme/bad-email-format/build-spec/debian/README.Debian b/t/recipes/checks/debian/readme/bad-email-format/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/readme/bad-email-format/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/readme/bad-email-format/build-spec/fill-values b/t/recipes/checks/debian/readme/bad-email-format/build-spec/fill-values
new file mode 100644
index 0000000..d3e7aca
--- /dev/null
+++ b/t/recipes/checks/debian/readme/bad-email-format/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: bad-email-format
+Description: Debian.README with email address in unknown format
diff --git a/t/recipes/checks/debian/readme/bad-email-format/eval/desc b/t/recipes/checks/debian/readme/bad-email-format/eval/desc
new file mode 100644
index 0000000..0269f3d
--- /dev/null
+++ b/t/recipes/checks/debian/readme/bad-email-format/eval/desc
@@ -0,0 +1,2 @@
+Testname: bad-email-format
+Check: debian/readme
diff --git a/t/recipes/checks/debian/readme/bad-email-format/eval/hints b/t/recipes/checks/debian/readme/bad-email-format/eval/hints
new file mode 100644
index 0000000..72ab52d
--- /dev/null
+++ b/t/recipes/checks/debian/readme/bad-email-format/eval/hints
@@ -0,0 +1 @@
+bad-email-format (binary): readme-debian-contains-invalid-email-address foo@unknown [usr/share/doc/bad-email-format/README.Debian]
diff --git a/t/recipes/checks/debian/readme/bad-email-format/eval/post-test b/t/recipes/checks/debian/readme/bad-email-format/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/readme/bad-email-format/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/readme/debian-readme-general/build-spec/debian/README.Debian b/t/recipes/checks/debian/readme/debian-readme-general/build-spec/debian/README.Debian
new file mode 100644
index 0000000..482b668
--- /dev/null
+++ b/t/recipes/checks/debian/readme/debian-readme-general/build-spec/debian/README.Debian
@@ -0,0 +1,11 @@
+This is a test README.Debian with a few problems that Lintian should
+catch, like accidentaly misspelled words.
+
+Here is a reference to /usr/doc/debian-readme-general, which is an old
+path that nothing should use any more.
+
+ALS is not a spelling error for also and ANG is not a spelling error for
+and. In general, possible acronyms like COMIT should be ignored. But
+only to a certain length; CHNAGES is still wrong.
+
+ -- Unknown <unknown@unknown>
diff --git a/t/recipes/checks/debian/readme/debian-readme-general/build-spec/fill-values b/t/recipes/checks/debian/readme/debian-readme-general/build-spec/fill-values
new file mode 100644
index 0000000..b2d9b73
--- /dev/null
+++ b/t/recipes/checks/debian/readme/debian-readme-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debian-readme-general
+Description: General tests for README.Debian
diff --git a/t/recipes/checks/debian/readme/debian-readme-general/eval/desc b/t/recipes/checks/debian/readme/debian-readme-general/eval/desc
new file mode 100644
index 0000000..0df2974
--- /dev/null
+++ b/t/recipes/checks/debian/readme/debian-readme-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: debian-readme-general
+See-Also: Debian Bug#556456
+Check: debian/readme
diff --git a/t/recipes/checks/debian/readme/debian-readme-general/eval/hints b/t/recipes/checks/debian/readme/debian-readme-general/eval/hints
new file mode 100644
index 0000000..a5b1e27
--- /dev/null
+++ b/t/recipes/checks/debian/readme/debian-readme-general/eval/hints
@@ -0,0 +1,4 @@
+debian-readme-general (binary): spelling-error-in-readme-debian accidentaly accidentally [usr/share/doc/debian-readme-general/README.Debian]
+debian-readme-general (binary): spelling-error-in-readme-debian CHNAGES CHANGES [usr/share/doc/debian-readme-general/README.Debian]
+debian-readme-general (binary): readme-debian-mentions-usr-doc [usr/share/doc/debian-readme-general/README.Debian:4]
+debian-readme-general (binary): readme-debian-contains-invalid-email-address unknown@unknown [usr/share/doc/debian-readme-general/README.Debian]
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/desc b/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..5300245
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: debian/readme
+See-Also:
+ Bug#497347
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/hints b/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..31f43d3
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/hints
@@ -0,0 +1 @@
+generic-dh-make-2008 (binary): readme-debian-contains-debmake-template [usr/share/doc/generic-dh-make-2008/README.Debian]
diff --git a/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/post-test b/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/readme/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/eval/desc b/t/recipes/checks/debian/readme/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..8573044
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: debian/readme
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/eval/hints b/t/recipes/checks/debian/readme/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..8781179
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (binary): readme-debian-mentions-usr-doc [usr/share/doc/etcfiles/README.Debian:2]
diff --git a/t/recipes/checks/debian/readme/legacy-etcfiles/eval/post-test b/t/recipes/checks/debian/readme/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..3e86b96
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses non-UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/eval/desc b/t/recipes/checks/debian/readme/legacy-foo++/eval/desc
new file mode 100644
index 0000000..552bd50
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/readme
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/eval/hints b/t/recipes/checks/debian/readme/legacy-foo++/eval/hints
new file mode 100644
index 0000000..3a3d628
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (binary): readme-debian-contains-invalid-email-address foo@unknown [usr/share/doc/foo++/README.Debian.gz]
diff --git a/t/recipes/checks/debian/readme/legacy-foo++/eval/post-test b/t/recipes/checks/debian/readme/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/readme/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in
new file mode 100644
index 0000000..9b17d19
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/fill-values b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/fill-values
new file mode 100644
index 0000000..f97b076
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-rules-requires-root-binary-targets
+Description: Test for "Rules-Requires-Root: binary-targets"
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/desc b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/desc
new file mode 100644
index 0000000..78f3775
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-rules-requires-root-binary-targets
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/hints b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/hints
new file mode 100644
index 0000000..fedc8bd
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/eval/hints
@@ -0,0 +1 @@
+control-file-rules-requires-root-binary-targets (source): custom-compression-in-debian-rules dh_builddeb -- -Zgzip [debian/rules:7]
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/control.in b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/control.in
new file mode 100644
index 0000000..503994d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/fill-values b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/fill-values
new file mode 100644
index 0000000..7359a3f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-rules-requires-root-no
+Description: Test for "Rules-Requires-Root: no"
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/desc b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/desc
new file mode 100644
index 0000000..3b22695
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-rules-requires-root-no
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/hints b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/hints
new file mode 100644
index 0000000..f1f23af
--- /dev/null
+++ b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/eval/hints
@@ -0,0 +1 @@
+control-file-rules-requires-root-no (source): custom-compression-in-debian-rules dh_builddeb -- -Zgzip [debian/rules:7]
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules b/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules
new file mode 100644
index 0000000..3d706f5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zgzip
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/fill-values b/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/fill-values
new file mode 100644
index 0000000..97909d8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-compat-old
+Description: Test for old debian/compat file
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/eval/desc b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/desc
new file mode 100644
index 0000000..769274c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-compat-old
+Options: --include-dir ./lintian-include-dir
+Profile: lintian-test
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/eval/hints b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/hints
new file mode 100644
index 0000000..d7b6688
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/hints
@@ -0,0 +1 @@
+debhelper-compat-old (source): custom-compression-in-debian-rules dh_builddeb -- -Zgzip [debian/rules:7]
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..d91eeb3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-compat-old/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,3 @@
+@include-parent
+deprecated=1
+recommended=100
diff --git a/t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/debian/rules b/t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/debian/rules
new file mode 100755
index 0000000..69a9f01
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_OPTIONS=nocheck
+export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/fill-values b/t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/fill-values
new file mode 100644
index 0000000..39b1f51
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-deb-build-options/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-deb-build-options
+Description: Test the value of DEB_BUILD_OPTIONS
diff --git a/t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/desc b/t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/desc
new file mode 100644
index 0000000..f8ef095
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/desc
@@ -0,0 +1,2 @@
+Testname: debhelper-deb-build-options
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/hints b/t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/hints
new file mode 100644
index 0000000..00e0056
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-deb-build-options/eval/hints
@@ -0,0 +1 @@
+debhelper-deb-build-options (source): debian-rules-sets-DEB_BUILD_OPTIONS [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/debian/rules b/t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/debian/rules
new file mode 100755
index 0000000..111f495
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+export DH_COMPAT=10
+
+%:
+ dh $@
+
+DH_COMPAT=8
diff --git a/t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/fill-values b/t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/fill-values
new file mode 100644
index 0000000..31ffc38
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-dh-compat/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debhelper-dh-compat
+Description: Test the value of DH_COMPAT
diff --git a/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/desc b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/desc
new file mode 100644
index 0000000..72261d3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/desc
@@ -0,0 +1,4 @@
+Testname: debhelper-dh-compat
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/hints b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/hints
new file mode 100644
index 0000000..cd1a705
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/hints
@@ -0,0 +1 @@
+debhelper-dh-compat (source): debian-rules-sets-DH_COMPAT [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..d91eeb3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-dh-compat/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,3 @@
+@include-parent
+deprecated=1
+recommended=100
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/control.in b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..6a7a04d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/control.in
@@ -0,0 +1,33 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debhelper-pre-depends
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Depends}
+Description: [% $description %] extra string
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string to not to trigger duplicated description tags. It may
+ be an empty package.
+
+Package: debhelper-suggests
+Architecture: [% $package_architecture %]
+Suggests: ${misc:Depends}
+Description: [% $description %] another extra string
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. Extra
+ string. It may be an empty package.
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/rules b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/rules
new file mode 100755
index 0000000..a622013
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/debian/rules
@@ -0,0 +1,24 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+binary: binary-arch binary-indep
+binary-arch:
+binary-indep:
+ -dh_clideps
+ -dh_gstscancodecs
+ dh_lisp || true
+ # Should trigger a versioned dependency requirement for dpatch
+ -dh_dpatch_patch
+# We don't warn about commands inside make conditionals, so none of these
+# get any warnings.
+ifeq "$(USE_DH_PYTHON3)" "y"
+ dh_python3
+else
+ ifeq "$(USE_PYSUPPORT)" "y"
+ dh_pysupport
+ endif
+endif
+ dh binary-indep
+ -dh_strip_nondeterminism
+ -dh_scour
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/fill-values b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/fill-values
new file mode 100644
index 0000000..7857128
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: debhelper-no-depends
+Dh-Compat-Level: 9
+Description: Test dependency requirements for debhelper
+# Overrides the "data/debhelper/compat-level"
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/eval/desc b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/desc
new file mode 100644
index 0000000..5d1b514
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/desc
@@ -0,0 +1,5 @@
+Testname: debhelper-no-depends
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: debian/rules
+# Overrides the "data/debhelper/compat-level"
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/eval/hints b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/hints
new file mode 100644
index 0000000..f4bb314
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/hints
@@ -0,0 +1 @@
+debhelper-no-depends (source): rules-require-build-prerequisite (does not satisfy debhelper:any | debhelper-compat:any) [debian/rules]
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
new file mode 100644
index 0000000..67c590a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debhelper-no-depends/eval/lintian-include-dir/vendors/lintian-test/main/data/debhelper/compat-level
@@ -0,0 +1,2 @@
+@include-parent
+pedantic=8
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/debian/rules b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/debian/rules
new file mode 100755
index 0000000..38cb607
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BADFLAGS_MAINT_APPEND = -Wl,--as-needed
+
+export DEB_GOODFLAGS_MAINT_APPEND = -lprefix -Wl,--no-as-needed -lfoo, -Wl,-as-needed -lsuffix
+export DEB_GOODFLAGS_MAINT_APPEND = -lprefix -Wl,--as-needed -Wl,--no-as-needed -lsuffix
+
+%:
+ dh $@
+
+override_dh_autoreconf:
+ -dh_autoreconf --as-needed
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/fill-values b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/fill-values
new file mode 100644
index 0000000..54f985e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debian-rules-uses-as-needed-linker-flag
+Description: Test for --as-needed in debian/rules.
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/desc b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/desc
new file mode 100644
index 0000000..5afa7c8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-rules-uses-as-needed-linker-flag
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/hints b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/hints
new file mode 100644
index 0000000..f7f3eac
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-as-needed-linker-flag/eval/hints
@@ -0,0 +1,2 @@
+debian-rules-uses-as-needed-linker-flag (source): debian-rules-uses-as-needed-linker-flag [debian/rules:3]
+debian-rules-uses-as-needed-linker-flag (source): debian-rules-uses-as-needed-linker-flag [debian/rules:12]
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/debian/rules b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/debian/rules
new file mode 100755
index 0000000..88fd899
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/debian/rules
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_test:
+ # Good
+ echo $(shell py3versions -s)
+ echo $(shell py3versions -vs)
+ echo $(shell py3versions -sv)
+ echo $(shell py3versions -v)
+
+ # Bad
+ echo $(shell py3versions -i)
+ echo $(shell py3versions -vi)
+ echo $(shell py3versions --installed)
+ echo $(shell py3versions --verbose --installed)
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/fill-values b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/fill-values
new file mode 100644
index 0000000..cf63f8e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debian-rules-uses-installed-python-versions
+Description: Tests for py3versions -i
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/desc b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/desc
new file mode 100644
index 0000000..86dc9f4
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-rules-uses-installed-python-versions
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/hints b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/hints
new file mode 100644
index 0000000..baeea5d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-installed-python-versions/eval/hints
@@ -0,0 +1,7 @@
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions -vs [debian/rules:9]
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions -sv [debian/rules:10]
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions -s [debian/rules:8]
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-installed-python-versions py3versions -vi [debian/rules:15]
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-installed-python-versions py3versions -i [debian/rules:14]
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-installed-python-versions py3versions --verbose --installed [debian/rules:17]
+debian-rules-uses-installed-python-versions (source): debian-rules-uses-installed-python-versions py3versions --installed [debian/rules:16]
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/debian/rules b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/debian/rules
new file mode 100755
index 0000000..d92a6d5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ # Good
+ echo $(shell py3versions -v)
+
+ # Bad
+ echo $(shell py3versions -s)
+ echo $(shell py3versions -vs)
+ echo $(shell py3versions -sv)
+ echo $(shell py3versions --supported)
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/fill-values b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/fill-values
new file mode 100644
index 0000000..ee784f1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debian-rules-uses-supported-python-versions-without-python-all-build-depends
+Description: Tests for py3versions -s without python3-all build-depends
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/desc b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/desc
new file mode 100644
index 0000000..2068b7e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-rules-uses-supported-python-versions-without-python-all-build-depends
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/hints b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/hints
new file mode 100644
index 0000000..06b59c5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/debian-rules-uses-supported-python-versions-without-python-all-build-depends/eval/hints
@@ -0,0 +1,4 @@
+debian-rules-uses-supported-python-versions-without-python-all-build-depends (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions -vs [debian/rules:12]
+debian-rules-uses-supported-python-versions-without-python-all-build-depends (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions -sv [debian/rules:13]
+debian-rules-uses-supported-python-versions-without-python-all-build-depends (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions -s [debian/rules:11]
+debian-rules-uses-supported-python-versions-without-python-all-build-depends (source): debian-rules-uses-supported-python-versions-without-python-all-build-depends py3versions --supported [debian/rules:14]
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/debian/rules
new file mode 100644
index 0000000..000210b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh ${@}
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/fill-values
new file mode 100644
index 0000000..eb6c44c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: curly-braces
+Skeleton: source-native
+Description: Uses dh sequencer with curly variable notation (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/desc
new file mode 100644
index 0000000..c37f999
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/desc
@@ -0,0 +1,5 @@
+Testname: curly-braces
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: Debian Bug#947115
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/curly-braces/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/debian/rules
new file mode 100644
index 0000000..76cf643
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+export USER=fake
+export HOME=$(CURDIR)/debian/fake-home
+
+$(CURDIR)/debian/fake-home:
+ mkdir $(CURDIR)/debian/fake-home
+
+%: $(CURDIR)/debian/fake-home
+ dh $@
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/fill-values
new file mode 100644
index 0000000..3fc8de8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/dependency/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: double-quotes
+Skeleton: source-native
+Description: Uses dh sequencer with explicit dependency (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/desc
new file mode 100644
index 0000000..1c1cef1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/desc
@@ -0,0 +1,5 @@
+Testname: dependency
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: #968108
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/dependency/eval/hints
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/debian/rules
new file mode 100644
index 0000000..5875e30
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh "$@"
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/fill-values
new file mode 100644
index 0000000..443e7fc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: double-quotes
+Skeleton: source-native
+Description: Uses dh sequencer with double quotes around variable (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/desc
new file mode 100644
index 0000000..10cff19
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/desc
@@ -0,0 +1,5 @@
+Testname: double-quotes
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: https://salsa.debian.org/lintian/lintian/merge_requests/288
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/double-quotes/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/debian/rules
new file mode 100644
index 0000000..6ad65cc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ PREFIX=/usr dh $@
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/fill-values
new file mode 100644
index 0000000..cc67457
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: environment-prefix
+Skeleton: source-native
+Description: Uses dh sequencer with a prefix setting an environment variable (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/desc
new file mode 100644
index 0000000..13dab36
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/desc
@@ -0,0 +1,6 @@
+Testname: environment-prefix
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also:
+ Bug#981712
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/environment-prefix/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/debian/rules
new file mode 100644
index 0000000..f7b25c5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+.PHONY: binary binary-arch binary-indep build build-arch build-indep clean install
+binary-arch build build-arch build-indep clean install:
+ dh $@
+
+binary binary-indep:
+ dh $@
+
+build-stamp:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/fill-values
new file mode 100644
index 0000000..50af747
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: explicit-targets
+Skeleton: source-native
+Description: Uses dh sequencer but not the % target wildcard
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/desc
new file mode 100644
index 0000000..7e1ff3d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/desc
@@ -0,0 +1,5 @@
+Testname: explicit-targets
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: Debian Bug#930679
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/explicit-targets/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/rules
new file mode 100755
index 0000000..c3ff202
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/debian/rules
@@ -0,0 +1,76 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/fill-values
new file mode 100644
index 0000000..90a87b4
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: no-dh-sequencer
+Skeleton: upload-native
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Uses standard debhelper targets but not the dh sequencer
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/pre-build.in b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/desc
new file mode 100644
index 0000000..29c542e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/desc
@@ -0,0 +1,3 @@
+Testname: no-dh-sequencer
+Check: debian/rules/dh-sequencer
+See-Also: Debian Bug#930679
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/hints
new file mode 100644
index 0000000..a2ff5e0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/no-dh-sequencer/eval/hints
@@ -0,0 +1 @@
+no-dh-sequencer (source): no-dh-sequencer [debian/rules]
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/debian/rules
new file mode 100644
index 0000000..0ceea36
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $(@)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/fill-values
new file mode 100644
index 0000000..07d9a39
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: parentheses
+Skeleton: source-native
+Description: Uses dh sequencer with parentheses around variable name (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/desc
new file mode 100644
index 0000000..95b6225
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/desc
@@ -0,0 +1,5 @@
+Testname: parentheses
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: Debian Bug#947115
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/parentheses/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/debian/rules
new file mode 100644
index 0000000..2822991
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh '$@'
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/fill-values
new file mode 100644
index 0000000..4add931
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: single-quotes
+Skeleton: source-native
+Description: Uses dh sequencer with single quotes around variable (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/desc
new file mode 100644
index 0000000..895f051
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/desc
@@ -0,0 +1,5 @@
+Testname: single-quotes
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: https://salsa.debian.org/lintian/lintian/merge_requests/288
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/single-quotes/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/debian/rules b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/debian/rules
new file mode 100644
index 0000000..f547287
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/debian/rules
@@ -0,0 +1,6 @@
+#!/usr/bin/make -f
+
+%:
+ # this comment should not trigger a false positive
+ # neither should this one
+ dh $(@)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/fill-values b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/fill-values
new file mode 100644
index 0000000..933afac
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: with-comments
+Skeleton: source-native
+Description: Uses dh sequencer but with comments inside the Makefile recipe (false positive)
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/desc b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/desc
new file mode 100644
index 0000000..6a234e4
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/desc
@@ -0,0 +1,5 @@
+Testname: with-comments
+Check: debian/rules/dh-sequencer
+Test-Against:
+ no-dh-sequencer
+See-Also: Debian Bug#960485
diff --git a/t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/hints b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/rules/dh-sequencer/with-comments/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/README.Debian b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/README.Debian
new file mode 100644
index 0000000..5ce4495
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+dh-test for Debian
+------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Frank Lichtenheld <djpig@debian.org>, Thu, 4 Aug 2005 23:09:00 +0200
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/changelog.in
new file mode 100644
index 0000000..580f946
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+generic-dh-make-2005 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release Closes: #nnnn (nnnn is the bug number of your ITP)
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 4 Aug 2005 23:09:00 +0200
+
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/control.in b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/control.in
new file mode 100644
index 0000000..4cbbc4e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/control.in
@@ -0,0 +1,12 @@
+Source: generic-dh-make-2005
+Section: unknown
+Priority: optional
+Maintainer: Frank Lichtenheld <djpig@debian.org>
+Build-Depends: debhelper (>= 4.0.0)
+Standards-Version: 3.6.2
+
+Package: generic-dh-make-2005
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/copyright b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/copyright
new file mode 100644
index 0000000..2bcce49
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+This package was debianized by Frank Lichtenheld <djpig@debian.org> on
+Thu, 4 Aug 2005 23:09:00 +0200.
+
+It was downloaded from <fill in ftp site>
+
+Copyright Holder: <put author(s) name and email here>
+
+License:
+
+<Put the license of the package here>
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/rules b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/rules
new file mode 100755
index 0000000..ee4bffb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/debian/rules
@@ -0,0 +1,100 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+# $(MAKE)
+ #docbook-to-man debian/dh-test.sgml > dh-test.1
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ -$(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/dh-test.
+# $(MAKE) install DESTDIR=$(CURDIR)/debian/dh-test
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# dh_testversion
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+# dh_dhelp
+ #dh_suidregister # originally there, but no longer supported
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_python
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/fill-values b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/fill-values
new file mode 100644
index 0000000..01371b6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/fill-values
@@ -0,0 +1,8 @@
+Testname: generic-dh-make-2005
+Skeleton: upload-builder-only
+Author: Frank Lichtenheld <djpig@debian.org>
+Version: 1-1
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2005
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/orig/README b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/orig/README
new file mode 100644
index 0000000..e6a5a27
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/orig/README
@@ -0,0 +1,9 @@
+This is something close to the results of running dh_make on a basically
+empty upstream tarball in 2005, but with the example files removed. It's
+a useful test for the various dh_make template and boilerplate tags, as
+well as many tags for ways of doing things dh_make used to promote but are
+now deprecated or old debhelper commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old packages.
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/pre-build.in b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/desc b/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/desc
new file mode 100644
index 0000000..0608338
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-dh-make-2005
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/hints b/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/hints
new file mode 100644
index 0000000..ccb5124
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/hints
@@ -0,0 +1,4 @@
+generic-dh-make-2005 (source): debian-rules-should-not-set-CFLAGS-from-noopt [debian/rules]
+generic-dh-make-2005 (source): debian-rules-missing-required-target build-indep [debian/rules]
+generic-dh-make-2005 (source): debian-rules-missing-required-target build-arch [debian/rules]
+generic-dh-make-2005 (source): debian-rules-ignores-make-clean-error [debian/rules:47]
diff --git a/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/post-test b/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-dh-make-2005/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/control.in b/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/rules b/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/debian/rules/generic-empty/build-spec/fill-values b/t/recipes/checks/debian/rules/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/debian/rules/generic-empty/build-spec/orig/README b/t/recipes/checks/debian/rules/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/debian/rules/generic-empty/build-spec/pre-build b/t/recipes/checks/debian/rules/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/debian/rules/generic-empty/eval/desc b/t/recipes/checks/debian/rules/generic-empty/eval/desc
new file mode 100644
index 0000000..24610e0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/generic-empty/eval/hints b/t/recipes/checks/debian/rules/generic-empty/eval/hints
new file mode 100644
index 0000000..c6a9a40
--- /dev/null
+++ b/t/recipes/checks/debian/rules/generic-empty/eval/hints
@@ -0,0 +1,4 @@
+generic-empty (source): debian-rules-missing-required-target build-indep [debian/rules]
+generic-empty (source): debian-rules-missing-required-target build-arch [debian/rules]
+generic-empty (source): debian-rules-missing-required-target binary-indep [debian/rules]
+generic-empty (source): debian-rules-missing-required-target binary-arch [debian/rules]
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/rules/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/rules/legacy-binary/eval/desc b/t/recipes/checks/debian/rules/legacy-binary/eval/desc
new file mode 100644
index 0000000..bf4eb52
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/legacy-binary/eval/hints b/t/recipes/checks/debian/rules/legacy-binary/eval/hints
new file mode 100644
index 0000000..76fa038
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/eval/hints
@@ -0,0 +1,4 @@
+binary (source): debian-rules-missing-required-target build-indep [debian/rules]
+binary (source): debian-rules-missing-required-target binary-indep [debian/rules]
+binary (source): debian-rules-ignores-make-clean-error [debian/rules:14]
+binary (source): debian-rules-calls-pwd [debian/rules:9]
diff --git a/t/recipes/checks/debian/rules/legacy-binary/eval/post-test b/t/recipes/checks/debian/rules/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/control b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/build-spec/fill-values b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/eval/desc b/t/recipes/checks/debian/rules/legacy-debconf/eval/desc
new file mode 100644
index 0000000..87b1b86
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/eval/hints b/t/recipes/checks/debian/rules/legacy-debconf/eval/hints
new file mode 100644
index 0000000..fee3d99
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/eval/hints
@@ -0,0 +1,2 @@
+debconf (source): debian-rules-calls-debhelper-in-odd-order dh_makeshlibs [debian/rules:58]
+debconf (source): debian-rules-calls-debhelper-in-odd-order dh_makeshlibs [debian/rules:54]
diff --git a/t/recipes/checks/debian/rules/legacy-debconf/eval/post-test b/t/recipes/checks/debian/rules/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/eval/desc b/t/recipes/checks/debian/rules/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..e11916e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/eval/hints b/t/recipes/checks/debian/rules/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..0a58f09
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (source): debian-rules-missing-required-target binary-arch [debian/rules]
diff --git a/t/recipes/checks/debian/rules/legacy-etcfiles/eval/post-test b/t/recipes/checks/debian/rules/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/control b/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/rules b/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/rules/legacy-fields/build-spec/fill-values b/t/recipes/checks/debian/rules/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/debian/rules/legacy-fields/eval/desc b/t/recipes/checks/debian/rules/legacy-fields/eval/desc
new file mode 100644
index 0000000..e29ae38
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/legacy-fields/eval/hints b/t/recipes/checks/debian/rules/legacy-fields/eval/hints
new file mode 100644
index 0000000..4ec1eba
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/eval/hints
@@ -0,0 +1 @@
+fields (source): rules-require-build-prerequisite (does not satisfy debhelper:any | debhelper-compat:any) [debian/rules]
diff --git a/t/recipes/checks/debian/rules/legacy-fields/eval/post-test b/t/recipes/checks/debian/rules/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/eval/desc b/t/recipes/checks/debian/rules/legacy-scripts/eval/desc
new file mode 100644
index 0000000..e56bb23
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/eval/hints b/t/recipes/checks/debian/rules/legacy-scripts/eval/hints
new file mode 100644
index 0000000..cb1cdbd
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/eval/hints
@@ -0,0 +1,2 @@
+scripts (source): rules-require-build-prerequisite (does not satisfy debhelper:any | debhelper-compat:any) [debian/rules]
+scripts (source): binary-arch-rules-but-pkg-is-arch-indep [debian/rules]
diff --git a/t/recipes/checks/debian/rules/legacy-scripts/eval/post-test b/t/recipes/checks/debian/rules/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/rules/permissions-775/build-spec/fill-values b/t/recipes/checks/debian/rules/permissions-775/build-spec/fill-values
new file mode 100644
index 0000000..709e867
--- /dev/null
+++ b/t/recipes/checks/debian/rules/permissions-775/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: permissions-775
+Package-Architecture: all
+Description: Test in which debian/rules has group write permissions.
diff --git a/t/recipes/checks/debian/rules/permissions-775/build-spec/pre-build b/t/recipes/checks/debian/rules/permissions-775/build-spec/pre-build
new file mode 100755
index 0000000..393800f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/permissions-775/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+packagedir=$1
+
+chmod 775 "$packagedir/debian/rules"
diff --git a/t/recipes/checks/debian/rules/permissions-775/eval/desc b/t/recipes/checks/debian/rules/permissions-775/eval/desc
new file mode 100644
index 0000000..47f7801
--- /dev/null
+++ b/t/recipes/checks/debian/rules/permissions-775/eval/desc
@@ -0,0 +1,4 @@
+Testname: permissions-775
+Check: debian/rules
+Test-Against: debian-rules-not-executable
+See-Also: Bug#945869, Bug#945869
diff --git a/t/recipes/checks/debian/rules/permissions-775/eval/hints b/t/recipes/checks/debian/rules/permissions-775/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/permissions-775/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/debian/rules
new file mode 100755
index 0000000..dbb0df1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/debian/rules
@@ -0,0 +1,37 @@
+#!/usr/bin/make -f
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh build-arch
+ touch $@
+
+build: build-arch build-indep
+
+# From deejayd 0.8.2-1
+clean: $(PYVERS:%=clean-python%)
+
+clean-python%:
+ dh_testdir
+ dh_testroot
+
+ rm -f build-python*
+ python$* setup.py clean --all
+ find $(CURDIR) -name '*pyc' -exec rm -f {} \;
+ dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+ dh install
+ touch $@
+
+binary-arch: install
+ dh $@
+
+binary-indep: install
+ dh $@
+
+binary: binary-arch binary-indep
+.PHONY: binary binary-arch binary-indep install clean build build-arch build-indep
diff --git a/t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/fill-values
new file mode 100644
index 0000000..7760bbe
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-build-dep-pattern/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-build-dep-pattern
+Description: Check recognition of pattern dependencies
diff --git a/t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/desc b/t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/desc
new file mode 100644
index 0000000..075298a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/desc
@@ -0,0 +1,3 @@
+Testname: rules-build-dep-pattern
+See-Also: Bug#536405
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/hints b/t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/hints
new file mode 100644
index 0000000..9827600
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-build-dep-pattern/eval/hints
@@ -0,0 +1 @@
+rules-build-dep-pattern (source): rules-require-build-prerequisite (does not satisfy python2:any | python2-dev:any | python2.7:any | python2.7-dev:any | python3:any | python3-dev:any | python3-all:any | python3-all-dev:any | python3.4:any | python3.4-dev:any | python3.5:any | python3.5-dev:any | python3.6:any | python3.6-dev:any | python3.7:any | python3.7-dev:any) [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/debian/rules
new file mode 100755
index 0000000..0407d98
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip prefix --ddeb-migration=foo suffix
+ dh_strip prefix --dbgsym-migration=foo suffix
+ dh_strip prefix --dbgsym-migration='apostrophe' suffix
+ dh_strip prefix --dbgsym-migration='apostrophe << 1' suffix
diff --git a/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/fill-values
new file mode 100644
index 0000000..b6b29b8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-debug-symbol-migration-possibly-complete
+Description: Test for --dbgsym-migration etc.
diff --git a/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/desc b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/desc
new file mode 100644
index 0000000..fbb156b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-debug-symbol-migration-possibly-complete
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/hints b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/hints
new file mode 100644
index 0000000..39d2436
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-debug-symbol-migration-possibly-complete/eval/hints
@@ -0,0 +1,4 @@
+rules-debug-symbol-migration-possibly-complete (source): debug-symbol-migration-possibly-complete --ddeb-migration=foo [debian/rules:7]
+rules-debug-symbol-migration-possibly-complete (source): debug-symbol-migration-possibly-complete --dbgsym-migration=foo [debian/rules:8]
+rules-debug-symbol-migration-possibly-complete (source): debug-symbol-migration-possibly-complete --dbgsym-migration='apostrophe' [debian/rules:9]
+rules-debug-symbol-migration-possibly-complete (source): debug-symbol-migration-possibly-complete --dbgsym-migration='apostrophe << 1' [debian/rules:10]
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/debian/rules
new file mode 100755
index 0000000..6f702fe
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_test:
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+ /bin/true
+endif
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/fill-values
new file mode 100644
index 0000000..2e8d239
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-auto-test-does-not-check-deb-build-options-unrel-a
+Description: Test for missing checks for DEB_BUILD_PROFILES (false-positive)
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/desc b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/desc
new file mode 100644
index 0000000..9443f92
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-dh-auto-test-does-not-check-deb-build-options-unrel-a
+Test-Against:
+ override_dh_auto_test-does-not-check-DEB_BUILD_OPTIONS
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/hints b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-a/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/debian/rules
new file mode 100755
index 0000000..11bd6cc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+# Empty target follows
+override_dh_auto_test:
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/fill-values
new file mode 100644
index 0000000..17ed76d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-auto-test-does-not-check-deb-build-options-unrel-b
+Description: Test for missing checks for DEB_BUILD_PROFILES (false-positive)
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/desc b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/desc
new file mode 100644
index 0000000..e174c5a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-dh-auto-test-does-not-check-deb-build-options-unrel-b
+Test-Against:
+ override_dh_auto_test-does-not-check-DEB_BUILD_OPTIONS
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/hints b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-b/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/debian/rules
new file mode 100755
index 0000000..91dd51c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/debian/rules
@@ -0,0 +1,29 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_test:
+ dh_auto_test
+ dh_auto_test # Comment
+ mkdir ignore/
+ rm -rf ignore/
+ -dh_auto_test -- SUFFIX=1
+ @dh_auto_test -- SUFFIX=1
+ -cp -r ignore ignore/
+ FOO=mydir dh_auto_test -- BAR=2
+ : Disabled
+ echo "Disabled"
+ @echo "Disabled"
+ -echo "Disabled"
+ -mv -v ignore ignore/
+ [ true ] || echo ignore
+ ENV="var" \
+ ENV="var" \
+ dh_auto_test || true
+ rm -f missing
+ test true && echo "foo"
+ rmdir missing || true
+ ln -sf foo bar
+ true
+ /bin/true
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/fill-values
new file mode 100644
index 0000000..b4bb0d6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-auto-test-does-not-check-deb-build-options-unrel-c
+Description: Test for missing checks for DEB_BUILD_PROFILES (false-positive)
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/desc b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/desc
new file mode 100644
index 0000000..e9756fe
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-dh-auto-test-does-not-check-deb-build-options-unrel-c
+Test-Against:
+ override_dh_auto_test-does-not-check-DEB_BUILD_OPTIONS
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/hints b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options-unrel-c/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/debian/rules
new file mode 100755
index 0000000..b46c122
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_test:
+ /bin/sync
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/fill-values
new file mode 100644
index 0000000..afa76a3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-auto-test-does-not-check-deb-build-options
+Description: Test for missing checks for DEB_BUILD_PROFILES
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/desc b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/desc
new file mode 100644
index 0000000..ec297d9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-dh-auto-test-does-not-check-deb-build-options
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/hints b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/hints
new file mode 100644
index 0000000..8d657b1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-auto-test-does-not-check-deb-build-options/eval/hints
@@ -0,0 +1 @@
+rules-dh-auto-test-does-not-check-deb-build-options (source): override_dh_auto_test-does-not-check-DEB_BUILD_OPTIONS [debian/rules:6]
diff --git a/t/recipes/checks/debian/rules/rules-dh-order/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-order/build-spec/debian/rules
new file mode 100755
index 0000000..8ea3133
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-order/build-spec/debian/rules
@@ -0,0 +1,34 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+# Test for calling debhelper commands out of order. We take advantage here
+# of the fact checks/rules doesn't care what target the commands are called
+# from by using several uncalled targets.
+
+reverse:
+ dh_builddeb
+ dh_gencontrol
+ dh_installdeb
+ dh_shlibdeps
+ dh_makeshlibs
+
+shared-order:
+ dh_shlibdeps
+ dh_makeshlibs
+ dh_installdeb
+ dh_gencontrol
+ dh_builddeb
+
+multiple-package:
+ dh_makeshlibs -pfoo
+ dh_shlibdeps -pfoo
+ dh_installdeb -pfoo
+ dh_gencontrol -pfoo
+ dh_builddeb -pfoo
+
+ dh_makeshlibs -pbar
+ dh_gencontrol -pbar
+ dh_installdeb -pbar
+ dh_shlibdeps -pbar
+ dh_builddeb -pbar
diff --git a/t/recipes/checks/debian/rules/rules-dh-order/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-order/build-spec/fill-values
new file mode 100644
index 0000000..fae0b62
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-order/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-order
+Description: Test order of dh command invocations
diff --git a/t/recipes/checks/debian/rules/rules-dh-order/eval/desc b/t/recipes/checks/debian/rules/rules-dh-order/eval/desc
new file mode 100644
index 0000000..2ce04c4
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-order/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-dh-order
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-order/eval/hints b/t/recipes/checks/debian/rules/rules-dh-order/eval/hints
new file mode 100644
index 0000000..b0d36b0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-order/eval/hints
@@ -0,0 +1,5 @@
+rules-dh-order (source): debian-rules-calls-debhelper-in-odd-order dh_shlibdeps [debian/rules:13]
+rules-dh-order (source): debian-rules-calls-debhelper-in-odd-order dh_makeshlibs [debian/rules:18]
+rules-dh-order (source): debian-rules-calls-debhelper-in-odd-order dh_makeshlibs [debian/rules:14]
+rules-dh-order (source): debian-rules-calls-debhelper-in-odd-order dh_installdeb [debian/rules:12]
+rules-dh-order (source): debian-rules-calls-debhelper-in-odd-order dh_gencontrol [debian/rules:11]
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/debian/rules
new file mode 100755
index 0000000..79fc28b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/debian/rules
@@ -0,0 +1,29 @@
+#!/usr/bin/make -f
+
+build: build-stamp
+build-arch:
+build-indep:
+
+build-stamp:
+ dh build
+ touch $@
+
+clean:
+ dh $@
+
+install: install-stamp
+install-stamp: build-stamp
+ dh install
+ touch $@
+
+binary-arch: install
+ dh $@
+ # This target is not empty, but it should be
+ -install foo bar
+
+binary-indep: install
+ dh $@
+
+binary: binary-arch binary-indep
+
+.PHONY: binary binary-arch binary-indep install clean build build-arch build-indep
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/fill-values
new file mode 100644
index 0000000..5307261
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-unused-target-nonempty
+Description: Allow dh in unused targets, but nothing else
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/desc b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/desc
new file mode 100644
index 0000000..55593d3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/desc
@@ -0,0 +1,3 @@
+Testname: rules-dh-unused-target-nonempty
+See-Also: <20080806175819.GV11882@mail-vs.djpig.de>
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/hints b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/hints
new file mode 100644
index 0000000..4a6f8cd
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target-nonempty/eval/hints
@@ -0,0 +1 @@
+rules-dh-unused-target-nonempty (source): binary-arch-rules-but-pkg-is-arch-indep [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/debian/rules
new file mode 100755
index 0000000..ca3e9b5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/debian/rules
@@ -0,0 +1,29 @@
+#!/usr/bin/make -f
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh build-arch
+ touch $@
+
+build: build-arch build-indep
+
+clean:
+ dh $@
+
+install: install-stamp
+install-stamp: build-stamp
+ dh install
+ touch $@
+
+binary-arch: install
+ dh $@
+
+binary-indep: install
+ dh $@
+
+binary: binary-arch binary-indep
+
+.PHONY: binary binary-arch binary-indep install clean build build-arch build-indep
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/fill-values
new file mode 100644
index 0000000..bdeaa0e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-dh-unused-target
+Description: Allow dh in unused targets
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target/eval/desc b/t/recipes/checks/debian/rules/rules-dh-unused-target/eval/desc
new file mode 100644
index 0000000..5700bcb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-dh-unused-target
+Test-Against: binary-arch-rules-but-pkg-is-arch-indep
+See-Also: <20080806175819.GV11882@mail-vs.djpig.de>
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-dh-unused-target/eval/hints b/t/recipes/checks/debian/rules/rules-dh-unused-target/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-dh-unused-target/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-general/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/rules-general/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-general/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/rules-general/build-spec/debian/control.in b/t/recipes/checks/debian/rules/rules-general/build-spec/debian/control.in
new file mode 100644
index 0000000..4b34442
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-general/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends-Indep: [% $build_depends %], python
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/rules/rules-general/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-general/build-spec/debian/rules
new file mode 100755
index 0000000..e1f72bf
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-general/build-spec/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+# See debhelper(7) (uncomment to enable)
+# output every command that modifies files on the build system.
+#export DH_VERBOSE = 1
+
+DEB_AUTO_UPDATE_DEBIAN_CONTROL = yes
+DH_EXTRA_ADDONS = systemd
+
+%:
+ dh $@
+
+clean:
+ dh_clean
+ echo $(DEB_BUILD_OPTS) $(PWD)
+ @echo $(_)
+
+# dh_make generated override targets
+# This is example for Cmake (See https://bugs.debian.org/641051 )
+#override_dh_auto_configure:
+# dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
+
+override_dh_shlibdeps:
+ dh_shlibdeps -V "liblintian0 (>= 0.0.1)"
diff --git a/t/recipes/checks/debian/rules/rules-general/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-general/build-spec/fill-values
new file mode 100644
index 0000000..f3cc7ce
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: rules-general
+Package-Architecture: all
+Description: Test various debian/rules checks
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/rules/rules-general/eval/desc b/t/recipes/checks/debian/rules/rules-general/eval/desc
new file mode 100644
index 0000000..8adced2
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-general
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-general/eval/hints b/t/recipes/checks/debian/rules/rules-general/eval/hints
new file mode 100644
index 0000000..8587a20
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-general/eval/hints
@@ -0,0 +1,8 @@
+rules-general (source): missing-build-depends-for-clean-target-in-debian-rules (does not satisfy debhelper:any | debhelper-compat:any) [debian/rules]
+rules-general (source): debian-rules-uses-special-shell-variable [debian/rules:15]
+rules-general (source): debian-rules-uses-deb-build-opts [debian/rules:14]
+rules-general (source): debian-rules-updates-control-automatically [debian/rules:6]
+rules-general (source): debian-rules-should-not-use-DH_EXTRA_ADDONS systemd [debian/rules:7]
+rules-general (source): debian-rules-passes-version-info-to-dh_shlibdeps [debian/rules:23]
+rules-general (source): debian-rules-is-dh_make-template [debian/rules:17]
+rules-general (source): debian-rules-calls-pwd [debian/rules:14]
diff --git a/t/recipes/checks/debian/rules/rules-ignore-define/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-ignore-define/build-spec/debian/rules
new file mode 100755
index 0000000..3445f5c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignore-define/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+binary-arch:
+ # EMPTY
+
+define checkdir
+ test -f debian/rules
+endef
diff --git a/t/recipes/checks/debian/rules/rules-ignore-define/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-ignore-define/build-spec/fill-values
new file mode 100644
index 0000000..84cbc2b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignore-define/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-ignore-define
+Description: Ignore define blocks when checking rule files
diff --git a/t/recipes/checks/debian/rules/rules-ignore-define/eval/desc b/t/recipes/checks/debian/rules/rules-ignore-define/eval/desc
new file mode 100644
index 0000000..eab87e6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignore-define/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-ignore-define
+Test-Against: binary-arch-rules-but-pkg-is-arch-indep
+See-Also: Debian Bug#510869
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-ignore-define/eval/hints b/t/recipes/checks/debian/rules/rules-ignore-define/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignore-define/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/Makefile b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/Makefile
new file mode 100644
index 0000000..959feb8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/Makefile
@@ -0,0 +1,3 @@
+all:
+
+distclean:
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/rules
new file mode 100755
index 0000000..63556d9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_clean:
+ $(MAKE) -Cdebian distclean
+
+
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/fill-values
new file mode 100644
index 0000000..e882565
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-ignores-error-clean-fp
+Description: Check against Lintian false-positive error
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/desc b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/desc
new file mode 100644
index 0000000..5e15233
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/desc
@@ -0,0 +1,3 @@
+Testname: rules-ignores-error-clean-fp
+Test-Against: debian-rules-ignores-make-clean-error
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/hints b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean-fp/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/debian/rules
new file mode 100755
index 0000000..b86584f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_clean:
+ -$(MAKE) distclean
+
+
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/fill-values
new file mode 100644
index 0000000..e9f8da3
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-ignores-error-clean
+Description: Check for rules ignoring clean error
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/orig/Makefile b/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/orig/Makefile
new file mode 100644
index 0000000..959feb8
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean/build-spec/orig/Makefile
@@ -0,0 +1,3 @@
+all:
+
+distclean:
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/desc b/t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/desc
new file mode 100644
index 0000000..e41f791
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-ignores-error-clean
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/hints b/t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/hints
new file mode 100644
index 0000000..ef99bcf
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-ignores-error-clean/eval/hints
@@ -0,0 +1 @@
+rules-ignores-error-clean (source): debian-rules-ignores-make-clean-error [debian/rules:6]
diff --git a/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/rules
new file mode 100755
index 0000000..3f98954
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/simple-patchsys.mk
+
diff --git a/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/fill-values
new file mode 100644
index 0000000..78c210e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: rules-including-deprecated-makefiles
+Dh-Compat-Level: 10
+Description: Test for debian/rules with deprecated included file
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
+Extra-Build-Depends: cdbs
diff --git a/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/desc b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/desc
new file mode 100644
index 0000000..e43aa61
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/desc
@@ -0,0 +1,3 @@
+Testname: rules-including-deprecated-makefiles
+Test-Conflicts: dh-buildinfo
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/hints b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/hints
new file mode 100644
index 0000000..c3f7ceb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-including-deprecated-makefiles/eval/hints
@@ -0,0 +1 @@
+rules-including-deprecated-makefiles (source): debian-rules-uses-deprecated-makefile /usr/share/cdbs/1/rules/simple-patchsys.mk [debian/rules:4]
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules
new file mode 100755
index 0000000..512e7e1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+
+ include debian/rules.mk
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules.mk b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules.mk
new file mode 100644
index 0000000..4e68614
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/debian/rules.mk
@@ -0,0 +1,2 @@
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/fill-values
new file mode 100644
index 0000000..9d39a99
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-missing-targets-with-includes
+Description: Test a debian/rules with targets included from another file
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/desc b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/desc
new file mode 100644
index 0000000..81a5355
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-missing-targets-with-includes
+Test-Against: debian-rules-missing-required-target
+See-Also: Debian Bug#607281
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/hints b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-includes/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/debian/rules
new file mode 100755
index 0000000..e92755b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+# This should trigger a missing $type targets, since
+# we know the makefile does not implement them.
+include /usr/share/javahelper/java-vars.mk
+
+clean build binary:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/fill-values
new file mode 100644
index 0000000..36d2a17
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: rules-missing-targets-with-known-includes
+Description: Test for debian/rules with known included file
+Extra-Build-Depends: javahelper
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/desc b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/desc
new file mode 100644
index 0000000..34b9af5
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-missing-targets-with-known-includes
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/hints b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/hints
new file mode 100644
index 0000000..a8a5c95
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets-with-known-includes/eval/hints
@@ -0,0 +1,4 @@
+rules-missing-targets-with-known-includes (source): debian-rules-missing-required-target build-indep [debian/rules]
+rules-missing-targets-with-known-includes (source): debian-rules-missing-required-target build-arch [debian/rules]
+rules-missing-targets-with-known-includes (source): debian-rules-missing-required-target binary-indep [debian/rules]
+rules-missing-targets-with-known-includes (source): debian-rules-missing-required-target binary-arch [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/control.in b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/control.in
new file mode 100644
index 0000000..8aa2a58
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: any
+Depends: ${misc:Depends}, [% $source %]-data
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-data
+Architecture: all
+Depends: ${misc:Depends},
+Description: [% $description %] - data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Data package.
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules
new file mode 100644
index 0000000..3e3c60f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+# Missing build-arch/build-indep :)
+build clean binary binary-arch binary-indep:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/fill-values
new file mode 100644
index 0000000..e98756d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: rules-missing-targets
+Version: 1.0+dfsg-1
+Skeleton: upload-non-native
+Description: Test for missing targets in debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets/eval/desc b/t/recipes/checks/debian/rules/rules-missing-targets/eval/desc
new file mode 100644
index 0000000..c0f6a2e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-missing-targets
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets/eval/hints b/t/recipes/checks/debian/rules/rules-missing-targets/eval/hints
new file mode 100644
index 0000000..5c57705
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-missing-targets/eval/hints
@@ -0,0 +1,2 @@
+rules-missing-targets (source): debian-rules-missing-required-target build-indep [debian/rules]
+rules-missing-targets (source): debian-rules-missing-required-target build-arch [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-not-makefile/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-not-makefile/build-spec/debian/rules
new file mode 100755
index 0000000..97e5f8d
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-not-makefile/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/bin/sh
+# This should be a makefile.
+exec dh "$@"
+
+# fake targets to trick lintian into believing the
+# required targets are present (removed unrelated errors).
+binary:
+binary-arch:
+binary-indep:
+build:
+build-arch:
+build-indep:
+clean:
diff --git a/t/recipes/checks/debian/rules/rules-not-makefile/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-not-makefile/build-spec/fill-values
new file mode 100644
index 0000000..33a94d1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-not-makefile/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-not-makefile
+Description: Check if the rules file is a makefile
diff --git a/t/recipes/checks/debian/rules/rules-not-makefile/eval/desc b/t/recipes/checks/debian/rules/rules-not-makefile/eval/desc
new file mode 100644
index 0000000..8f22a2e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-not-makefile/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-not-makefile
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-not-makefile/eval/hints b/t/recipes/checks/debian/rules/rules-not-makefile/eval/hints
new file mode 100644
index 0000000..492bf1f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-not-makefile/eval/hints
@@ -0,0 +1 @@
+rules-not-makefile (source): debian-rules-not-a-makefile [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/debian/rules
new file mode 100755
index 0000000..c4d25dc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_clean:
+ true
+ dh_clean # This rule is a false positive
+
+override_dh_fixperms:
+ true
+ $(overridden_command) # This rule is a false positive
+
+override_dh_fixperms-indep:
+ dh_fixperms
+
+override_dh_fixperms-arch:
+ dh_fixperms
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/fill-values
new file mode 100644
index 0000000..64e6684
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-override-dh-foo-does-not-call-dh-foo-unrel
+Description: Test for missing calls to dh_foo in override_dh_foo (false positives)
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/desc b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/desc
new file mode 100644
index 0000000..5518f3b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/desc
@@ -0,0 +1,5 @@
+Testname: rules-override-dh-foo-does-not-call-dh-foo-unrel
+Test-Against:
+ override_dh_clean-does-not-call-dh_clean
+ override_dh_fixperms-does-not-call-dh_fixperms
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/hints b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo-unrel/eval/hints
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/debian/rules
new file mode 100755
index 0000000..9270348
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+# Empty targets
+override_dh_clean:
+override_dh_fixperms:
+override_dh_fixperms-indep:
+override_dh_fixperms-arch:
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/fill-values
new file mode 100644
index 0000000..d652d91
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-override-dh-foo-does-not-call-dh-foo
+Description: Test for missing calls to dh_foo in override_dh_foo
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/desc b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/desc
new file mode 100644
index 0000000..92a9b16
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-override-dh-foo-does-not-call-dh-foo
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/hints b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/hints
new file mode 100644
index 0000000..171356a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-override-dh-foo-does-not-call-dh-foo/eval/hints
@@ -0,0 +1,4 @@
+rules-override-dh-foo-does-not-call-dh-foo (source): override_dh_fixperms-does-not-call-dh_fixperms [debian/rules:9]
+rules-override-dh-foo-does-not-call-dh-foo (source): override_dh_fixperms-does-not-call-dh_fixperms [debian/rules:8]
+rules-override-dh-foo-does-not-call-dh-foo (source): override_dh_fixperms-does-not-call-dh_fixperms [debian/rules:10]
+rules-override-dh-foo-does-not-call-dh-foo (source): override_dh_clean-does-not-call-dh_clean [debian/rules:7]
diff --git a/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules
new file mode 100644
index 0000000..9ea710e
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+DATE = $(shell dpkg-parsechangelog -SDate)
+SOURCE = $(shell dpkg-parsechangelog -SSource)
+SOURCE2 = $(shell dpkg-parsechangelog | grep ^Source | cut -d" " -f2)
+VERSION = $(shell dpkg-parsechangelog -SVersion)
+VERSION2 = $(shell dpkg-parsechangelog | sed -ne 's,^Version: *\(.*\)$$,\1,p')
+TIMESTAMP = $(shell dpkg-parsechangelog -STimestamp)
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/fill-values
new file mode 100644
index 0000000..1f930fb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-parses-dpkg-parsechangelog
+Description: Test for debian/rules manually parsing dpkg-parsechangelog
diff --git a/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/desc b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/desc
new file mode 100644
index 0000000..33856af
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-parses-dpkg-parsechangelog
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/hints b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/hints
new file mode 100644
index 0000000..88e06d0
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/eval/hints
@@ -0,0 +1,6 @@
+rules-parses-dpkg-parsechangelog (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:8]
+rules-parses-dpkg-parsechangelog (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:7]
+rules-parses-dpkg-parsechangelog (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:6]
+rules-parses-dpkg-parsechangelog (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:5]
+rules-parses-dpkg-parsechangelog (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:4]
+rules-parses-dpkg-parsechangelog (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/debian/rules
new file mode 100755
index 0000000..eef8ddc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/debian/rules
@@ -0,0 +1,6 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS = sanitize=+all
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/fill-values
new file mode 100644
index 0000000..1fac498
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-sanitize-all-buildflag
+Description: Test for sanitize=+all
diff --git a/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/desc b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/desc
new file mode 100644
index 0000000..606ce75
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-sanitize-all-buildflag
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/hints b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/hints
new file mode 100644
index 0000000..8602693
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sanitize-all-buildflag/eval/hints
@@ -0,0 +1 @@
+rules-sanitize-all-buildflag (source): debian-rules-should-not-use-sanitize-all-buildflag [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/debian/rules
new file mode 100755
index 0000000..77454fa
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+export DEB_HOST_ARCH = invalid
+export DEB_BUILD_ARCH := invalid
+export DEB_TARGET_ARCH ?= false-positive
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/fill-values
new file mode 100644
index 0000000..7d7bc0a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-sets-dpkg-architecture-variable
+Description: Test for unnecessary dpkg-architecture assignments
diff --git a/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/desc b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/desc
new file mode 100644
index 0000000..bc0cb7a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-sets-dpkg-architecture-variable
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/hints b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/hints
new file mode 100644
index 0000000..e636d4b
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-sets-dpkg-architecture-variable/eval/hints
@@ -0,0 +1,2 @@
+rules-sets-dpkg-architecture-variable (source): debian-rules-sets-dpkg-architecture-variable DEB_HOST_ARCH [debian/rules:3]
+rules-sets-dpkg-architecture-variable (source): debian-rules-sets-dpkg-architecture-variable DEB_BUILD_ARCH [debian/rules:4]
diff --git a/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/debian/rules
new file mode 100755
index 0000000..fbbdc99
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb -- -Zxz -z 9
+ dh_builddeb -- -z9 -Z xz
+ dh_builddeb -- -z8 -Z xz
+ dh_builddeb -- -z9 -Zgzip
+ dh_builddeb -- -Zxz -Sextreme -z9
+ dh_builddeb -- -Zxz -z9 -Sextreme
diff --git a/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/fill-values
new file mode 100644
index 0000000..683fab9
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-should-not-use-custom-compression-settings
+Description: Test for over-eager tarball compression etc.
diff --git a/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/desc b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/desc
new file mode 100644
index 0000000..8f09d8f
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-should-not-use-custom-compression-settings
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/hints b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/hints
new file mode 100644
index 0000000..09e88f1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-should-not-use-custom-compression-settings/eval/hints
@@ -0,0 +1,6 @@
+rules-should-not-use-custom-compression-settings (source): custom-compression-in-debian-rules dh_builddeb -- -z9 -Zgzip [debian/rules:10]
+rules-should-not-use-custom-compression-settings (source): custom-compression-in-debian-rules dh_builddeb -- -z9 -Z xz [debian/rules:8]
+rules-should-not-use-custom-compression-settings (source): custom-compression-in-debian-rules dh_builddeb -- -z8 -Z xz [debian/rules:9]
+rules-should-not-use-custom-compression-settings (source): custom-compression-in-debian-rules dh_builddeb -- -Zxz -z9 -Sextreme [debian/rules:12]
+rules-should-not-use-custom-compression-settings (source): custom-compression-in-debian-rules dh_builddeb -- -Zxz -Sextreme -z9 [debian/rules:11]
+rules-should-not-use-custom-compression-settings (source): custom-compression-in-debian-rules dh_builddeb -- -Zxz -z 9 [debian/rules:7]
diff --git a/t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules
new file mode 100644
index 0000000..fe1e7a6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+DEB_CFLAGS_APPEND:= -Wl,--as-needed
+
+%:
+ dh $@
+
diff --git a/t/recipes/checks/debian/rules/rules-special-variables/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-special-variables/build-spec/fill-values
new file mode 100644
index 0000000..6ca7a03
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-special-variables/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-special-variables
+Description: Test for debian/rules using special variables
diff --git a/t/recipes/checks/debian/rules/rules-special-variables/eval/desc b/t/recipes/checks/debian/rules/rules-special-variables/eval/desc
new file mode 100644
index 0000000..3fc89d6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-special-variables/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-special-variables
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-special-variables/eval/hints b/t/recipes/checks/debian/rules/rules-special-variables/eval/hints
new file mode 100644
index 0000000..198af25
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-special-variables/eval/hints
@@ -0,0 +1,2 @@
+rules-special-variables (source): debian-rules-uses-wrong-environment-variable [debian/rules:3]
+rules-special-variables (source): debian-rules-uses-as-needed-linker-flag [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real b/t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real
new file mode 100644
index 0000000..2d33f6a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-symlink/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-symlink/build-spec/fill-values
new file mode 100644
index 0000000..e68b709
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-symlink
+Description: Test for debian/rules being a symlink
diff --git a/t/recipes/checks/debian/rules/rules-symlink/build-spec/pre-build b/t/recipes/checks/debian/rules/rules-symlink/build-spec/pre-build
new file mode 100755
index 0000000..c887d2c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-symlink/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Create d/rules as a symlink.
+
+ROOT_DIR="$1"
+
+ln -fs rules.real "${ROOT_DIR}/debian/rules"
diff --git a/t/recipes/checks/debian/rules/rules-symlink/eval/desc b/t/recipes/checks/debian/rules/rules-symlink/eval/desc
new file mode 100644
index 0000000..858059c
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-symlink
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-symlink/eval/hints b/t/recipes/checks/debian/rules/rules-symlink/eval/hints
new file mode 100644
index 0000000..02f26f1
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-symlink/eval/hints
@@ -0,0 +1 @@
+rules-symlink (source): debian-rules-is-symlink [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/debian/rules
new file mode 100755
index 0000000..6749484
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+get-orig-source:
+ uscan --noconf --force-download --rename --download-current-version --destdir=..
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/fill-values
new file mode 100644
index 0000000..898d615
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-unnecessary-get-orig-source
+Description: Test for unnecessary get-orig-source targets
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/desc b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/desc
new file mode 100644
index 0000000..067529a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-unnecessary-get-orig-source
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/hints b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/hints
new file mode 100644
index 0000000..accab16
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-get-orig-source/eval/hints
@@ -0,0 +1 @@
+rules-unnecessary-get-orig-source (source): debian-rules-contains-unnecessary-get-orig-source-target [debian/rules]
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/control.in b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..dea8a56
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dpkg-dev (>= 1.18.8), debhelper (>= 10.10)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${misc:Depends}
+Description: Test package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/rules
new file mode 100755
index 0000000..ec2dec6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s)
+
+export SOURCE_DATE_EPOCH = $(shell date +%s)
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/fill-values
new file mode 100644
index 0000000..76255aa
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-unnecessary-source-date-epoch-unrel
+Description: Test for unnecessary SOURCE_DATE_EPOCH assignments (false positive)
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/desc b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/desc
new file mode 100644
index 0000000..ae35f68
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-unnecessary-source-date-epoch-unrel
+Test-Against:
+ unnecessary-source-date-epoch-assignment
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/hints b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/hints
new file mode 100644
index 0000000..eb59578
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch-unrel/eval/hints
@@ -0,0 +1 @@
+rules-unnecessary-source-date-epoch-unrel (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/compat.in b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/control.in b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/control.in
new file mode 100644
index 0000000..163f8bc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: dpkg-dev (>= 1.18.7), debhelper (>= 10.9)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: Test package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/rules
new file mode 100755
index 0000000..ec2dec6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s)
+
+export SOURCE_DATE_EPOCH = $(shell date +%s)
+
+%:
+ dh $@
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/fill-values
new file mode 100644
index 0000000..b8dc1b6
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: rules-unnecessary-source-date-epoch
+Dh-Compat-Level: 10
+Description: Test for unnecessary SOURCE_DATE_EPOCH assignments
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/desc b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/desc
new file mode 100644
index 0000000..d1cf5d7
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-unnecessary-source-date-epoch
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/hints b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/hints
new file mode 100644
index 0000000..4c1864a
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-unnecessary-source-date-epoch/eval/hints
@@ -0,0 +1,3 @@
+rules-unnecessary-source-date-epoch (source): unnecessary-source-date-epoch-assignment [debian/rules:5]
+rules-unnecessary-source-date-epoch (source): unnecessary-source-date-epoch-assignment [debian/rules:3]
+rules-unnecessary-source-date-epoch (source): debian-rules-parses-dpkg-parsechangelog [debian/rules:3]
diff --git a/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules
new file mode 100644
index 0000000..bdb1c68
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+ TARGETS := build clean binary binary-arch binary-indep build-arch build-indep
+
+$(TARGETS):
+ dh $@
+
+.PHONY: $(TARGETS)
+
diff --git a/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/fill-values b/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/fill-values
new file mode 100644
index 0000000..45c7abb
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-variable-targets
+Description: Test against missing targets in debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-variable-targets/eval/desc b/t/recipes/checks/debian/rules/rules-variable-targets/eval/desc
new file mode 100644
index 0000000..00b2ccc
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-variable-targets/eval/desc
@@ -0,0 +1,3 @@
+Testname: rules-variable-targets
+Test-Against: debian-rules-missing-recommended-target
+Check: debian/rules
diff --git a/t/recipes/checks/debian/rules/rules-variable-targets/eval/hints b/t/recipes/checks/debian/rules/rules-variable-targets/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/rules/rules-variable-targets/eval/hints
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/control.in
new file mode 100644
index 0000000..1109beb
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/control.in
@@ -0,0 +1,48 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: mylibany
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+
+Package: libany6gcc1v6
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] with gcc 6 version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ It test if v6 string are correctly escaped
+
+Package: libany5gcc1v5
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] with gcc 5 version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ It test if v5 string are correctly escaped
+
+Package: libanyq16-6
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] with Q16 version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ It test if string are correctly escaped like for imagemagick.
+ .
+ library name is not libanyQ166 \ No newline at end of file
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install
new file mode 100644
index 0000000..283bc61
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install
@@ -0,0 +1 @@
+/usr/lib/libany5gcc.* \ No newline at end of file
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols
new file mode 100644
index 0000000..a394502
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols
@@ -0,0 +1,2 @@
+libany5gcc.so.1 libany5gcc1v5 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install
new file mode 100644
index 0000000..9485e87
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install
@@ -0,0 +1 @@
+/usr/lib/libany6gcc.* \ No newline at end of file
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols
new file mode 100644
index 0000000..aee5f00
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols
@@ -0,0 +1,2 @@
+libany6gcc.so.1v6 libany6gcc1v6 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install
new file mode 100644
index 0000000..b4ecaea
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install
@@ -0,0 +1 @@
+/usr/lib/libanyQ16* \ No newline at end of file
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols
new file mode 100644
index 0000000..0f32f79
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols
@@ -0,0 +1,2 @@
+libanyQ16.so.1v6 libanyQ16-6 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install
new file mode 100644
index 0000000..5c86ce1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install
@@ -0,0 +1 @@
+/usr/lib/libany.* \ No newline at end of file
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols
new file mode 100644
index 0000000..9b6f454
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols
@@ -0,0 +1,2 @@
+libany.so.1 mylibany #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/fill-values b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/fill-values
new file mode 100644
index 0000000..523eb0b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-doesnt-match-sonames
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for library package that does not match SONAME
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/Makefile
new file mode 100644
index 0000000..21a67b5
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+MYCFLAGS=-Wall -Winline -O2 -fPIC
+CFLAGS:=$(MYCFLAGS) $(CPPFLAGS) $(CFLAGS)
+
+SONAMES:= libany.so.1 libany6gcc.so.1v6 libany5gcc.so.1 libanyQ16.so.6
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/code.c
new file mode 100644
index 0000000..0c4f917
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/build-spec/orig/code.c
@@ -0,0 +1,9 @@
+#include <string.h>
+#include <stdio.h>
+
+void e(char *p, int i, void (*f)(char *)){
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/desc b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/desc
new file mode 100644
index 0000000..02d87f3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-doesnt-match-sonames
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/hints b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/hints
new file mode 100644
index 0000000..6cf925b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-doesnt-match-sonames/eval/hints
@@ -0,0 +1,4 @@
+mylibany (binary): symbols-file-missing-build-depends-package-field libany.so.1 [symbols]
+libanyq16-6 (binary): symbols-file-missing-build-depends-package-field libanyQ16.so.6 [symbols]
+libany6gcc1v6 (binary): symbols-file-missing-build-depends-package-field libany6gcc.so.1v6 [symbols]
+libany5gcc1v5 (binary): symbols-file-missing-build-depends-package-field libany5gcc.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/control.in
new file mode 100644
index 0000000..d8adb1b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: libbasic2
+Section: libs
+Architecture: [% $package_architecture %]
+Depends: some-pkg, ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..0119bca
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,4 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
+libbasic++.so.2 libbasic2 #MINVER#
+ (c++)cxx_lib_interface@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/rules
new file mode 100644
index 0000000..188f490
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/debian/rules
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+# Make sure the C++ library actually links to libc
+export DEB_LDFLAGS_MAINT_APPEND=-Wl,--no-as-needed
+
+%:
+ dh $@
+
+override_dh_gencontrol:
+ # Remove the shlib:Depends since it will contain libc
+ sed -i '/shlib:Depends=/ d' debian/libbasic2.substvars
+ echo "shlib:depends=" >> debian/libbasic2.substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/fill-values b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/fill-values
new file mode 100644
index 0000000..0f58398
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends-on-libc
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing libc depends
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/Makefile
new file mode 100644
index 0000000..fcf25f4
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/Makefile
@@ -0,0 +1,14 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+ g++ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs \
+ -Wl,-soname,libbasic++.so.2 -olibbasic++.so.2 cpp.cxx
+
+install:
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+ install -m 644 -c -s libbasic++.so.2 $(DESTDIR)/usr/lib/libbasic++.so.2
+
+clean distclean:
+ rm -f libbasic.so.2 libbasic++.so.2
+
+check test:
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/basic.c b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx
new file mode 100644
index 0000000..1338e40
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/build-spec/orig/cpp.cxx
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <vector>
+
+using namespace std;
+
+template <class T> T
+cxx_lib_interface(vector<T> &v)
+{
+ cout << ":-) hello world" << endl;
+ return v[0];
+}
+
+
+
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/desc b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/desc
new file mode 100644
index 0000000..368818c
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends-on-libc
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/hints b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/hints
new file mode 100644
index 0000000..7290044
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends-on-libc/eval/hints
@@ -0,0 +1,2 @@
+libbasic2 (binary): symbols-file-missing-build-depends-package-field libbasic.so.2 [symbols]
+libbasic2 (binary): symbols-file-missing-build-depends-package-field libbasic++.so.2 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..3b37179
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Section: libs
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/libbasic2.symbols b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c2b8fb3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,2 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/rules
new file mode 100644
index 0000000..8a83255
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ sed -i '/Depends:/ d' debian/libbasic2/DEBIAN/control
+ dh_builddeb
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/fill-values b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/fill-values
new file mode 100644
index 0000000..b1caef8
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-missing-depends
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing depends line
+Package-Architecture: any
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/Makefile
new file mode 100644
index 0000000..6fc3968
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/basic.c b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/desc b/t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/desc
new file mode 100644
index 0000000..e3ef2c0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-missing-depends
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/hints b/t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/hints
new file mode 100644
index 0000000..d4e8830
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-missing-depends/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): symbols-file-missing-build-depends-package-field libbasic.so.2 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/control.in
new file mode 100644
index 0000000..2efaa33
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/control.in
@@ -0,0 +1,25 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}, multiarch-support
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Multi-Arch: same
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Note there is an explicitly pre-depends on multiarch-support, since
+ older versions of debhelper might not use it yet. dpkg-dev will
+ remove the duplicate entry (if any).
+
+
+
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/libbasic2.symbols b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c2b8fb3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,2 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/fill-values b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/fill-values
new file mode 100644
index 0000000..c508b75
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-multiarch-same
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test of multiarch same package with unsafe binaries
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/Makefile
new file mode 100644
index 0000000..ad7783b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ install -d $(DESTDIR)/usr/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/basic.c b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/desc b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/desc
new file mode 100644
index 0000000..cd079c8
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-multiarch-same
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/hints b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/hints
new file mode 100644
index 0000000..d4e8830
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch-same/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): symbols-file-missing-build-depends-package-field libbasic.so.2 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/control.in
new file mode 100644
index 0000000..aa271ff
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/control.in
@@ -0,0 +1,21 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}, multiarch-support
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Note there is an explicitly pre-depends on multiarch-support, since
+ older versions of debhelper might not use it yet. dpkg-dev will
+ remove the duplicate entry (if any).
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/libbasic2.symbols b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c2b8fb3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,2 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/rules
new file mode 100644
index 0000000..249fe25
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+
+# Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use
+# dpkg-architecture -qDEB_HOST_MULTIARCH
+# Therefore this test is hardcoded to x86 and amd64
+
+ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq (i386,$(ARCH))
+ TRIPLET = i386-linux-gnu
+else
+ TRIPLET = x86_64-linux-gnu
+endif
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_makeshlibs:
+ # dpkg-dev uses ld.so.conf so if we do not pass the lib directly
+ # this will fail on all x86 machines without with libc6 < 2.13-5
+ dh_makeshlibs -- -edebian/libbasic2/usr/lib/$(TRIPLET)/libbasic.so.2
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/fill-values b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/fill-values
new file mode 100644
index 0000000..a521479
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-multiarch
+Description: Test of a correct multiarch package
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/Makefile
new file mode 100644
index 0000000..979e366
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/Makefile
@@ -0,0 +1,26 @@
+
+# Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use
+# dpkg-architecture -qDEB_HOST_MULTIARCH
+# Therefore this test is hardcoded to x86 and amd64
+
+ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq (i386,$(ARCH))
+ TRIPLET = i386-linux-gnu
+else
+ TRIPLET = x86_64-linux-gnu
+endif
+
+
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/usr/lib/$(TRIPLET)
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/$(TRIPLET)/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/basic.c b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/desc b/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/desc
new file mode 100644
index 0000000..d50c6ad
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/desc
@@ -0,0 +1,3 @@
+Testname: binaries-multiarch
+Test-Architectures: i386 amd64
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/hints b/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/hints
new file mode 100644
index 0000000..d4e8830
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): symbols-file-missing-build-depends-package-field libbasic.so.2 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/post-test b/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/post-test
new file mode 100644
index 0000000..fdc0a20
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/binaries-multiarch/eval/post-test
@@ -0,0 +1,2 @@
+s/i386-linux-gnu/x86_64-linux-gnu/
+s/is for i386/is for amd64/
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/control.in
new file mode 100644
index 0000000..addc2fc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/control.in
@@ -0,0 +1,33 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libpublic1
+Section: libs
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Multi-Arch: same
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libpublic-dev
+Section: libdevel
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Multi-Arch: foreign
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Supposedly includes some headers.
+
+
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install
new file mode 100644
index 0000000..012244d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install
@@ -0,0 +1 @@
+usr/lib/*/*.so
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.install b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.install
new file mode 100644
index 0000000..3de3b10
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.install
@@ -0,0 +1 @@
+usr/lib/*/*.so.*
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols
new file mode 100644
index 0000000..d8226ca
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols
@@ -0,0 +1,3 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/fill-values b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/fill-values
new file mode 100644
index 0000000..2b7d50c
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: files-wrong-ma-foreign
+Description: Test for wrong usage of Multi-Arch foreign
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/Makefile
new file mode 100644
index 0000000..ff58c3a
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/Makefile
@@ -0,0 +1,24 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libpublic.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+LIBDIR := /usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)$(LIBDIR)
+ install -m 0644 *.so* $(DESTDIR)$(LIBDIR)
+ set -e ; for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)$(LIBDIR)/$$FILE ; \
+ ln -s $${FILE}.0.1 $(DESTDIR)$(LIBDIR)/$$(echo $$FILE | perl -pe 's/\.so\K.*//') ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/desc b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/desc
new file mode 100644
index 0000000..527b859
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-wrong-ma-foreign
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/hints b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/hints
new file mode 100644
index 0000000..a157d77
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/files-wrong-ma-foreign/eval/hints
@@ -0,0 +1 @@
+libpublic1 (binary): symbols-file-missing-build-depends-package-field libpublic.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/control b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/fill-values b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..79eebf1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/eval/desc b/t/recipes/checks/debian/shlibs/legacy-debug/eval/desc
new file mode 100644
index 0000000..48b87f4
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/eval/desc
@@ -0,0 +1,3 @@
+Testname: legacy-debug
+Check: debian/shlibs
+Test-Against: symbols-file-missing-build-depends-package-field
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/eval/hints b/t/recipes/checks/debian/shlibs/legacy-debug/eval/hints
new file mode 100644
index 0000000..d9fdaff
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/eval/hints
@@ -0,0 +1,48 @@
+libhello0 (binary): unknown-meta-field-in-symbols-file Build-Dep-Foo (libhello.so.0) [symbols:11]
+libhello0 (binary): syntax-error-in-symbols-file [symbols:4]
+libhello0 (binary): syntax-error-in-symbols-file [symbols:3]
+libhello0 (binary): syntax-error-in-symbols-file [symbols:1]
+libhello0 (binary): syntax-error-in-symbols-file [symbols:19]
+libhello0 (binary): syntax-error-in-symbols-file [symbols:15]
+libhello0 (binary): syntax-error-in-symbols-file [symbols:11]
+libhello0 (binary): symbols-for-undeclared-shared-library libhello 2
+libhello0 (binary): symbols-file-missing-build-depends-package-field libhello.so.0 [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package libhelloc0c3 (libhello.so.0) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package libhelloc0c2 (<< 1.3) (libhello.so.0) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package libhello2 (libhello.so.2) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package libhello2 (>= 1:2.3) (libhello.so.2) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package libhello0c2 (>= 1.2) (libhello.so.0) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package hello-dbg3 (libhello.so.0) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package hello-dbg2 (libhello.so.0) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package hello-dbg (libhello.so.0) [symbols]
+libhello0 (binary): symbols-declares-dependency-on-other-package foobar (= 1.2) (libhello.so.0) [symbols]
+libhello0 (binary): surplus-shared-library-symbols libhello 2 [symbols]
+libhello0 (binary): invalid-template-id-in-symbols-file should this [symbols:4]
+libhello0 (binary): invalid-template-id-in-symbols-file A [symbols:14]
+libhello0 (binary): invalid-template-id-in-symbols-file 4 [symbols:12]
+libhello0 (binary): duplicate-entry-in-symbols-control-file (lines 6 22) libhello 0 [symbols]
+hello (binary): unknown-meta-field-in-symbols-file Build-Dep-Foo (libhello.so.0) [symbols:11]
+hello (binary): syntax-error-in-symbols-file [symbols:4]
+hello (binary): syntax-error-in-symbols-file [symbols:3]
+hello (binary): syntax-error-in-symbols-file [symbols:1]
+hello (binary): syntax-error-in-symbols-file [symbols:19]
+hello (binary): syntax-error-in-symbols-file [symbols:15]
+hello (binary): syntax-error-in-symbols-file [symbols:11]
+hello (binary): symbols-file-missing-build-depends-package-field libhello.so.0 [symbols]
+hello (binary): symbols-declares-dependency-on-other-package libhelloc0c3 (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package libhelloc0c2 (<< 1.3) (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package libhello2 (libhello.so.2) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package libhello2 (>= 1:2.3) (libhello.so.2) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package libhello0c2 (>= 1.2) (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package libhello0 (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package hello-dbg3 (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package hello-dbg2 (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package hello-dbg (libhello.so.0) [symbols]
+hello (binary): symbols-declares-dependency-on-other-package foobar (= 1.2) (libhello.so.0) [symbols]
+hello (binary): surplus-shared-library-symbols libhello 2 [symbols]
+hello (binary): surplus-shared-library-symbols libhello 0 [symbols]
+hello (binary): invalid-template-id-in-symbols-file should this [symbols:4]
+hello (binary): invalid-template-id-in-symbols-file A [symbols:14]
+hello (binary): invalid-template-id-in-symbols-file 4 [symbols:12]
+hello (binary): empty-shared-library-symbols [symbols]
+hello (binary): duplicate-entry-in-symbols-control-file (lines 6 22) libhello 0 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/legacy-debug/eval/post-test b/t/recipes/checks/debian/shlibs/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/desc b/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..ad73840
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/hints b/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..8e668dc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/hints
@@ -0,0 +1,20 @@
+libbaz2 (binary): no-symbols-control-file usr/lib/libbaz2.so.1.0.3b
+libbaz1 (binary): symbols-for-undeclared-shared-library libbaz 2
+libbaz1 (binary): symbols-file-missing-build-depends-package-field libbaz.so.2 [symbols]
+libbaz1 (binary): symbols-file-contains-debian-revision on symbol foo (libbaz.so.2) [symbols]
+libbaz1 (binary): symbols-file-contains-current-version-with-debian-revision on symbol pw (libbaz.so.2) [symbols]
+libbaz1 (binary): surplus-shared-library-symbols libbaz 2 [symbols]
+libbaz1 (binary): ships-undeclared-shared-library libbaz2 1.0 for usr/lib/libfoo2.so.1.0.3b [shlibs]
+libbaz1 (binary): shared-library-symbols-not-tracked libbaz3 1 for usr/lib/libbaz3.so.1.0.3b [symbols]
+libbaz1 (binary): shared-library-symbols-not-tracked libbaz2 1.0 for usr/lib/libfoo2.so.1.0.3b [symbols]
+libbaz1 (binary): shared-library-symbols-not-tracked libbaz.so for usr/lib/libbaz.so [symbols]
+libbaz1 (binary): shared-library-not-shipped udeb: libdoesntexist2 1.0 [shlibs]
+libbaz1 (binary): shared-library-not-shipped libdoesntexist2 1.0 [shlibs]
+libbaz1 (binary): shared-library-not-shipped libbaz5 1 [shlibs]
+libbaz1 (binary): shared-library-not-shipped libbaz4 1 [shlibs]
+libbaz1 (binary): shared-library-not-shipped libbaz2 1.1 [shlibs]
+libbaz1 (binary): shared-library-lacks-version usr/lib/libbaz.so libbaz.so
+libbaz1 (binary): duplicate-in-shlibs (lines 7 8) udeb: libdoesntexist2 1.0 [shlibs]
+libbaz1 (binary): duplicate-in-shlibs (lines 1 2) libdoesntexist2 1.0 [shlibs]
+libbaz1 (binary): distant-prerequisite-in-shlibs libbaz2 [shlibs]
+libbaz1 (binary): distant-prerequisite-in-shlibs libbaz1 (>> 1-1) [shlibs]
diff --git a/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/post-test b/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/control.in
new file mode 100644
index 0000000..a223c7e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/control.in
@@ -0,0 +1,57 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libnoshf1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (no shlibs file)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for missing shlibs file.
+
+Package: libeshf1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (empty shlibs file)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for empty shlibs file.
+
+Package: libunshf1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (unused entry)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for unused entry in shlibs file.
+
+Package: libfdshf1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (foreign dep)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for foreign dependency entry in shlibs file.
+
+Package: libdupshf1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dup entry)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for duplicate entry in shlibs file.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.install b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.install
new file mode 100644
index 0000000..7452fe1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.install
@@ -0,0 +1 @@
+usr/lib/libdupshf*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.symbols
new file mode 100644
index 0000000..166a346
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libdupshf1.symbols
@@ -0,0 +1,3 @@
+libdupshf.so.1 libdupshf1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.install b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.install
new file mode 100644
index 0000000..5ef4c2d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.install
@@ -0,0 +1 @@
+usr/lib/libeshf*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.symbols
new file mode 100644
index 0000000..fdd0204
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libeshf1.symbols
@@ -0,0 +1,3 @@
+libeshf.so.1 libeshf1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.install b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.install
new file mode 100644
index 0000000..c01a368
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.install
@@ -0,0 +1 @@
+usr/lib/libfdshf*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.symbols
new file mode 100644
index 0000000..4a18831
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libfdshf1.symbols
@@ -0,0 +1,3 @@
+libfdshf.so.1 libfdshf1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.install b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.install
new file mode 100644
index 0000000..175a915
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.install
@@ -0,0 +1 @@
+usr/lib/libnoshf*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.symbols
new file mode 100644
index 0000000..fef945e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libnoshf1.symbols
@@ -0,0 +1,3 @@
+libnoshf.so.1 libnoshf1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.install b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.install
new file mode 100644
index 0000000..dcdae56
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.install
@@ -0,0 +1 @@
+usr/lib/libunshf*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.symbols
new file mode 100644
index 0000000..737842d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/libunshf1.symbols
@@ -0,0 +1,3 @@
+libunshf.so.1 libunshf1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/rules
new file mode 100644
index 0000000..0cd4c15
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+
+DUPSHF:=debian/libdupshf1/DEBIAN/shlibs
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ # Work around "smart tools" that check the shlibs
+ # before installing them.
+ rm -f debian/libnoshf1/DEBIAN/shlibs
+ echo "# aloha" > debian/libeshf1/DEBIAN/shlibs
+ echo "libfoo 1 libunshf1 (> 0.1)" >> debian/libunshf1/DEBIAN/shlibs
+ sed -i 's/libfdshf1/libforeign1/' debian/libfdshf1/DEBIAN/shlibs
+ cat $(DUPSHF) $(DUPSHF) > $(DUPSHF).tmp
+ mv -f $(DUPSHF).tmp $(DUPSHF)
+ dh_builddeb
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/fill-values
new file mode 100644
index 0000000..9336eee
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: shared-libs-control-file
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to shlibs files
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/Makefile
new file mode 100644
index 0000000..37bef22
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libnoshf.so.1 libeshf.so.1 libunshf.so.1 libfdshf.so.1 \
+ libdupshf.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/desc
new file mode 100644
index 0000000..9ccf196
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-control-file
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/hints
new file mode 100644
index 0000000..87f69e6
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-control-file/eval/hints
@@ -0,0 +1,11 @@
+libunshf1 (binary): symbols-file-missing-build-depends-package-field libunshf.so.1 [symbols]
+libunshf1 (binary): shared-library-not-shipped libfoo 1 [shlibs]
+libunshf1 (binary): outdated-relation-in-shlibs libunshf1 (> 0.1) [shlibs]
+libnoshf1 (binary): symbols-file-missing-build-depends-package-field libnoshf.so.1 [symbols]
+libnoshf1 (binary): no-shlibs usr/lib/libnoshf.so.1.0.1
+libfdshf1 (binary): symbols-file-missing-build-depends-package-field libfdshf.so.1 [symbols]
+libfdshf1 (binary): distant-prerequisite-in-shlibs libforeign1 [shlibs]
+libeshf1 (binary): symbols-file-missing-build-depends-package-field libeshf.so.1 [symbols]
+libeshf1 (binary): ships-undeclared-shared-library libeshf 1 for usr/lib/libeshf.so.1.0.1 [shlibs]
+libdupshf1 (binary): symbols-file-missing-build-depends-package-field libdupshf.so.1 [symbols]
+libdupshf1 (binary): duplicate-in-shlibs (lines 1 2) libdupshf 1 [shlibs]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/control.in
new file mode 100644
index 0000000..9ca1147
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libfoo-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libfoo-1 (= ${binary:Version})
+Description: [% $description %] - dev
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Dev package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install
new file mode 100644
index 0000000..cb060ec
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install
@@ -0,0 +1,2 @@
+lib/libbar-1.so
+usr/lib/libfoo-1.so
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols
new file mode 100644
index 0000000..910a1e5
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols
@@ -0,0 +1,7 @@
+libfoo-1.so libfoo-1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
+
+libbar-1.so libfoo-1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install
new file mode 100644
index 0000000..ed7b146
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install
@@ -0,0 +1,3 @@
+usr/include
+usr/lib/libbar.so
+usr/lib/libfoo.so
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/fill-values
new file mode 100644
index 0000000..5240e59
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: shared-libs-dev-symlink-fp
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test against dev symlink fp
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/Makefile
new file mode 100644
index 0000000..decdff1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/Makefile
@@ -0,0 +1,27 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAME:= libfoo-1.so
+LSONAME:= libbar-1.so
+devsymlink=$(shell echo $(1) | perl -pe 's:-[\d\.]*\.so$$:\.so:')
+LIBFILES:=$(SONAME) $(LSONAME)
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$@ $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/lib
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 -d $(DESTDIR)/usr/include
+ install -m 0644 $(LSONAME) $(DESTDIR)/lib
+ install -m 0644 $(SONAME) $(DESTDIR)/usr/lib
+ ln -s /lib/$(LSONAME) $(DESTDIR)/usr/lib/$(call devsymlink,$(LSONAME))
+ ln -s $(SONAME) $(DESTDIR)/usr/lib/$(call devsymlink,$(SONAME))
+ install -m 0644 code.h $(DESTDIR)/usr/include
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.c
new file mode 100644
index 0000000..9a88735
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.c
@@ -0,0 +1,16 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.h b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/desc
new file mode 100644
index 0000000..c26091f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-dev-symlink-fp
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/hints
new file mode 100644
index 0000000..09ab005
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink-fp/eval/hints
@@ -0,0 +1,2 @@
+libfoo-1 (binary): symbols-file-missing-build-depends-package-field libfoo-1.so [symbols]
+libfoo-1 (binary): symbols-file-missing-build-depends-package-field libbar-1.so [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..dfba657
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libfoo-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libfoo1 (= ${binary:Version})
+Description: [% $description %] - dev
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Dev package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install
new file mode 100644
index 0000000..e43b95c
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install
@@ -0,0 +1 @@
+usr/include
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.install b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..08fa063
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+usr/lib/libfoo.so.*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/fill-values
new file mode 100644
index 0000000..9c44aa5
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: shared-libs-dev-symlink
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to dev symlink
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..a7a50b9
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/Makefile
@@ -0,0 +1,24 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 -d $(DESTDIR)/usr/include
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+ install -m 0644 code.h $(DESTDIR)/usr/include
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..9a88735
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.c
@@ -0,0 +1,16 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.h b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/desc
new file mode 100644
index 0000000..451ac80
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-dev-symlink
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/hints
new file mode 100644
index 0000000..a7f8c30
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-dev-symlink/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): symbols-file-missing-build-depends-package-field libfoo.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..d8226ca
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,3 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/rules
new file mode 100644
index 0000000..9082f3f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_fixperms:
+ # Do nothing, TYIA
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/fill-values
new file mode 100644
index 0000000..0f19b1b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exec-bit
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs with exec bit
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/Makefile
new file mode 100644
index 0000000..0997289
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1 libbadperm.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *execbit*.so* $(DESTDIR)/usr/lib
+ install -m 0600 *badperm*.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/desc
new file mode 100644
index 0000000..efef29f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-exec-bit
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/hints
new file mode 100644
index 0000000..b576dcd
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-bit/eval/hints
@@ -0,0 +1,2 @@
+libexecbit1 (binary): symbols-file-missing-build-depends-package-field libexecbit.so.1 [symbols]
+libexecbit1 (binary): symbols-file-missing-build-depends-package-field libbadperm.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/control.in
new file mode 100644
index 0000000..bd81464
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecstack1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols
new file mode 100644
index 0000000..1cc72ae
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols
@@ -0,0 +1,3 @@
+libexecstack.so.1 libexecstack1 #MINVER#
+ foo@Base 1.0
+ get@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/fill-values
new file mode 100644
index 0000000..7ca10e3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exec-stack
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs with exec stack
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/Makefile
new file mode 100644
index 0000000..1754891
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecstack.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): foo.o get.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/foo.c b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/foo.c
new file mode 100644
index 0000000..7f41799
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/foo.c
@@ -0,0 +1,9 @@
+extern int get(int, int (*)(int));
+
+int foo(int a) {
+ int b = a;
+ int bar(int a) {
+ return a + b;
+ }
+ return get(a, bar);
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/get.c b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/get.c
new file mode 100644
index 0000000..8207637
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/build-spec/orig/get.c
@@ -0,0 +1,6 @@
+int get(int a, int (*f)(int)) {
+ return f(a);
+}
+
+extern int foo(int);
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/desc
new file mode 100644
index 0000000..f2a5f21
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-exec-stack
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/hints
new file mode 100644
index 0000000..57bd1d2
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exec-stack/eval/hints
@@ -0,0 +1 @@
+libexecstack1 (binary): symbols-file-missing-build-depends-package-field libexecstack.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..0b26833
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,2 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/fill-values
new file mode 100644
index 0000000..8c30582
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exit-fork
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs invoking both exit(3) and fork(2)
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/Makefile
new file mode 100644
index 0000000..68d5863
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/code.c
new file mode 100644
index 0000000..df63394
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/build-spec/orig/code.c
@@ -0,0 +1,12 @@
+#include <stdlib.h>
+#include <unistd.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ if (fork() != 0)
+ exit(1);
+ return x;
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/desc
new file mode 100644
index 0000000..fc71c36
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-exit-fork
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/hints
new file mode 100644
index 0000000..6105735
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit-fork/eval/hints
@@ -0,0 +1 @@
+libexecbit1 (binary): symbols-file-missing-build-depends-package-field libexecbit.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..0b26833
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,2 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/fill-values
new file mode 100644
index 0000000..99c4585
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exit
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs invoking exit(3)
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/Makefile
new file mode 100644
index 0000000..68d5863
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/code.c
new file mode 100644
index 0000000..297a4e8
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ if (x < 0.0) {
+ exit(1);
+ } else {
+ return x;
+ }
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-exit/eval/desc
new file mode 100644
index 0000000..cc20e73
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-exit
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-exit/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-exit/eval/hints
new file mode 100644
index 0000000..6105735
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-exit/eval/hints
@@ -0,0 +1 @@
+libexecbit1 (binary): symbols-file-missing-build-depends-package-field libexecbit.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/fill-values
new file mode 100644
index 0000000..b000a7b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: shared-libs-ldconfig-not-symlink
+Package-Architecture: any
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test ldconfig symlink not being a symlink
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..2e3306e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile
@@ -0,0 +1,20 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ install -T -m 0644 *.so* $(DESTDIR)/usr/lib/libfoo.so.1
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/desc
new file mode 100644
index 0000000..56356db
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-not-symlink
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/hints
new file mode 100644
index 0000000..a7f8c30
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-not-symlink/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): symbols-file-missing-build-depends-package-field libfoo.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.install b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.install
new file mode 100644
index 0000000..fe6951d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.install
@@ -0,0 +1,2 @@
+app usr/lib/app
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm
new file mode 100755
index 0000000..eaeb28d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = remove ] ; then ldconfig ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers
new file mode 100644
index 0000000..dd86603
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..9960ee9
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/control.in
@@ -0,0 +1,47 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (missing ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for missing ldconfig in scripts.
+
+Package: libfish1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (preinst/rm ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for ldconfig in preinst/prerm scripts.
+
+Package: libuns1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (unsafe ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for unsafe ldconfig usage scripts.
+
+Package: app
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (useless ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for useless ldconfig usage in scripts.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install
new file mode 100644
index 0000000..b1c4ec9
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install
@@ -0,0 +1 @@
+usr/lib/libfish*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols
new file mode 100644
index 0000000..2c5a075
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols
@@ -0,0 +1,3 @@
+libfish.so.1 libfish1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..f3a3a05
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+usr/lib/libfoo*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst
new file mode 100755
index 0000000..2615bf9
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+# No ldconfig
+if false ; then true ; fi
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm
new file mode 100755
index 0000000..9b2f636
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+if false ; then true ; fi
+
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install
new file mode 100644
index 0000000..b91d5ff
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install
@@ -0,0 +1 @@
+usr/lib/libuns*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm
new file mode 100755
index 0000000..acc5d15
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols
new file mode 100644
index 0000000..d91149f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols
@@ -0,0 +1,3 @@
+libuns.so.1 libuns1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..b1c71a9
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/debian/rules
@@ -0,0 +1,21 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ for P in $$(dh_listpackages) ; do \
+ for S in postinst postrm preinst prerm ; do \
+ if [ -f debian/$${P}.$${S} ] ; then \
+ cp -af debian/$${P}.$${S} debian/$${P}/DEBIAN/$${S} ; \
+ chmod 0755 debian/$${P}/DEBIAN/$${S} ; \
+ sed -i '/#DEBHELPER#/ d' debian/$${P}/DEBIAN/$${S} ; \
+ fi ; \
+ done ; \
+ done
+ # Work around debhelper adding triggers instead of explicit
+ # ldconfig calls
+ rm -f debian/libfoo1/DEBIAN/triggers
+ dh_builddeb
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/fill-values
new file mode 100644
index 0000000..2159596
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: shared-libs-ldconfig-scripts
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to ldconfig in scripts
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/Makefile
new file mode 100644
index 0000000..4d3c286
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1 libfish.so.1 libuns.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lm
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/app b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/app
new file mode 100755
index 0000000..04f1961
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/app
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo Hello World
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/desc
new file mode 100644
index 0000000..a05f43e
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-scripts
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/hints
new file mode 100644
index 0000000..67c138b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-scripts/eval/hints
@@ -0,0 +1,3 @@
+libuns1 (binary): symbols-file-missing-build-depends-package-field libuns.so.1 [symbols]
+libfoo1 (binary): symbols-file-missing-build-depends-package-field libfoo.so.1 [symbols]
+libfish1 (binary): symbols-file-missing-build-depends-package-field libfish.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/fill-values
new file mode 100644
index 0000000..74b1f2a
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: shared-libs-ldconfig-wrong-file
+Package-Architecture: any
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test ldconfig symlink with wrong target
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile
new file mode 100644
index 0000000..373cbd2
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ echo "Strauss: Also Sprach Zarathustra" > \
+ $(DESTDIR)/usr/lib/some-other-file
+ ln -s some-other-file $(DESTDIR)/usr/lib/libfoo.so.1
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/desc
new file mode 100644
index 0000000..7cba095
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-wrong-file
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/hints
new file mode 100644
index 0000000..a7f8c30
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-ldconfig-wrong-file/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): symbols-file-missing-build-depends-package-field libfoo.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..0b26833
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,2 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/fill-values
new file mode 100644
index 0000000..50aa473
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-missing-ldconfig-symlink
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing ldconfig symlink for shared libs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..6de6868
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile
@@ -0,0 +1,19 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/desc
new file mode 100644
index 0000000..04a4305
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/desc
@@ -0,0 +1,3 @@
+Testname: shared-libs-missing-ldconfig-symlink
+Check: debian/shlibs
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/hints
new file mode 100644
index 0000000..6105735
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-missing-ldconfig-symlink/eval/hints
@@ -0,0 +1 @@
+libexecbit1 (binary): symbols-file-missing-build-depends-package-field libexecbit.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/control.in
new file mode 100644
index 0000000..29d4c58
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libhallo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols
new file mode 100644
index 0000000..4c27e3f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols
@@ -0,0 +1,2 @@
+libhallo.so.1 libhallo1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/fill-values
new file mode 100644
index 0000000..de5d6cc
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-multi-arch-foreign
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for shared libs in m-a foreign pkgs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/Makefile
new file mode 100644
index 0000000..ac55af7
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libhallo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -fPIC -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/desc
new file mode 100644
index 0000000..6dee0b4
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-multi-arch-foreign
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/hints
new file mode 100644
index 0000000..8a5512d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-multi-arch-foreign/eval/hints
@@ -0,0 +1 @@
+libhallo1 (binary): symbols-file-missing-build-depends-package-field libhallo.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/control.in
new file mode 100644
index 0000000..c749732
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libhallo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols
new file mode 100644
index 0000000..4c27e3f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols
@@ -0,0 +1,2 @@
+libhallo.so.1 libhallo1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/fill-values
new file mode 100644
index 0000000..c238ab1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-no-gnu-stack
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for shared libs without PT_GNU_STACK
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/Makefile
new file mode 100644
index 0000000..8d357a8
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libhallo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -fPIC -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+ ./erase-pt-gnu-stack $@
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack
new file mode 100755
index 0000000..d3b7e59
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack
@@ -0,0 +1,9 @@
+#!/usr/bin/perl -pi
+
+use strict;
+use warnings;
+
+my $PT_GNU_STACK = 0x6474e551;
+my $be = pack('L>', $PT_GNU_STACK);
+my $le = pack('L<', $PT_GNU_STACK);
+s/\Q$be\E|\Q$le\E/\0\0\0\0/g;
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/desc
new file mode 100644
index 0000000..cab1f1c
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-no-gnu-stack
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/hints
new file mode 100644
index 0000000..8a5512d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-gnu-stack/eval/hints
@@ -0,0 +1 @@
+libhallo1 (binary): symbols-file-missing-build-depends-package-field libhallo.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.install b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..1d2eaab
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+some-lib usr/lib
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.shlibs b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.shlibs
new file mode 100644
index 0000000..f233a64
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.shlibs
@@ -0,0 +1 @@
+libfoo 1 libfoo1 (>= 1.0)
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/fill-values
new file mode 100644
index 0000000..730c2cd
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: shared-libs-no-shared-lib
+Package-Architecture: any
+Description: Test checks shlib without SO
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/orig/some-lib b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/orig/some-lib
new file mode 100644
index 0000000..5707e12
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/build-spec/orig/some-lib
@@ -0,0 +1 @@
+Aloah world
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/desc
new file mode 100644
index 0000000..1b13462
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-no-shared-lib
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/hints
new file mode 100644
index 0000000..38aca0a
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-no-shared-lib/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): empty-shlibs [shlibs]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/fill-values
new file mode 100644
index 0000000..cec22d9
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: shared-libs-non-dev-symlink
+Package-Architecture: any
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to dev symlink
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..b62fa17
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/Makefile
@@ -0,0 +1,21 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ ln -s libfoo.so.1.0.1 $(DESTDIR)/usr/lib/libfoo.so.1
+ ln -s libfoo.so.1.0.1 $(DESTDIR)/usr/lib/libfoo.so
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/desc
new file mode 100644
index 0000000..905bf7f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-non-dev-symlink
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/hints
new file mode 100644
index 0000000..a7f8c30
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-dev-symlink/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): symbols-file-missing-build-depends-package-field libfoo.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/Makefile.in b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/Makefile.in
new file mode 100644
index 0000000..372897d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/Makefile.in
@@ -0,0 +1,110 @@
+# this makefile was adapted from the standard template to do just one thing:
+# to ensure that no building takes place on architectures other than i386.
+#
+# dpkg-buildpackage croaks not only on build errors but also if there simply
+# is nothing to do. source packages are nowadays permitted to create
+# undeclared build artifacts. there is no way to tell when a build should
+# or should not proceed (although the buildds use a heuristic based on the
+# dsc).
+#
+# this makefile also touches the build product to make sure it exists. for
+# historical reasons, the test runner check that (although perhaps it should
+# not).
+#
+# more information may be available at Bug#949066.
+
+ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+package = [% $source %]
+upstream_version = [% $upstream_version %]
+type = [% $type %]
+
+packagedir = $(package)-$(upstream_version)
+
+origdata = $(ROOT_DIR)/orig
+origtargz = $(package)_$(upstream_version).orig.tar.gz
+
+debiandata = $(ROOT_DIR)/debian
+formatfile = $(debiandata)/source/format
+
+diffdata = $(ROOT_DIR)/diff
+
+private_key = $(ROOT_DIR)/upstream/private-key.asc
+
+pre_build = $(ROOT_DIR)/pre-build
+post_build = $(ROOT_DIR)/post-build
+pre_upstream = $(ROOT_DIR)/pre-upstream
+
+product = [% $build_product %]
+upload_type = [% $upload_type %]
+
+ifeq ($(upload_type),source)
+extraflags = -S
+else
+extraflags =
+endif
+
+.DEFAULT_GOAL := $(product)
+
+ifeq ($(shell dpkg-architecture -qDEB_HOST_ARCH),i386)
+$(product): $(origtargz)
+ if [ -r $(origtargz) -a -r $(private_key) ] ; then \
+ tmpdir=$(shell mktemp -d) ; \
+ gpg --homedir "$$tmpdir" --import $(private_key) ; \
+ gpg --homedir "$$tmpdir" --batch --yes --armor --output $(origtargz).asc \
+ --detach-sign $(origtargz) ; \
+ gpg-connect-agent --homedir "$$tmpdir" KILLAGENT /bye ; \
+ rm -rf "$$tmpdir" ; \
+ fi
+ if [ -d $(diffdata)/. ] ; then \
+ cp -rp $(diffdata)/. $(packagedir) ; \
+ fi
+ if [ -d $(debiandata)/. ] ; then \
+ cp -rp $(debiandata)/. $(packagedir)/debian ; \
+ fi
+
+ if [ -x $(pre_build) ] ; then \
+ $(pre_build) $(shell realpath $(packagedir)) ; \
+ fi
+
+ cd $(packagedir) && dpkg-buildpackage -rfakeroot $(extraflags) -us -uc -d \
+ -iNEVER_MATCH_ANYTHING -INEVER_MATCH_ANYTHING --source-option=--auto-commit
+
+ if [ -x $(post_build) ] ; then \
+ $(post_build) $(shell realpath $(packagedir)) ; \
+ fi
+else
+$(product):
+ touch $(product)
+endif
+
+ifeq ($(type),native)
+$(origtargz):
+ -mkdir $(packagedir)
+ if [ -d $(origdata)/. ] ; then \
+ cp -rp $(origdata)/. $(packagedir) ; \
+ fi
+else
+$(origtargz):
+ -mkdir $(packagedir)
+ if [ -d $(origdata)/. ] ; then \
+ cp -rp $(origdata)/. $(packagedir) ; \
+ fi
+
+ if [ -x $(pre_upstream) ] ; then \
+ $(pre_upstream) $(shell realpath $(packagedir)) ; \
+ fi
+
+ tar czf $(origtargz) $(packagedir)
+
+ if [ -f $(formatfile) ] && grep --quiet "^3\.. (quilt)$$" $(formatfile) ; then \
+ rm -rf $(packagedir)/debian ; \
+ fi
+endif
+
+.PHONY: clean
+clean:
+ rm -rf $(packagedir)
+ if [ "$(type)" = "native" ] ; then \
+ rm -f $(origtargz) ; \
+ fi
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/control.in
new file mode 100644
index 0000000..47c51c7
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbaz3-1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/symbols b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/symbols
new file mode 100644
index 0000000..63ba04d
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/debian/symbols
@@ -0,0 +1,3 @@
+libbaz3.so libbaz3-1 #MINVER#
+ pw@Base 1.0
+ stackprotfix@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/fill-values
new file mode 100644
index 0000000..cb0b316
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-non-pic-i386
+Package-Architecture: i386
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to non-pic code
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/Makefile
new file mode 100644
index 0000000..c5ec48c
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/Makefile
@@ -0,0 +1,26 @@
+CC=gcc
+
+NOPICOBJS=non-pic.o
+SONAME:=libbaz3.so.1
+
+NOPIC_CFLAGS = $(CFLAGS) -fno-PIE
+NOPIC_LDFLAGS = $(LDFLAGS) -fno-PIE -fno-pie
+
+all: libbaz3.so.1.0.3b
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(NOPIC_LDFLAGS) -o $@ -shared -Wl,-soname,$(SONAME) $^ -lc
+
+%.o: %.c
+ $(CC) $(NOPIC_CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+clean:
+ rm -f *.a *.o *.so* *.sho
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ ln -s libbaz3.so.1.0.3b $(DESTDIR)/usr/lib/$(SONAME)
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/non-pic.c b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/non-pic.c
new file mode 100644
index 0000000..f0fa719
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/build-spec/orig/non-pic.c
@@ -0,0 +1,11 @@
+#include <math.h>
+#include <string.h>
+
+double pw(double p){
+ return exp(p);
+}
+
+void stackprotfix(void (*f)(char *, size_t)) {
+ char buffer[10];
+ f(buffer, sizeof(buffer));
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/desc
new file mode 100644
index 0000000..7d0d190
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/desc
@@ -0,0 +1,3 @@
+Testname: shared-libs-non-pic-i386
+Test-Architectures: i386
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/hints
new file mode 100644
index 0000000..13e63f6
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/hints
@@ -0,0 +1 @@
+libbaz3-1 (binary): symbols-file-missing-build-depends-package-field libbaz3.so.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/post-test b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-non-pic-i386/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/compat.in b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/control.in
new file mode 100644
index 0000000..021518f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/control.in
@@ -0,0 +1,48 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (deb revision)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for deb revisions in symbols files and other brokenness.
+
+Package: libsym1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (missing)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for missing symbol file.
+
+
+Package: libesym1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (empty symbols)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for empty symbol file/missing shlib in symbols file.
+
+Package: nolibrary
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (not a library)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Check for shipping a symbols file without a library.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libesym1.install b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libesym1.install
new file mode 100644
index 0000000..750092c
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libesym1.install
@@ -0,0 +1 @@
+usr/lib/libesym*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.install b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..f3a3a05
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+usr/lib/libfoo*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.symbols b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..7b91609
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,10 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0-1
+ energy@Base 0.9-1
+
+# duplicate
+# - e@Base has a bad index
+# - energy@Base is a syntax error (missing version)
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0 1
+ energy@Base
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libsym1.install b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libsym1.install
new file mode 100644
index 0000000..7faef4f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/libsym1.install
@@ -0,0 +1 @@
+usr/lib/libsym*
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/nolibrary.install b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/nolibrary.install
new file mode 100644
index 0000000..241d370
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/nolibrary.install
@@ -0,0 +1 @@
+someconf.conf etc/
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/rules
new file mode 100644
index 0000000..9ef2bb2
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/debian/rules
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ # Apparently some of the tools are too smart to install
+ # a redundant/empty symbols file in the package, so here
+ # is a non-empty useless symbols file!
+ echo "# Aloha!" > debian/libesym1/DEBIAN/symbols
+ echo "# Aloha!" > debian/nolibrary/DEBIAN/symbols
+ # ... they are also too smart to install slightly broken
+ # variants of symbols files
+ install -m 0644 debian/libfoo1.symbols debian/libfoo1/DEBIAN/symbols
+ dh_builddeb
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/fill-values
new file mode 100644
index 0000000..63a0f65
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: shared-libs-symbols-file
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to symbols files
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/Makefile
new file mode 100644
index 0000000..5ab4ec1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1 libsym.so.1 libesym.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/code.c b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/someconf.conf b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/someconf.conf
new file mode 100644
index 0000000..16940ea
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/build-spec/orig/someconf.conf
@@ -0,0 +1,2 @@
+# Yada yada yada
+Var=Val
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/desc
new file mode 100644
index 0000000..a35e821
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-symbols-file
+Check: debian/shlibs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/hints
new file mode 100644
index 0000000..d7b0307
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-symbols-file/eval/hints
@@ -0,0 +1,9 @@
+nolibrary (binary): empty-shared-library-symbols [symbols]
+libsym1 (binary): no-symbols-control-file usr/lib/libsym.so.1.0.1
+libfoo1 (binary): syntax-error-in-symbols-file [symbols:10]
+libfoo1 (binary): symbols-file-missing-build-depends-package-field libfoo.so.1 [symbols]
+libfoo1 (binary): symbols-file-contains-debian-revision on symbol energy@Base (libfoo.so.1) [symbols]
+libfoo1 (binary): symbols-file-contains-current-version-with-debian-revision on symbol e@Base (libfoo.so.1) [symbols]
+libfoo1 (binary): invalid-template-id-in-symbols-file 1 [symbols:9]
+libfoo1 (binary): duplicate-entry-in-symbols-control-file (lines 1 8) libfoo 1 [symbols]
+libesym1 (binary): shared-library-symbols-not-tracked libesym 1 for usr/lib/libesym.so.1.0.1 [symbols]
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/control.in b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/control.in
new file mode 100644
index 0000000..d0e5f60
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/rules b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/rules
new file mode 100755
index 0000000..f60e347
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# Do this manually so it works with jessie's debhelper without
+# breaking of stretch because we get two triggers.
+# - This rules file can be removed once lintian requires
+# debhelper/9.20160403 or newer.
+override_dh_makeshlibs:
+ dh_makeshlibs -n
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/symbols b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/symbols
new file mode 100644
index 0000000..76a969f
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/symbols
@@ -0,0 +1,2 @@
+libfoo.so libfoo #MINVER#
+ foo@Base 1.0
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/triggers b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/triggers
new file mode 100644
index 0000000..dd86603
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/debian/triggers
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/fill-values b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/fill-values
new file mode 100644
index 0000000..8343487
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: shared-libs-unversioned
+Package-Architecture: any
+Description: Test handling of shared libraries without versioned SONAMEs
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/Makefile b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/Makefile
new file mode 100644
index 0000000..daf74d1
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/Makefile
@@ -0,0 +1,15 @@
+CC = gcc
+
+all: libfoo.so
+
+libfoo.so: foo.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libfoo.so $^ -lc
+
+%.o: %.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -o $@ -c $<
+
+install:
+ install -d $(DESTDIR)/usr/lib
+ install -m644 libfoo.so $(DESTDIR)/usr/lib/
+
+.PHONY: distclean realclean clean install test check
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/foo.c b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/foo.c
new file mode 100644
index 0000000..aa323d5
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/build-spec/orig/foo.c
@@ -0,0 +1,24 @@
+/*
+ * Be sure that this library uses a function from libc. Otherwise, gcc is
+ * smart enough not to link it with libc and we get more tags for missing
+ * dependency lines.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+int
+foo(int num)
+{
+ printf("%d\n", num);
+ return num * 42;
+}
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/desc b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/desc
new file mode 100644
index 0000000..1937c93
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/desc
@@ -0,0 +1,5 @@
+Testname: shared-libs-unversioned
+Check: debian/shlibs
+Test-Against:
+ ships-undeclared-shared-library
+See-Also: Debian Bug#506673
diff --git a/t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/hints b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/hints
new file mode 100644
index 0000000..eee1d97
--- /dev/null
+++ b/t/recipes/checks/debian/shlibs/shared-libs-unversioned/eval/hints
@@ -0,0 +1,2 @@
+libfoo (binary): symbols-file-missing-build-depends-package-field libfoo.so [symbols]
+libfoo (binary): shared-library-lacks-version usr/lib/libfoo.so libfoo.so
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/build-spec/fill-values b/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/build-spec/fill-values
new file mode 100644
index 0000000..0e031d2
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debian-source-dir-classifications
+Description: Test for d-s-d classifications tags
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/desc b/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/desc
new file mode 100644
index 0000000..1c4797f
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-source-dir-classifications
+Check: debian/source-dir
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/hints b/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/hints
new file mode 100644
index 0000000..a3bdc6a
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-classifications/eval/hints
@@ -0,0 +1 @@
+debian-source-dir-classifications (source): source-format 3.0 (native)
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/debian/source/options b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/debian/source/options
new file mode 100644
index 0000000..22a4de9
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/debian/source/options
@@ -0,0 +1,2 @@
+compression = xz
+compression-level = 9
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/fill-values b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/fill-values
new file mode 100644
index 0000000..05e98a5
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: debian-source-dir-custom-compression-settings
+Source-Format: 3.0 (native)
+Description: Check for custom compression settings in debian/source/format
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/desc b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/desc
new file mode 100644
index 0000000..5d3372f
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-source-dir-custom-compression-settings
+Check: debian/source-dir
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/hints b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/hints
new file mode 100644
index 0000000..f03bb46
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-custom-compression-settings/eval/hints
@@ -0,0 +1,3 @@
+debian-source-dir-custom-compression-settings (source): source-format 3.0 (native)
+debian-source-dir-custom-compression-settings (source): custom-compression-in-debian-source-options compression-level = 9 [debian/source/options:2]
+debian-source-dir-custom-compression-settings (source): custom-compression-in-debian-source-options compression = xz [debian/source/options:1]
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/debian/source/formt b/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/debian/source/formt
new file mode 100644
index 0000000..d3827e7
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/debian/source/formt
@@ -0,0 +1 @@
+1.0
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/fill-values b/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/fill-values
new file mode 100644
index 0000000..8b1c351
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debian-source-dir-general
+Description: General tests for debian/source/* checks
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/pre-build b/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/pre-build
new file mode 100755
index 0000000..9442d4c
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-general/build-spec/pre-build
@@ -0,0 +1,2 @@
+#!/bin/sh
+rm "$1"/debian/source/format
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/desc b/t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/desc
new file mode 100644
index 0000000..fedd774
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-source-dir-general
+Check: debian/source-dir
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/hints b/t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/hints
new file mode 100644
index 0000000..c9d8043
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-general/eval/hints
@@ -0,0 +1,4 @@
+debian-source-dir-general (source): unknown-file-in-debian-source [debian/source/formt]
+debian-source-dir-general (source): source-format 1.0 [implicit native]
+debian-source-dir-general (source): older-source-format 1.0
+debian-source-dir-general (source): missing-debian-source-format
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/patches/series b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/patches/series
new file mode 100644
index 0000000..94cd91e
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/patches/series
@@ -0,0 +1,11 @@
+# some line that ends with quilt-patches-deb-export-hook
+# this looks like series file
+
+ # but really it is just a bunch
+
+# of blank
+
+# lines
+
+# and #
+ # comments
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/source/git-patches b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/source/git-patches
new file mode 100644
index 0000000..359925d
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/debian/source/git-patches
@@ -0,0 +1,11 @@
+upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION
+
+
+ # this is an indented comment
+
+
+
+ # some more blank lines
+
+
+
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/fill-values b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/fill-values
new file mode 100644
index 0000000..70ac870
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: debian-source-dir-gitpkg-series
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Test for trivial series file in git-patches-not-exported
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/orig/an_empty_file b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/orig/an_empty_file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/build-spec/orig/an_empty_file
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/desc b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/desc
new file mode 100644
index 0000000..4ede50f
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-source-dir-gitpkg-series
+Check: debian/source-dir
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/hints b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/hints
new file mode 100644
index 0000000..8e9437c
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg-series/eval/hints
@@ -0,0 +1,2 @@
+debian-source-dir-gitpkg-series (source): source-format 3.0 (quilt)
+debian-source-dir-gitpkg-series (source): git-patches-not-exported [debian/patches/series]
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/debian/source/git-patches b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/debian/source/git-patches
new file mode 100644
index 0000000..be4c03c
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/debian/source/git-patches
@@ -0,0 +1,11 @@
+# upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION
+
+
+ # this is an indented comment
+
+
+
+ # some more blank lines
+
+
+
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/fill-values b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/fill-values
new file mode 100644
index 0000000..f8455d2
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: debian-source-dir-gitpkg
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Test for false positives in git-patches-not-exported
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/desc b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/desc
new file mode 100644
index 0000000..8526d22
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/desc
@@ -0,0 +1,4 @@
+Testname: debian-source-dir-gitpkg
+Test-Against:
+ git-patches-not-exported
+Check: debian/source-dir
diff --git a/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/hints b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/hints
new file mode 100644
index 0000000..6212855
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/debian-source-dir-gitpkg/eval/hints
@@ -0,0 +1 @@
+debian-source-dir-gitpkg (source): source-format 3.0 (quilt)
diff --git a/t/recipes/checks/debian/source-dir/source-format-1.0/build-spec/fill-values b/t/recipes/checks/debian/source-dir/source-format-1.0/build-spec/fill-values
new file mode 100644
index 0000000..12123e7
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/source-format-1.0/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: source-format-1.0
+Source-Format: 1.0
+Description: General tests for debian/source/* checks
diff --git a/t/recipes/checks/debian/source-dir/source-format-1.0/eval/desc b/t/recipes/checks/debian/source-dir/source-format-1.0/eval/desc
new file mode 100644
index 0000000..c7df978
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/source-format-1.0/eval/desc
@@ -0,0 +1,2 @@
+Testname: source-format-1.0
+Check: debian/source-dir
diff --git a/t/recipes/checks/debian/source-dir/source-format-1.0/eval/hints b/t/recipes/checks/debian/source-dir/source-format-1.0/eval/hints
new file mode 100644
index 0000000..3fdf38f
--- /dev/null
+++ b/t/recipes/checks/debian/source-dir/source-format-1.0/eval/hints
@@ -0,0 +1,2 @@
+source-format-1.0 (source): source-format 1.0 [native]
+source-format-1.0 (source): older-source-format 1.0
diff --git a/t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/debian/source/include-binaries b/t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/debian/source/include-binaries
new file mode 100644
index 0000000..c14271d
--- /dev/null
+++ b/t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/debian/source/include-binaries
@@ -0,0 +1,3 @@
+# the format should tolerate this comment
+# and whitespace around the filename
+ debian/icon.png
diff --git a/t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/fill-values b/t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/fill-values
new file mode 100644
index 0000000..7e60c72
--- /dev/null
+++ b/t/recipes/checks/debian/source/include-binaries/non-existing-file/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: non-existing-file
+Skeleton: source-native
+Description: An entry in d/source/include-binaries does not exist.
+References: dpkg-source(1), Bug#528001, https://stackoverflow.com/questions/21057015/debian-include-binaries-format
diff --git a/t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/desc b/t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/desc
new file mode 100644
index 0000000..3fc395a
--- /dev/null
+++ b/t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: non-existing-file
+Check: debian/source/include-binaries
diff --git a/t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/hints b/t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/hints
new file mode 100644
index 0000000..78e2e5d
--- /dev/null
+++ b/t/recipes/checks/debian/source/include-binaries/non-existing-file/eval/hints
@@ -0,0 +1 @@
+non-existing-file (source): unused-entry-in-debian-source-include-binaries debian/icon.png [debian/source/include-binaries:3]
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/rules b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/somepackage.substvars b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/somepackage.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/somepackage.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/substvars b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/fill-values b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/fill-values
new file mode 100644
index 0000000..c6798f7
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-diff
+Skeleton: upload-non-native
+Source-Format: 1.0
+Description: Check for cruft added in the diff
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/pre-build b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/pre-build
new file mode 100755
index 0000000..537b323
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/build-spec/pre-build
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+mkdir "${dir}/.pc"
+echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/eval/desc b/t/recipes/checks/debian/substvars/cruft-general-diff/eval/desc
new file mode 100644
index 0000000..0ce942a
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-general-diff
+See-Also: Debian Bug#598251
+Check: debian/substvars
diff --git a/t/recipes/checks/debian/substvars/cruft-general-diff/eval/hints b/t/recipes/checks/debian/substvars/cruft-general-diff/eval/hints
new file mode 100644
index 0000000..97f50c5
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-diff/eval/hints
@@ -0,0 +1,2 @@
+cruft-general-diff (source): source-contains-debian-substvars [debian/substvars]
+cruft-general-diff (source): source-contains-debian-substvars [debian/somepackage.substvars]
diff --git a/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/rules b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/substvars b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/fill-values b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/fill-values
new file mode 100644
index 0000000..8460259
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-general-native
+Description: Check for cruft in a native package
diff --git a/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/pre-build b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/pre-build
new file mode 100755
index 0000000..c594074
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-native/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/debian/substvars/cruft-general-native/eval/desc b/t/recipes/checks/debian/substvars/cruft-general-native/eval/desc
new file mode 100644
index 0000000..2cd8a25
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-native
+Check: debian/substvars
diff --git a/t/recipes/checks/debian/substvars/cruft-general-native/eval/hints b/t/recipes/checks/debian/substvars/cruft-general-native/eval/hints
new file mode 100644
index 0000000..f7b0898
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-native/eval/hints
@@ -0,0 +1 @@
+cruft-general-native (source): source-contains-debian-substvars [debian/substvars]
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/README.source b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/README.source
new file mode 100644
index 0000000..0bbaa60
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some information about the patch system
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/rules b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/somepackage.substvars b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/somepackage.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/somepackage.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/substvars b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/fill-values b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/fill-values
new file mode 100644
index 0000000..01bda9c
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-quilt
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Check for cruft added in a 3.0 (quilt) package
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/pre-build b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/pre-build
new file mode 100755
index 0000000..53e0ddd
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/build-spec/pre-build
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+mkdir "${dir}/.pc"
+echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/eval/desc b/t/recipes/checks/debian/substvars/cruft-general-quilt/eval/desc
new file mode 100644
index 0000000..21a04e6
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/eval/desc
@@ -0,0 +1,3 @@
+Testname: cruft-general-quilt
+See-Also: Debian Bug#598251
+Check: debian/substvars
diff --git a/t/recipes/checks/debian/substvars/cruft-general-quilt/eval/hints b/t/recipes/checks/debian/substvars/cruft-general-quilt/eval/hints
new file mode 100644
index 0000000..b005f00
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-quilt/eval/hints
@@ -0,0 +1,2 @@
+cruft-general-quilt (source): source-contains-debian-substvars [debian/substvars]
+cruft-general-quilt (source): source-contains-debian-substvars [debian/somepackage.substvars]
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/patches/wig-pen b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
new file mode 100644
index 0000000..a452b53
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
@@ -0,0 +1,5 @@
+--- upstream/README
++++ debian/README
+@@ -1 +1 @@
+-README
++README for wig&pen
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/rules b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/substvars b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/fill-values b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/fill-values
new file mode 100644
index 0000000..edb39d9
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-wig-pen
+Skeleton: upload-non-native
+Source-Format: 2.0
+Description: Check for cruft added in a 2.0 package
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/orig/README b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/pre-build b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/pre-build
new file mode 100755
index 0000000..78f359c
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/desc b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/desc
new file mode 100644
index 0000000..72b8327
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-wig-pen
+Check: debian/substvars
diff --git a/t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/hints b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/hints
new file mode 100644
index 0000000..e1dd703
--- /dev/null
+++ b/t/recipes/checks/debian/substvars/cruft-general-wig-pen/eval/hints
@@ -0,0 +1 @@
+cruft-general-wig-pen (source): source-contains-debian-substvars [debian/substvars]
diff --git a/t/recipes/checks/debian/symbols/package-placeholder/build-spec/debian/package-placeholder.symbols b/t/recipes/checks/debian/symbols/package-placeholder/build-spec/debian/package-placeholder.symbols
new file mode 100644
index 0000000..c9c913d
--- /dev/null
+++ b/t/recipes/checks/debian/symbols/package-placeholder/build-spec/debian/package-placeholder.symbols
@@ -0,0 +1,66 @@
+# taken from http://deb.debian.org/debian/pool/main/libd/libdvdread/libdvdread_6.0.1-1.dsc
+libdvdread.so.4 libdvdread4 #MINVER#
+* Build-Depends-Package: #PACKAGE#
+ DVDClose@Base 4.1.3
+ DVDCloseFile@Base 4.1.3
+ DVDDiscID@Base 4.1.3
+ DVDFileSeek@Base 4.1.3
+ DVDFileSeekForce@Base 4.1.3
+ DVDFileSize@Base 4.1.3
+ DVDFileStat@Base 4.1.3-4~
+ DVDISOVolumeInfo@Base 4.1.3
+ DVDOpen@Base 4.1.3
+ DVDOpenFile@Base 4.1.3
+ DVDOpenStream@Base 5.0.2
+ DVDReadBlocks@Base 4.1.3
+ DVDReadBytes@Base 4.1.3
+ DVDUDFCacheLevel@Base 4.1.3
+ DVDUDFVolumeInfo@Base 4.1.3
+ UDFFindFile@Base 4.1.3
+ UDFGetVolumeIdentifier@Base 4.1.3
+ UDFGetVolumeSetIdentifier@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_close@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_error@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_open@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_read@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_seek@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_setup@Base 4.1.3
+#MISSING: 6.0.0-1# dvdinput_title@Base 4.1.3
+ dvdread_getbits@Base 4.1.3
+ dvdread_getbits_init@Base 4.1.3
+ dvdread_print_time@Base 4.1.3
+ ifoClose@Base 4.1.3
+ ifoFree_C_ADT@Base 4.1.3
+ ifoFree_FP_PGC@Base 4.1.3
+ ifoFree_PGCIT@Base 4.1.3
+ ifoFree_PGCI_UT@Base 4.1.3
+ ifoFree_PTL_MAIT@Base 4.1.3
+ ifoFree_TITLE_C_ADT@Base 4.1.3
+ ifoFree_TITLE_VOBU_ADMAP@Base 4.1.3
+ ifoFree_TT_SRPT@Base 4.1.3
+ ifoFree_TXTDT_MGI@Base 4.1.3
+ ifoFree_VOBU_ADMAP@Base 4.1.3
+ ifoFree_VTS_ATRT@Base 4.1.3
+ ifoFree_VTS_PTT_SRPT@Base 4.1.3
+ ifoFree_VTS_TMAPT@Base 4.1.3
+ ifoOpen@Base 4.1.3
+ ifoOpenVMGI@Base 4.1.3
+ ifoOpenVTSI@Base 4.1.3
+ ifoRead_C_ADT@Base 4.1.3
+ ifoRead_FP_PGC@Base 4.1.3
+ ifoRead_PGCIT@Base 4.1.3
+ ifoRead_PGCI_UT@Base 4.1.3
+ ifoRead_PTL_MAIT@Base 4.1.3
+ ifoRead_TITLE_C_ADT@Base 4.1.3
+ ifoRead_TITLE_VOBU_ADMAP@Base 4.1.3
+ ifoRead_TT_SRPT@Base 4.1.3
+ ifoRead_TXTDT_MGI@Base 4.1.3
+ ifoRead_VOBU_ADMAP@Base 4.1.3
+ ifoRead_VTS_ATRT@Base 4.1.3
+ ifoRead_VTS_PTT_SRPT@Base 4.1.3
+ ifoRead_VTS_TMAPT@Base 4.1.3
+ ifo_print@Base 4.1.3
+ navPrint_DSI@Base 4.1.3
+ navPrint_PCI@Base 4.1.3
+ navRead_DSI@Base 4.1.3
+ navRead_PCI@Base 4.1.3
diff --git a/t/recipes/checks/debian/symbols/package-placeholder/build-spec/fill-values b/t/recipes/checks/debian/symbols/package-placeholder/build-spec/fill-values
new file mode 100644
index 0000000..8ae39e8
--- /dev/null
+++ b/t/recipes/checks/debian/symbols/package-placeholder/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: package-placeholder
+Description: Look for PACKAGE placeholder in d/symbols files
diff --git a/t/recipes/checks/debian/symbols/package-placeholder/eval/desc b/t/recipes/checks/debian/symbols/package-placeholder/eval/desc
new file mode 100644
index 0000000..994734b
--- /dev/null
+++ b/t/recipes/checks/debian/symbols/package-placeholder/eval/desc
@@ -0,0 +1,2 @@
+Testname: package-placeholder
+Check: debian/symbols
diff --git a/t/recipes/checks/debian/symbols/package-placeholder/eval/hints b/t/recipes/checks/debian/symbols/package-placeholder/eval/hints
new file mode 100644
index 0000000..1b8a920
--- /dev/null
+++ b/t/recipes/checks/debian/symbols/package-placeholder/eval/hints
@@ -0,0 +1 @@
+package-placeholder (source): package-placeholder-in-symbols-file [debian/package-placeholder.symbols:3]
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/changelog.in b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7174e69
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/control.in b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/control.in
new file mode 100644
index 0000000..c4d5304
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/install b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/install
new file mode 100644
index 0000000..47fc6a3
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/debian/install
@@ -0,0 +1 @@
+dummy usr/share/doc/foo/
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/fill-values b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/fill-values
new file mode 100644
index 0000000..faa216c
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-crlf-eols
+Package-Architecture: all
+Description: Check that control files with CRLF EOLs are reported
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/orig/dummy b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/orig/dummy
new file mode 100644
index 0000000..5c3118d
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/build-spec/orig/dummy
@@ -0,0 +1 @@
+dummy file
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/desc b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/desc
new file mode 100644
index 0000000..b3c05d7
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-crlf-eols
+Check: debian/trailing-whitespace
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/hints b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/hints
new file mode 100644
index 0000000..5e0885f
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-crlf-eols/eval/hints
@@ -0,0 +1,22 @@
+cruft-crlf-eols (source): trailing-whitespace [debian/control:9]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:8]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:7]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:6]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:5]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:4]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:3]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:2]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:1]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:15]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:14]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:13]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:12]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:11]
+cruft-crlf-eols (source): trailing-whitespace [debian/control:10]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:8]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:7]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:6]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:5]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:4]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:3]
+cruft-crlf-eols (source): trailing-whitespace [debian/changelog:2]
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/README.source b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/README.source
new file mode 100644
index 0000000..11f42a1
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/README.source
@@ -0,0 +1,6 @@
+cruft-file-contains-trailing-whitespace for Debian
+--------------------------------------------------
+
+This line does not contain any trailing whitespace.
+This line contains a trailing whitespace character but is still a false-positive as we ignore README.source.
+
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/changelog.in b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9c178f1
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * This line contains trailing whitespace.
+ * This line does not contais trailing whitespace.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/rules b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/rules
new file mode 100755
index 0000000..c19a271
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+ # The line contains a trailing tab (false-positive)
+
+
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/fill-values b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/fill-values
new file mode 100644
index 0000000..7a95b35
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-file-contains-trailing-whitespace
+Description: Check for files containing trailing whitespace characters
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/desc b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/desc
new file mode 100644
index 0000000..1f35e07
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-file-contains-trailing-whitespace
+Check: debian/trailing-whitespace
diff --git a/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/hints b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/hints
new file mode 100644
index 0000000..7953403
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/cruft-file-contains-trailing-whitespace/eval/hints
@@ -0,0 +1,4 @@
+cruft-file-contains-trailing-whitespace (source): trailing-whitespace [debian/rules:7]
+cruft-file-contains-trailing-whitespace (source): trailing-whitespace [debian/changelog:9]
+cruft-file-contains-trailing-whitespace (source): trailing-whitespace [debian/changelog:8]
+cruft-file-contains-trailing-whitespace (source): trailing-whitespace [debian/changelog:3]
diff --git a/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/debian/rules b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/debian/rules
new file mode 100755
index 0000000..9a82cb7
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif \ No newline at end of file
diff --git a/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/fill-values b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/fill-values
new file mode 100644
index 0000000..90cfaae
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: rules-without-newline-at-end
+Description: d/rules lacking a newline at the end of file.
diff --git a/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/desc b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/desc
new file mode 100644
index 0000000..232e02f
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/desc
@@ -0,0 +1,2 @@
+Testname: rules-without-newline-at-end
+Check: debian/trailing-whitespace
diff --git a/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/hints b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/hints
new file mode 100644
index 0000000..d14a8d4
--- /dev/null
+++ b/t/recipes/checks/debian/trailing-whitespace/rules-without-newline-at-end/eval/hints
@@ -0,0 +1 @@
+rules-without-newline-at-end (source): no-newline-at-end [debian/rules]
diff --git a/t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..4ffe477
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/debian/upstream/metadata
@@ -0,0 +1,4 @@
+---
+Bogus: This field name is not known.
+Repository: Some repo.
+Bug-Submit: A bug tracker.
diff --git a/t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/fill-values
new file mode 100644
index 0000000..5be819d
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/bogus-field/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: bogus-field
+Description: Upstream metadata contains a field named 'Bogus'
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/bogus-field/eval/desc b/t/recipes/checks/debian/upstream/metadata/bogus-field/eval/desc
new file mode 100644
index 0000000..2ac293b
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/bogus-field/eval/desc
@@ -0,0 +1,4 @@
+Testname: bogus-field
+Check: debian/upstream/metadata
+See-Also:
+ https://salsa.debian.org/lintian/lintian/-/merge_requests/356
diff --git a/t/recipes/checks/debian/upstream/metadata/bogus-field/eval/hints b/t/recipes/checks/debian/upstream/metadata/bogus-field/eval/hints
new file mode 100644
index 0000000..47a6443
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/bogus-field/eval/hints
@@ -0,0 +1,5 @@
+bogus-field (source): upstream-metadata-field-unknown Bogus [debian/upstream/metadata]
+bogus-field (source): upstream-metadata-exists [debian/upstream/metadata]
+bogus-field (source): upstream-metadata Repository Some repo. [debian/upstream/metadata]
+bogus-field (source): upstream-metadata Bug-Submit A bug tracker. [debian/upstream/metadata]
+bogus-field (source): upstream-metadata Bogus This field name is not known. [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/debian/upstream b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/debian/upstream
new file mode 100644
index 0000000..ab2fc5d
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/debian/upstream
@@ -0,0 +1 @@
+# empty file \ No newline at end of file
diff --git a/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/fill-values
new file mode 100644
index 0000000..de42edd
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-obsolete-upstream-metadata
+Description: Check for obsolete path for debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/desc b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/desc
new file mode 100644
index 0000000..c0934c3
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-obsolete-upstream-metadata
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/hints b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/hints
new file mode 100644
index 0000000..91c125c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/cruft-obsolete-upstream-metadata/eval/hints
@@ -0,0 +1 @@
+cruft-obsolete-upstream-metadata (source): debian-upstream-obsolete-path [debian/upstream]
diff --git a/t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..1182684
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/debian/upstream/metadata
@@ -0,0 +1,7 @@
+---
+Archive: GitHub
+Bug-Database: https://github.com/isaacs/node-glob/issues
+Contact: https://github.com/isaacs/node-glob/issues
+Name: node-glob
+Repository: https://github.com/isaacs/node-glob.git
+Repository-Browse: https://github.com/isaacs/node-glob
diff --git a/t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/fill-values
new file mode 100644
index 0000000..ad6eb57
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/fields-present/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: fields-present
+Description: Tests for classification tags on upstream metadata
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/fields-present/eval/desc b/t/recipes/checks/debian/upstream/metadata/fields-present/eval/desc
new file mode 100644
index 0000000..02d3d28
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/fields-present/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-present
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/fields-present/eval/hints b/t/recipes/checks/debian/upstream/metadata/fields-present/eval/hints
new file mode 100644
index 0000000..769e5ab
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/fields-present/eval/hints
@@ -0,0 +1,7 @@
+fields-present (source): upstream-metadata-exists [debian/upstream/metadata]
+fields-present (source): upstream-metadata Repository-Browse https://github.com/isaacs/node-glob [debian/upstream/metadata]
+fields-present (source): upstream-metadata Repository https://github.com/isaacs/node-glob.git [debian/upstream/metadata]
+fields-present (source): upstream-metadata Name node-glob [debian/upstream/metadata]
+fields-present (source): upstream-metadata Contact https://github.com/isaacs/node-glob/issues [debian/upstream/metadata]
+fields-present (source): upstream-metadata Bug-Database https://github.com/isaacs/node-glob/issues [debian/upstream/metadata]
+fields-present (source): upstream-metadata Archive GitHub [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..d18240a
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/debian/upstream/metadata
@@ -0,0 +1,2 @@
+ - Hi,
+This is a completely invalid YAML file.
diff --git a/t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/fill-values
new file mode 100644
index 0000000..4a524d2
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/in-native-source/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: in-native-source
+Description: Tests for d/upstream/metadata in native sources.
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/in-native-source/eval/desc b/t/recipes/checks/debian/upstream/metadata/in-native-source/eval/desc
new file mode 100644
index 0000000..e639f6e
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/in-native-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: in-native-source
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/in-native-source/eval/hints b/t/recipes/checks/debian/upstream/metadata/in-native-source/eval/hints
new file mode 100644
index 0000000..cabf645
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/in-native-source/eval/hints
@@ -0,0 +1 @@
+in-native-source (source): upstream-metadata-in-native-source [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..d18240a
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/debian/upstream/metadata
@@ -0,0 +1,2 @@
+ - Hi,
+This is a completely invalid YAML file.
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/fill-values
new file mode 100644
index 0000000..4807064
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: upstream-metadata-invalid-yml
+Description: Tests for upstream-metadata being invalid yml
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/desc b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/desc
new file mode 100644
index 0000000..cb6406c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-metadata-invalid-yml
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/hints b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/hints
new file mode 100644
index 0000000..6e29652
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-invalid-yml/eval/hints
@@ -0,0 +1,2 @@
+upstream-metadata-invalid-yml (source): upstream-metadata-yaml-invalid did not find expected <document start> (at document 2, line 2, column 1) [debian/upstream/metadata]
+upstream-metadata-invalid-yml (source): upstream-metadata-exists [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/fill-values
new file mode 100644
index 0000000..ffb322d
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: upstream-metadata-is-missing
+Skeleton: upload-non-native
+Description: Tests for missing upstream metadata file
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/pre-build b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/pre-build
new file mode 100755
index 0000000..e4e9373
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/build-spec/pre-build
@@ -0,0 +1,2 @@
+#!/bin/sh
+rm -f "$1/debian/upstream/metadata"
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/desc b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/desc
new file mode 100644
index 0000000..eda1ff9
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-metadata-is-missing
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/hints b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/hints
new file mode 100644
index 0000000..b2f602f
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-missing/eval/hints
@@ -0,0 +1 @@
+upstream-metadata-is-missing (source): upstream-metadata-file-is-missing
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/fill-values
new file mode 100644
index 0000000..18a7845
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-non-native
+Testname: upstream-metadata-is-not-a-file
+Description: Tests for d/upstream/metadata being non-file
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/pre-build b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/pre-build
new file mode 100755
index 0000000..f237abf
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/build-spec/pre-build
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+UPSTREAM_DIR="$DIR/debian/upstream"
+METADATA="$UPSTREAM_DIR/metadata"
+
+mkdir -p "$UPSTREAM_DIR"
+rm -f "$METADATA"
+mkfifo "$METADATA"
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/desc b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/desc
new file mode 100644
index 0000000..8bbbeb1
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-metadata-is-not-a-file
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/hints b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/hints
new file mode 100644
index 0000000..ba37c59
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-is-not-a-file/eval/hints
@@ -0,0 +1,2 @@
+upstream-metadata-is-not-a-file (source): upstream-metadata-is-not-a-file [debian/upstream/metadata]
+upstream-metadata-is-not-a-file (source): upstream-metadata-exists [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..e740fba
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/debian/upstream/metadata
@@ -0,0 +1,5 @@
+Archive: GitHub
+Contact: https://github.com/isaacs/node-glob/issues
+Name: node-glob
+Repository: https://github.com/isaacs/node-glob.git
+Repository-Browse: https://github.com/isaacs/node-glob
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/fill-values
new file mode 100644
index 0000000..924631c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: upstream-metadata-missing-bug-tracking
+Description: Tests for upstream-metadata missing upstream repo info
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/desc b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/desc
new file mode 100644
index 0000000..60d30b1
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-metadata-missing-bug-tracking
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/hints b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/hints
new file mode 100644
index 0000000..221dfb4
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-bug-tracking/eval/hints
@@ -0,0 +1,7 @@
+upstream-metadata-missing-bug-tracking (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+upstream-metadata-missing-bug-tracking (source): upstream-metadata-exists [debian/upstream/metadata]
+upstream-metadata-missing-bug-tracking (source): upstream-metadata Repository-Browse https://github.com/isaacs/node-glob [debian/upstream/metadata]
+upstream-metadata-missing-bug-tracking (source): upstream-metadata Repository https://github.com/isaacs/node-glob.git [debian/upstream/metadata]
+upstream-metadata-missing-bug-tracking (source): upstream-metadata Name node-glob [debian/upstream/metadata]
+upstream-metadata-missing-bug-tracking (source): upstream-metadata Contact https://github.com/isaacs/node-glob/issues [debian/upstream/metadata]
+upstream-metadata-missing-bug-tracking (source): upstream-metadata Archive GitHub [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..131493d
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/debian/upstream/metadata
@@ -0,0 +1,6 @@
+Archive: GitHub
+Bug-Database: https://github.com/isaacs/node-glob/issues
+Contact: https://github.com/isaacs/node-glob/issues
+Name: node-glob
+Bug-Database: https://github.com/isaacs/node-glob/issues
+Bug-Submit: https://github.com/isaacs/node-glob/issues/new
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/fill-values
new file mode 100644
index 0000000..65e64c5
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: upstream-metadata-missing-repository
+Description: Tests for upstream-metadata missing upstream repo info
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/desc b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/desc
new file mode 100644
index 0000000..6e6fe31
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-metadata-missing-repository
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/hints b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/hints
new file mode 100644
index 0000000..595916c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/upstream-metadata-missing-repository/eval/hints
@@ -0,0 +1,7 @@
+upstream-metadata-missing-repository (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+upstream-metadata-missing-repository (source): upstream-metadata-exists [debian/upstream/metadata]
+upstream-metadata-missing-repository (source): upstream-metadata Name node-glob [debian/upstream/metadata]
+upstream-metadata-missing-repository (source): upstream-metadata Contact https://github.com/isaacs/node-glob/issues [debian/upstream/metadata]
+upstream-metadata-missing-repository (source): upstream-metadata Bug-Submit https://github.com/isaacs/node-glob/issues/new [debian/upstream/metadata]
+upstream-metadata-missing-repository (source): upstream-metadata Bug-Database https://github.com/isaacs/node-glob/issues [debian/upstream/metadata]
+upstream-metadata-missing-repository (source): upstream-metadata Archive GitHub [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/debian/upstream/metadata b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..6e5ed82
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/debian/upstream/metadata
@@ -0,0 +1,5 @@
+- Name: libpff
+- Bug-Database: https://github.com/libyal/libpff/issues
+- Changelog: https://github.com/libyal/libpff/blob/master/ChangeLog
+- Documentation: https://github.com/libyal/libpff/wiki
+- Repository: https://github.com/libyal/libpff
diff --git a/t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/fill-values b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/fill-values
new file mode 100644
index 0000000..6ec962f
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-non-native
+Testname: yaml-sequence
+Description: File is YAML sequence instead of mapping
+Extra-Build-Depends: libyaml-libyaml-perl (>= 0.69)
diff --git a/t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/desc b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/desc
new file mode 100644
index 0000000..0d43f76
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/desc
@@ -0,0 +1,2 @@
+Testname: yaml-sequence
+Check: debian/upstream/metadata
diff --git a/t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/hints b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/hints
new file mode 100644
index 0000000..03f3384
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/metadata/yaml-sequence/eval/hints
@@ -0,0 +1,2 @@
+yaml-sequence (source): upstream-metadata-not-yaml-mapping [debian/upstream/metadata]
+yaml-sequence (source): upstream-metadata-exists [debian/upstream/metadata]
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..41c2c56
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,160 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFkjME4BEACatcbzE9EaIKMmiS3OmcrooZZUI4pGtJcFqCNBOP3qvxUEq9Tk
+4XPY8EARDGdwy2rMc12ywoc5FMzNwXiC3RpUNHnNhY+zau18q9CQx8UR02NDFWQq
+AwaDSF4WU1GBVBMWgtxfIwAQGl/qOr+aSVtJCnEOTA/YiZPNw/wpA7r2g6EHYcce
+a5srr7F15a6OxzDdPXlfoJuoSXMZUHpJIqG0UOo7NPkxPGRoHO2yGPS1DWKy3egG
+xm718DwaIWee+mfJrcqT0ZFH4n5po1BJVj+8TcqE4YlkN/z4p0zI/XAxNCR2wGV2
+6cCQ8laEgwG33rPp+N3G/FeJchYTFvL7zDtdYKbBPVeaJh2kROnqbVVN5kZBVEXB
+QNbXKuK6/TPiQeI+8anA9WflI19lzkzl29L7hsM9ornk7+wtu9P2hu3eEUgjjBli
+Ujisw8s0aTPB5QsMCjSownwZ0ucqj+07nYVsPU2wK8x6A7p6Cg2SCPnjbX8jUb3Z
+wyn0yi4SWceW9a+LW6wdGarMGbu+Lm6in8pK93u7mE/D4AskUVz1yLyiNO9WBXPq
+GyTocqXKXTutHKhhSwY9CyEw1+SRzXXyHPmRunRULTgZHLOaydK6ekzBOe1Yp9Zk
+hLvon6fgOhJTsokv27QCSw8ILbQPGF9qJWFQfYZhT4QCufmPaFgBpJOdewARAQAB
+iQJOBB8BCgA4FiEE4c8g3f/kuJ6AJljx4LEYlPZq7JgFAlkjMMkXDIABgOl28UpQ
+ikjpyj/pvDciUsoc+WQCBwAACgkQ4LEYlPZq7JiCcw/+NxzyntWMM/b/eIMedzZK
+Zyq7Mo6vgFxT57wAloMtLu0WS9oETTH/+/9+fHPmkYxCX1HTNKpdY2KbjiZC/gAY
+vJ8iGWredwIls2UyW4fegzRLNvWLZmUBbLg0WaTIQ9JZwa2Rw/q6Z0pe0tfb44oX
+lpps0WA/OZCWXYVO2rhOzoiQulqdmHgwdcLA29BnpqBY1R8/LMDsfPLnJu7AFqgM
+CQpnjIGRH6ZxF2TNUSdljUbIOultEeIvxtxosF1u0r20mg46aaKDpr0ANiR/Ojaj
+YoeHZc39fyubSrhIyQuk4rDisrJod63MJ9x9upAc9H3qz71QjpwpVXPDxereWULO
+17qN3hjjZd23CBdRv8HjRKQoFagUnxlrat1t+/yJCENzX6eX8wBs0vVCSmbtbSp7
+y+0BK4fyjDKCdiyKh1TiAnQ1Po/xICGr4Sa6Wohq2TeWXz4VlRnaQeCIwa4Kk6T/
+3VTQbNxn7Uiy9ec8aR+1YMGUBDG/k3s6K1PWLdJtSVgao8MkQYeKcQk/sgGSFPh8
+SkTy7CnSjK/gQP8NC5fFDWpatGpnDr9qsQwzMnUVYWNZQMQ+LJHPnXRyusr3M+Gh
+4muVW1wmyjNLhtEYjJJnbv9bVVv2HFVXOWGiXY4hnj01xkHf3885Qq5ORWl1FMnU
+lcqUcFsB6a1CCPGxNTJQhgKJAk4EHwEKADgWIQThzyDd/+S4noAmWPHgsRiU9mrs
+mAUCWSMwyRcMgAH7+r21QbXclVvZum7bFs9bsSUlxAIHAAAKCRDgsRiU9mrsmK2H
+D/9frYP6KRecLNMzLJGe6MB/1DbqIud1/kzd/jHRo3e4Dz8cls29N03HskLE4jTf
+BXKAhUmRI52aMCioY/K03rZLaR++/GMIdnF7O4Ks7P203J4/CudmXQvz3Rby22lC
+RCp3Wsx2DqFgpc1V5SjmdDxzEs3fwKJ0B8YOMyibyUaLfwaxRfiTsWmRF192WzCM
+/B1tmJDLIqwq/xxzxmiqzrxBWq3JIxH1PzrGbWvAE0gfBJHgw/2HHO4PAG9Lj+AV
+HHPV/9xhXdbF/KnnKUGtd9lssNleWlc5LeM0ix2pU/QrZx7c+CBW+142jQcZ58X6
+QvHTKBkImI7y3kMCUOs+UbxKnFsRBRduMLvIpXJVXukV3QvRn+9riITPIcviF4ni
+F6V2NQ+ONrvMOK2s6VdfgMS7c4Azuyt4SJSEzBhHu+VTVnMZCBiKvZtRL5XX85ZF
+DDkN62Bwa+F36lTiOBWOecSQykCyOKcnn0jKrSgDOk08qE7Nzl2SPdlpza0/bk2u
+6i8o3mrmdO02OqC9vJum6M4Pn2HHrkPzAtSs11E7ogcZghPxnGCekGQNekHx9DKM
+mv8W+SZf4b1KD1EKECeNLZ0QHQMjU3AYBav+Mq9IXIlwFZL85BYLUAWfrCnqf/gV
+CTiy9yKdQ4WIr9XR+zywDigAZqJ5PxwBh1+phrkoWUfsLokCTgQfAQoAOBYhBOHP
+IN3/5LiegCZY8eCxGJT2auyYBQJZIzDJFwyAATCZEb6pZtBhMFMEVxG05f8VsP2C
+AgcAAAoJEOCxGJT2auyYWHAP/jlmSZQI/dnrYTT0ZtZA0k3sCaaOApWmno4Jm1+p
+QzxBJyVXC/7em3D/Wb3B4XpQKnkWOGz3XtEf4LNPhrW1n6nLFOLctprGwnlZihBp
+tmidEvvFKCa5exv4WOVyat5jLttNJ6o4O0BJHmUJG/wAVSjfWi2KgVXZEnz/wts8
+KFXc06RCgavIATmlC5QqD87U5ezKJdY0HY/A8uT9aBJ3KFdzj5MnZOzr2RJcEtWU
+UE1HHxqJS7POQVMUWK/7nABUKjzpQg8Hn7VNom553Lf8yk+OLl0x7+bS/8tZltZ/
+zkIqzUmpPk1QSf5b4JOryJye0ZV60TtbI7juXi2VV41gcHxd7EMkF4PAMtHF/rNM
+n/sR4LLXPnQk71zqOScYpMBDQ0FikQ7UuUT35iJAX3u7mWYL0P4h3NBlPmRLg9W3
+k/g5KRBLJ2U9Ba+i3UIRva8tUGz/EluzOCUcSbIEMNkaNyt4ktO3PaIzAzdVdxYk
+IWV6NUj92vSBJvXinzIjyXTk9Tjfuf4hLo15C+1c9P0+XkpKzpvW1ycpIUVH9QSZ
+afC1e45EXSkD0AV+y6ihJf4PWddgGb3ZeWarcp2QL/ll3XoBdEGfxOQJ1Py2nfIS
+HxVrl5AxoEJ9q+4YO5xysAV4f+UFKvS4snJtRztOYBKM0/4pup41u4V8oGWLRUOC
+d/GitEdEZWJpYW4gQXJjaGl2ZSBBdXRvbWF0aWMgU2lnbmluZyBLZXkgKDkvc3Ry
+ZXRjaCkgPGZ0cG1hc3RlckBkZWJpYW4ub3JnPokCVAQTAQoAPhYhBOHPIN3/5Lie
+gCZY8eCxGJT2auyYBQJZIzBOAhsDBQkPCZwABQsJCAcDBRUKCQgLBRYCAwEAAh4B
+AheAAAoJEOCxGJT2auyYKFoP/R5ijjBRlLpClTvhk5p1pE/cJbMAHd1Y7x09iSN3
+nT222tx4Zk3wVnP/1puJNkOxW7btMuUNz6Y4DolLpAa71hq3NOsTGz+5PL8ZFBoi
+lIN2iOpfzqIFLASM0Pz6X+twV3ZyE1PZmfzLAu8OWm4kt1v3qJVtWN/5dHbjTqMt
+vUc28VX1di51zWTs+3b/SDC+KN98i9W64JUiHPcLL6b2Y44fDszDDVVExwtPrPk0
+VU+et4/uWmhcdEIEb91MIEsLAUJIBqcGTZU7Gymxupa3vApT6UUxfNKkVCGDN5dk
+zFKkS6p2NEQjtIPNAheBwUfHqSDeN+EW4IuQxHZ92o+XGFMHqU29Vy81sPkGvKkG
+EIL12iMpW9hDTbjO/+v695o3tVo/h1b0NSZP3Jk4I3iDBpAcUEYarxoOung2K1fC
+QYH7R+7hy3lnRP36s9za6rEbik0c4XRvyYaYq7npGEq4CqhcKgRhZqVcy2Zmymcw
+MqR1wLSxEmbREQZfBCFh5zpVC+kmRHfXCmZyAfDwLgGuMDVL7piCW5DqpC04Ks7M
+Uj/r1O5hyMEjIzcdATVBMNJmdOPw7d0vqgBUizj0Y/e8RhmY8mkmy1zoI1HU7JfF
+eKNnK/I2KYUop0qV0+bEFcu0RiEFVMP5cw4L2QAr1Y39XJNFU3v7IujRZXkxLn+H
+6l4HiQJVBBABCAA/FiEE+/q9tUG13JVb2bpu2xbPW7ElJcQFAlkknnUhGmh0dHA6
+Ly9ncGcuZ2FubmVmZi5kZS9wb2xpY3kudHh0AAoJENsWz1uxJSXE0z8P/3wl5xqi
+wO8sHcMtPXRoOMGRBGlXN/GWbEuqOxaN4lVko+sqGTineW0nk6bx9zhTFDCXjEpK
+da6M8Tc7V/cQoEyrV7btFolrb1KPKl5cVTsxKbLSJO79VgN9CZdrv8xS1VsI6SW/
+7euwZmdjYCnOqs049uAxmeZU3HI/yjaOowhDDHAXRvzzbMTN5Y8aWqE1Sv/ndnb+
+qHDq0Xh6hX0iS+Szx7KIGDLsgPPPjvEfsfmXVhYrWPdB4KXIeOcISehblxxU9FCE
+JmArB0txQtW595m/Gn5ntVbiyHhrhNlGYT+6D1Fsw3q1l9kIzj8ro2/yRcZ/JRot
+w5j5bMbYatQGoxmaBr9AaHCyUmmQEwfQFqBDnOBrV2XwLlurIX3ZvkQQVy5e4ysp
+9K8lAd5X4k3sKOSca9HooIcK8szc48aUijHabzOzU459qrds5iX10q0L5It1FqLp
+obg2l3wLWU7XwAP6K7m6LcvSa+2QqJmh72SBLd6xPCQAdwwUgdfzjovxTpdQu+3u
+5NX+ud4uc+WP8bEG1oT//H9cQ6ocRKXS9iGYby7LF0ykY1MVBI8KfQ7UyLWe/wZ/
+HlPBT2tFQ+8HoB1ZmtzsukaJcTiDtOcQGrIfgEs+bbw7mFKIDjI8OKZpZRlm+UAy
+Vm4jG/OiHoxOcr29mYCUwAzLRpavE+L2/koGiQIzBBABCgAdFiEEgOl28UpQikjp
+yj/pvDciUsoc+WQFAlkkgYkACgkQvDciUsoc+WQChQ/7BgfCpOAN2mmrSToaMY5C
+UVsxw6GVa68gDJA6A1rFXq3cqI5KIj5lNZ+NQi5a9hUu/Ll0m5TN7bZQ8+wxre1U
+GY1EnIUb1MFsL7r43dvYOifwV0jNci7+wfvU7slJWfwRlO+q9pwxseBRnGsxLgnf
+p6ZK/VqzjMUBXzAdMxwqacaJITsgHHGqActsuTGlasOafTxSvWDjIM9O8+maOzAq
+sTa9EXGQhASuzAnDaaW6L7etM6Icm//7cMz8oVnTPKIrqYsHTypIju5XXqHa6Y1D
+jZlFcQe7aFbgyBufe4hNtcUHJxXpJHThmZVjJA0t8ofZ8tPWScRDrphMTPfGzVZS
+TPUKn+WbkD7w9H7fjQcaCH6YKoJx3tIYzLuDStS/+SLqF45eJp5Miws7AYJCZ2u6
+vJ/8kDVByVPW4Xlq+nmi2RPG7Ym6NcmjG6FUFNUs4PPPfVn7cdLLcnNNriV8hyOJ
+T+NnXISSLo20F9buHMl28YqBb7sXmM71lr4kbjNKi0IWUOb+uZcgzMnJPjegR0hT
+GWbN5TmZnQ0lxYU2gr+t9F5DewTfMZMqE70T5eNfSyfr9iCEt8pp6GsjQlFglYZr
+30bcoLI8IYvS5VOvHAtWrOe35UgLXT8iB0pdCDcVbdA4ZaUaSR6hH26RZgPu4dRx
+9flHYtovRX1rDB9Ujc2d3JuJAhwEEAEIAAYFAlkl7L0ACgkQEbTl/xWw/YJo3BAA
+jRFiSZPG8SH2QQ1XWF0RREv/yWO95HkZdTHY/yDNfB94YLVCSqWDfO7QepCE2SUp
+4+eBdKUSUk6sICQL5gQ3D6PpSLMPaiJ9QoUi7JU6pT9xlrdFIfwC/zZypsfDQ8Gb
+L0xZPuXEurcR6YArCFHxtACKSxcUBqvpb2YL9fOEQqVzq90yWxQYsX+xlOpXAXXe
+ITwbjgT0E6izN0ucYthhvBM0nw3Ma+v1C4o590MzAFefKaA8kQ2xrO/NIQVwD4qI
+MQh+Cshq7UZXM8LRa3gxaMvglMKeeyFHXPP1V+AKsQ5KmPlzYKFe+Fam85FZOF8i
+0OrlYcuJ6ZCSXFY9Yfr4GFrkLNsyWfSdv20JVi5U5LWJj4kArw8vc09zVxnpw5IK
+4TNxhg68Pho5/XES4upBQkWAzukwOKUVjzCaZkj9Kbos7MO5D4w9DZjGD5sosob/
+aLPznRqrhGX7KIVeqUDn5gavtIjk6mZBMpdDGi9GQ6ObuHUnDKyf0K4gYQ40NVGD
+e1KidJmRoLgdWph2NNP1tuLQcq6dzCdC5Oryu0yCLFXnxHURkIDTT6mKCtJ6rEsk
+O+s6+3yOB2FXv+oF1L/rUzv+dZsvKQR7T9odOITuQ/LGs9whGTG0sqpbCjyhCwt7
+2xy95fIpPdQ1Uhzcu9N/XZPRYY5IYR0NUDEUen9QAHWJAhwEEwEKAAYFAlkmhFEA
+CgkQdjjQRCuQ0BAjWxAAjIMwo5CFvImdmyiSfDLPezHLFL49FbLGIENr6E0xcAKo
+kPj5s3mCZ0dbCV32yrMBBIllHNrJ1dnv3+VQAwJFQNaTKZbej15zUL5RvBxZlaN5
+RNlf/vYD9Llm0fWiwMXpm0ep2ID2T93i1wGyYt1FnlQ58fO2Qye3h1Kp4qAQjDMR
+k2jjePqwx06QkC9+R21XK78RezgmtVb9BPTVNnUazzREcq1/mVfratAnlR+Arh63
+80E63Glwc9vNqzkuYA1ilTodzPCXk9vEA2gD31L1gCu3YP0kqe5aHB1R6y1cFvQz
+0Il/P4lyMBm3eTWZ09961Eopl0kLMPFFZkGw2ev4OB1wa0IAdugBTpCqc6lx/CY8
+mt/s6mEVxvzI4ljNgKPyyLaBZUOY0gtEgwmpE63njMWmuFxDOls7WuP45WEuRoOB
+OJkwtYNNpaghN2K/qWEgLtU76Nq64DGkjFd8xVdEccgmYxquQtrXEKj+2E5G8NOx
+tZeH0HrVcOfXHTMNx9UoZRP00VSycctkDwt0NBrDqA+o0Djkdql01YLUFOmOYe+U
+Z7vxNZIfQkGr2ynnAiqIchMuoz4/IUBLJ0HKasEf62NYluPrcbh2giTTYKtDkZqA
+eFB6lLxyTiZ3vDTE5a9lPrKt/p1JBhW5/S2BHWJjDMDO9ut4a8MWfw84u2ZwNuOJ
+AhwEEwEKAAYFAlkmhVkACgkQnW2Pa8hXyQagAxAAvhC1r8xGL31TWdusrNWzh7jD
+h1qWOMY/cvWmU5Jj10OG2O9oBa7hhm8g/bj8a3rVPEFPwdzJQNEG1MKinVkRjgTP
+ST9QHNuUP2sPtVsq/Y5HxFV8prCKXZ5hiVBLgORpSLF/kUh54dGhiFjycUoTFn0g
+MkaNArvkAGWpqjFgeQxW+Y15DHj4c1EwcSIKrcpDMyVqlZD96bbkLL7kTQ4zCMlJ
+irezEANgEXUYz0RD4NcWGHaT+GFVJfI+Mq4P17FltpHZyTtWbBmkzvJ4y6tbvxQt
+mKpDR4z88nstjCSXDjU4nOZL7Bifoi8ztV4uLzJ00dC6ivFmTCQyCqXCHPMvT3dj
+9Byr+cMWBGSfM198/oUh++eYW8dp0wjNtIrnJaqnLICzvBg5OucxzRVa4ZMPPx9+
+4jYjdsNsYg+oiZE5ljW1Ig8CBcCyVjNSUBDrRbb9vp1up/ByC3oxD8Uy3wETc7C7
+AMJ8H+RH/6J+HrE3im0HB22XiR4TtKgOuLQxGVO+aXEhdGdxFdWZUDdulC+feWc8
+acVkRvlIYF2Bfxs1Ecee/BkP7++kWZJ9o9Nl1HEpv+spDoxpzL4VRNF3U84InaCb
+wX17GLuVj07bk06ag44ZHmXwM/GSRn4ITwEVSKKoBCcvJGnRROA0n1a5+v7XSMvT
+9Q0gJj1rzlA9VNgS7Pi5Ag0EWSMwTgEQAMkD4hfHi8rZYM4I8V+vJp8feW93+Oiq
+caVzQygYKs+/dbr9favoHttNxOF8eBMIwkQgQlBIYehcHAnhnhuCP6s16tnM2lF6
+52s4c7DV4Fodo53Q+sqzPth/dH76NOeUAzSj3KPfD9YblrB+J2Z14PP2ObfvO8k/
+SghaCEPZ8geq5DZjTAs1YU5xYlawVJCvoQnb2TKEXbUrMOqAX/ysOwk3DrIo78h1
+HvGShBuHf08gOtv8Fm2pKdkPHzr/QI0/atFoRn793W74n4Qc2mwrDUUQds7oZ1IX
+tXeIHlVV8Z13no4qA7FRNL40/vBfKuPFAPZGt17k946L2LL5Lxu43eVFIbW2jAod
+tV3NxAYu5JAYIYOawZO0p9OZJdZ8sTg5KOhBfyfO4pFyc/FaOhxv3SVqhRZAuHTe
+6OSKLUMcV/7Yrb1hClSXtZcuTEZfaqDksoGg/QDHuYcnAtD7NWEEgEfuL2KYXudw
+GIjRQSUUMWv4Fw+BT50f3PHSH+lns/vQXxEaKDiGacKOC+FEHs9jTvWl9+phyzCK
+4CfTgZagW6gsvfPc/0fg2a/TaTzj4Y48KbENcBc+x2IwowRZAtSI+LsgH8puKMbQ
+7oRRnVdt2LqkWtzBoTcc4r5r4m+eGZ8/qsB1n69bS+MNWZtusaBeaQHGFv4d9rIC
+0QOzwZLX5EE1ABEBAAGJBHIEGAEKACYWIQThzyDd/+S4noAmWPHgsRiU9mrsmAUC
+WSMwTgIbAgUJDwmcAAJACRDgsRiU9mrsmMF0IAQZAQoAHRYhBBbpCz/fZe3jqn8y
+PATucje31FPsBQJZIzBOAAoJEATucje31FPscu8P/0yRsvlQjY0q600VkxD8KciV
+lvC7+xyrMBIal1ILjIpPlMeuWWpPE+Ffnry91m1GcAlXTfUf7NhZkqWfsyygqUGy
+BJ7ydPox8rA4UXW3J31Em4Lgc0JwUFD/bFqz/iVVYCnaWYcoX/68CwaWRCjt67v3
+3vNCw97t/W40430HsmK+AC6HS6vV09KeYk5fhrORFBNGrZT7Bm7lsWGgaz+7pNGk
+GE6k+K3sS6boGga1EGLA6YbaOEaIS6QJtpm4VEleFksj3JHK1TMN/QCnSGdy0/0b
+qkF/TDcfqG9c1vCp9knWkCKQmi/nv2ay2v6ZAcICAY7sjibicmBd06uvfU1bhKB7
+nYC/i77l+IGKX5R/WvTrdb+J5qQhODF70Nr6HO6EsI4E4X541GRLgGMZYKbiu0Tb
+uo1B7PSOrkddGUwxXjDBXM2ClcgPi8nL1irpleSAu89/B+Y+pr5IshaVmIP4+jCl
+GDG18/kPryOFk0ACszjlX7eFMTFPUX0gl7qDRfVE1jKzPxf75gLoeIylYChMd17b
+uQo8RsknkcvNgifdL4sRcbxOvhpERONK1MwR88K8C0GqJ61cIRMv8odMMpescww0
+5ECOpE+kl9PJcREnm8SVkclraWcQVEwGOkHtx5BsPqZplUEAIcJNXuvXm9kFkaVS
+2SRvQyklI6/NQQZzK8SRwacQAIGFHV3eOtC0rdrnmnh2XCDeEN5iPCvVG723jIc2
+6aDR4a47zr9507TBLUxMPJQ6mB7imsEcWHfR48zARq8jMSj7ahfhIa1ixEksc943
+CxLrjPAWfAnog/2MYJdUw/nBjU4dqb53ssxD/F/c3LB+z/nCEaO2UgH2Kekh0KyV
+KgwV0N8XcTB0UmGcH9J2DZ5/ZXRc2XiYWIDoJHs8thGxwsIYXEhYsgBwGu9Kil4t
+LzFt4sluY0kvfrDHu+oYfcYBh5V7q6AQYBh8ujjAhKZUmlKtgay6IHkR65m8QI49
+ITdTQW+Y+orphcsdbvCm4IhXPgykLySouskwr7RuhPka0hKwDUt+0MHbBmAhfYnF
+JC5o23tmgAq8l2WZbp6/uFZ+4E9UmvAI0RvQM/B3AxQBOCBOryGeaBwkJcsACm8V
+ADWm+/OWK78kuval45wGQl9+TqqjRuwA9ESEUMgZnc33rVPM3h6gR8Rv/M77AjyM
+88rGBLCWr7wNY4e3U34tH8jMFOMy9vN6l3kOR5/EFoXJJGehzE+xCyyeicY2HsJ5
+t5R/R6w23vgNqf6eBRQuDtym2rSuuiaCnvKEF3S9ng+phmm/eZadG7xOjERRPqqt
+TP+zge55Q1B+P1HmllKlR6YLFyRuKOO1ZOVh4Ae2MS4oZybMQsTifjjiQ/8W8KJq
+k5Bh
+=3qWJ
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/fill-values
new file mode 100644
index 0000000..9983ac1
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: upstream-key-bloated
+Skeleton: upload-non-native
+Description: Check if public upstream signing key contains extra signatures
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/desc
new file mode 100644
index 0000000..9c407e3
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/desc
@@ -0,0 +1,5 @@
+Testname: upstream-key-bloated
+Test-Against:
+ public-upstream-key-unusable
+ public-upstream-keys-in-multiple-locations
+Check: debian/upstream/signing-key
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/hints
new file mode 100644
index 0000000..9c5238e
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-bloated/eval/hints
@@ -0,0 +1 @@
+upstream-key-bloated (source): public-upstream-key-not-minimal has 5 extra signature(s) for keyid E0B11894F66AEC98 [debian/upstream/signing-key.asc]
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/debian/upstream/signing-key.asc
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/fill-values
new file mode 100644
index 0000000..0d90cd0
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: upstream-key-empty
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Test with an empty public upstream signing key (requires source format 3.0)
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/desc
new file mode 100644
index 0000000..4e58f08
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-key-empty
+Check: debian/upstream/signing-key
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/hints
new file mode 100644
index 0000000..b39ccf7
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-empty/eval/hints
@@ -0,0 +1 @@
+upstream-key-empty (source): public-upstream-key-unusable cannot be processed [debian/upstream/signing-key.asc]
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..25cdc6a
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,101 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFkjME4BEACatcbzE9EaIKMmiS3OmcrooZZUI4pGtJcFqCNBOP3qvxUEq9Tk
+4XPY8EARDGdwy2rMc12ywoc5FMzNwXiC3RpUNHnNhY+zau18q9CQx8UR02NDFWQq
+AwaDSF4WU1GBVBMWgtxfIwAQGl/qOr+aSVtJCnEOTA/YiZPNw/wpA7r2g6EHYcce
+a5srr7F15a6OxzDdPXlfoJuoSXMZUHpJIqG0UOo7NPkxPGRoHO2yGPS1DWKy3egG
+xm718DwaIWee+mfJrcqT0ZFH4n5po1BJVj+8TcqE4YlkN/z4p0zI/XAxNCR2wGV2
+6cCQ8laEgwG33rPp+N3G/FeJchYTFvL7zDtdYKbBPVeaJh2kROnqbVVN5kZBVEXB
+QNbXKuK6/TPiQeI+8anA9WflI19lzkzl29L7hsM9ornk7+wtu9P2hu3eEUgjjBli
+Ujisw8s0aTPB5QsMCjSownwZ0ucqj+07nYVsPU2wK8x6A7p6Cg2SCPnjbX8jUb3Z
+wyn0yi4SWceW9a+LW6wdGarMGbu+Lm6in8pK93u7mE/D4AskUVz1yLyiNO9WBXPq
+GyTocqXKXTutHKhhSwY9CyEw1+SRzXXyHPmRunRULTgZHLOaydK6ekzBOe1Yp9Zk
+hLvon6fgOhJTsokv27QCSw8ILbQPGF9qJWFQfYZhT4QCufmPaFgBpJOdewARAQAB
+iQJOBB8BCgA4FiEE4c8g3f/kuJ6AJljx4LEYlPZq7JgFAlkjMMkXDIABgOl28UpQ
+ikjpyj/pvDciUsoc+WQCBwAACgkQ4LEYlPZq7JiCcw/+NxzyntWMM/b/eIMedzZK
+Zyq7Mo6vgFxT57wAloMtLu0WS9oETTH/+/9+fHPmkYxCX1HTNKpdY2KbjiZC/gAY
+vJ8iGWredwIls2UyW4fegzRLNvWLZmUBbLg0WaTIQ9JZwa2Rw/q6Z0pe0tfb44oX
+lpps0WA/OZCWXYVO2rhOzoiQulqdmHgwdcLA29BnpqBY1R8/LMDsfPLnJu7AFqgM
+CQpnjIGRH6ZxF2TNUSdljUbIOultEeIvxtxosF1u0r20mg46aaKDpr0ANiR/Ojaj
+YoeHZc39fyubSrhIyQuk4rDisrJod63MJ9x9upAc9H3qz71QjpwpVXPDxereWULO
+17qN3hjjZd23CBdRv8HjRKQoFagUnxlrat1t+/yJCENzX6eX8wBs0vVCSmbtbSp7
+y+0BK4fyjDKCdiyKh1TiAnQ1Po/xICGr4Sa6Wohq2TeWXz4VlRnaQeCIwa4Kk6T/
+3VTQbNxn7Uiy9ec8aR+1YMGUBDG/k3s6K1PWLdJtSVgao8MkQYeKcQk/sgGSFPh8
+SkTy7CnSjK/gQP8NC5fFDWpatGpnDr9qsQwzMnUVYWNZQMQ+LJHPnXRyusr3M+Gh
+4muVW1wmyjNLhtEYjJJnbv9bVVv2HFVXOWGiXY4hnj01xkHf3885Qq5ORWl1FMnU
+lcqUcFsB6a1CCPGxNTJQhgKJAk4EHwEKADgWIQThzyDd/+S4noAmWPHgsRiU9mrs
+mAUCWSMwyRcMgAH7+r21QbXclVvZum7bFs9bsSUlxAIHAAAKCRDgsRiU9mrsmK2H
+D/9frYP6KRecLNMzLJGe6MB/1DbqIud1/kzd/jHRo3e4Dz8cls29N03HskLE4jTf
+BXKAhUmRI52aMCioY/K03rZLaR++/GMIdnF7O4Ks7P203J4/CudmXQvz3Rby22lC
+RCp3Wsx2DqFgpc1V5SjmdDxzEs3fwKJ0B8YOMyibyUaLfwaxRfiTsWmRF192WzCM
+/B1tmJDLIqwq/xxzxmiqzrxBWq3JIxH1PzrGbWvAE0gfBJHgw/2HHO4PAG9Lj+AV
+HHPV/9xhXdbF/KnnKUGtd9lssNleWlc5LeM0ix2pU/QrZx7c+CBW+142jQcZ58X6
+QvHTKBkImI7y3kMCUOs+UbxKnFsRBRduMLvIpXJVXukV3QvRn+9riITPIcviF4ni
+F6V2NQ+ONrvMOK2s6VdfgMS7c4Azuyt4SJSEzBhHu+VTVnMZCBiKvZtRL5XX85ZF
+DDkN62Bwa+F36lTiOBWOecSQykCyOKcnn0jKrSgDOk08qE7Nzl2SPdlpza0/bk2u
+6i8o3mrmdO02OqC9vJum6M4Pn2HHrkPzAtSs11E7ogcZghPxnGCekGQNekHx9DKM
+mv8W+SZf4b1KD1EKECeNLZ0QHQMjU3AYBav+Mq9IXIlwFZL85BYLUAWfrCnqf/gV
+CTiy9yKdQ4WIr9XR+zywDigAZqJ5PxwBh1+phrkoWUfsLokCTgQfAQoAOBYhBOHP
+IN3/5LiegCZY8eCxGJT2auyYBQJZIzDJFwyAATCZEb6pZtBhMFMEVxG05f8VsP2C
+AgcAAAoJEOCxGJT2auyYWHAP/jlmSZQI/dnrYTT0ZtZA0k3sCaaOApWmno4Jm1+p
+QzxBJyVXC/7em3D/Wb3B4XpQKnkWOGz3XtEf4LNPhrW1n6nLFOLctprGwnlZihBp
+tmidEvvFKCa5exv4WOVyat5jLttNJ6o4O0BJHmUJG/wAVSjfWi2KgVXZEnz/wts8
+KFXc06RCgavIATmlC5QqD87U5ezKJdY0HY/A8uT9aBJ3KFdzj5MnZOzr2RJcEtWU
+UE1HHxqJS7POQVMUWK/7nABUKjzpQg8Hn7VNom553Lf8yk+OLl0x7+bS/8tZltZ/
+zkIqzUmpPk1QSf5b4JOryJye0ZV60TtbI7juXi2VV41gcHxd7EMkF4PAMtHF/rNM
+n/sR4LLXPnQk71zqOScYpMBDQ0FikQ7UuUT35iJAX3u7mWYL0P4h3NBlPmRLg9W3
+k/g5KRBLJ2U9Ba+i3UIRva8tUGz/EluzOCUcSbIEMNkaNyt4ktO3PaIzAzdVdxYk
+IWV6NUj92vSBJvXinzIjyXTk9Tjfuf4hLo15C+1c9P0+XkpKzpvW1ycpIUVH9QSZ
+afC1e45EXSkD0AV+y6ihJf4PWddgGb3ZeWarcp2QL/ll3XoBdEGfxOQJ1Py2nfIS
+HxVrl5AxoEJ9q+4YO5xysAV4f+UFKvS4snJtRztOYBKM0/4pup41u4V8oGWLRUOC
+d/GitEdEZWJpYW4gQXJjaGl2ZSBBdXRvbWF0aWMgU2lnbmluZyBLZXkgKDkvc3Ry
+ZXRjaCkgPGZ0cG1hc3RlckBkZWJpYW4ub3JnPokCVAQTAQoAPhYhBOHPIN3/5Lie
+gCZY8eCxGJT2auyYBQJZIzBOAhsDBQkPCZwABQsJCAcDBRUKCQgLBRYCAwEAAh4B
+AheAAAoJEOCxGJT2auyYKFoP/R5ijjBRlLpClTvhk5p1pE/cJbMAHd1Y7x09iSN3
+nT222tx4Zk3wVnP/1puJNkOxW7btMuUNz6Y4DolLpAa71hq3NOsTGz+5PL8ZFBoi
+lIN2iOpfzqIFLASM0Pz6X+twV3ZyE1PZmfzLAu8OWm4kt1v3qJVtWN/5dHbjTqMt
+vUc28VX1di51zWTs+3b/SDC+KN98i9W64JUiHPcLL6b2Y44fDszDDVVExwtPrPk0
+VU+et4/uWmhcdEIEb91MIEsLAUJIBqcGTZU7Gymxupa3vApT6UUxfNKkVCGDN5dk
+zFKkS6p2NEQjtIPNAheBwUfHqSDeN+EW4IuQxHZ92o+XGFMHqU29Vy81sPkGvKkG
+EIL12iMpW9hDTbjO/+v695o3tVo/h1b0NSZP3Jk4I3iDBpAcUEYarxoOung2K1fC
+QYH7R+7hy3lnRP36s9za6rEbik0c4XRvyYaYq7npGEq4CqhcKgRhZqVcy2Zmymcw
+MqR1wLSxEmbREQZfBCFh5zpVC+kmRHfXCmZyAfDwLgGuMDVL7piCW5DqpC04Ks7M
+Uj/r1O5hyMEjIzcdATVBMNJmdOPw7d0vqgBUizj0Y/e8RhmY8mkmy1zoI1HU7JfF
+eKNnK/I2KYUop0qV0+bEFcu0RiEFVMP5cw4L2QAr1Y39XJNFU3v7IujRZXkxLn+H
+6l4HuQINBFkjME4BEADJA+IXx4vK2WDOCPFfryafH3lvd/joqnGlc0MoGCrPv3W6
+/X2r6B7bTcThfHgTCMJEIEJQSGHoXBwJ4Z4bgj+rNerZzNpReudrOHOw1eBaHaOd
+0PrKsz7Yf3R++jTnlAM0o9yj3w/WG5awfidmdeDz9jm37zvJP0oIWghD2fIHquQ2
+Y0wLNWFOcWJWsFSQr6EJ29kyhF21KzDqgF/8rDsJNw6yKO/IdR7xkoQbh39PIDrb
+/BZtqSnZDx86/0CNP2rRaEZ+/d1u+J+EHNpsKw1FEHbO6GdSF7V3iB5VVfGdd56O
+KgOxUTS+NP7wXyrjxQD2Rrde5PeOi9iy+S8buN3lRSG1towKHbVdzcQGLuSQGCGD
+msGTtKfTmSXWfLE4OSjoQX8nzuKRcnPxWjocb90laoUWQLh03ujkii1DHFf+2K29
+YQpUl7WXLkxGX2qg5LKBoP0Ax7mHJwLQ+zVhBIBH7i9imF7ncBiI0UElFDFr+BcP
+gU+dH9zx0h/pZ7P70F8RGig4hmnCjgvhRB7PY071pffqYcswiuAn04GWoFuoLL3z
+3P9H4Nmv02k84+GOPCmxDXAXPsdiMKMEWQLUiPi7IB/KbijG0O6EUZ1Xbdi6pFrc
+waE3HOK+a+JvnhmfP6rAdZ+vW0vjDVmbbrGgXmkBxhb+HfayAtEDs8GS1+RBNQAR
+AQABiQRyBBgBCgAmFiEE4c8g3f/kuJ6AJljx4LEYlPZq7JgFAlkjME4CGwIFCQ8J
+nAACQAkQ4LEYlPZq7JjBdCAEGQEKAB0WIQQW6Qs/32Xt46p/MjwE7nI3t9RT7AUC
+WSMwTgAKCRAE7nI3t9RT7HLvD/9MkbL5UI2NKutNFZMQ/CnIlZbwu/scqzASGpdS
+C4yKT5THrllqTxPhX568vdZtRnAJV031H+zYWZKln7MsoKlBsgSe8nT6MfKwOFF1
+tyd9RJuC4HNCcFBQ/2xas/4lVWAp2lmHKF/+vAsGlkQo7eu7997zQsPe7f1uNON9
+B7JivgAuh0ur1dPSnmJOX4azkRQTRq2U+wZu5bFhoGs/u6TRpBhOpPit7Eum6BoG
+tRBiwOmG2jhGiEukCbaZuFRJXhZLI9yRytUzDf0Ap0hnctP9G6pBf0w3H6hvXNbw
+qfZJ1pAikJov579mstr+mQHCAgGO7I4m4nJgXdOrr31NW4Sge52Av4u+5fiBil+U
+f1r063W/ieakITgxe9Da+hzuhLCOBOF+eNRkS4BjGWCm4rtE27qNQez0jq5HXRlM
+MV4wwVzNgpXID4vJy9Yq6ZXkgLvPfwfmPqa+SLIWlZiD+PowpRgxtfP5D68jhZNA
+ArM45V+3hTExT1F9IJe6g0X1RNYysz8X++YC6HiMpWAoTHde27kKPEbJJ5HLzYIn
+3S+LEXG8Tr4aRETjStTMEfPCvAtBqietXCETL/KHTDKXrHMMNORAjqRPpJfTyXER
+J5vElZHJa2lnEFRMBjpB7ceQbD6maZVBACHCTV7r15vZBZGlUtkkb0MpJSOvzUEG
+cyvEkcGnEACBhR1d3jrQtK3a55p4dlwg3hDeYjwr1Ru9t4yHNumg0eGuO86/edO0
+wS1MTDyUOpge4prBHFh30ePMwEavIzEo+2oX4SGtYsRJLHPeNwsS64zwFnwJ6IP9
+jGCXVMP5wY1OHam+d7LMQ/xf3Nywfs/5whGjtlIB9inpIdCslSoMFdDfF3EwdFJh
+nB/Sdg2ef2V0XNl4mFiA6CR7PLYRscLCGFxIWLIAcBrvSopeLS8xbeLJbmNJL36w
+x7vqGH3GAYeVe6ugEGAYfLo4wISmVJpSrYGsuiB5EeuZvECOPSE3U0FvmPqK6YXL
+HW7wpuCIVz4MpC8kqLrJMK+0boT5GtISsA1LftDB2wZgIX2JxSQuaNt7ZoAKvJdl
+mW6ev7hWfuBPVJrwCNEb0DPwdwMUATggTq8hnmgcJCXLAApvFQA1pvvzliu/JLr2
+peOcBkJffk6qo0bsAPREhFDIGZ3N961TzN4eoEfEb/zO+wI8jPPKxgSwlq+8DWOH
+t1N+LR/IzBTjMvbzepd5DkefxBaFySRnocxPsQssnonGNh7CebeUf0esNt74Dan+
+ngUULg7cptq0rromgp7yhBd0vZ4PqYZpv3mWnRu8ToxEUT6qrUz/s4HueUNQfj9R
+5pZSpUemCxckbijjtWTlYeAHtjEuKGcmzELE4n444kP/FvCiapOQYQ==
+=Gbbb
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/fill-values
new file mode 100644
index 0000000..cd99595
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: upstream-key-minimal
+Skeleton: upload-non-native
+Description: Test with a minimal public upstream signing key (false positive)
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/desc
new file mode 100644
index 0000000..87e5144
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/desc
@@ -0,0 +1,4 @@
+Testname: upstream-key-minimal
+Check: debian/upstream/signing-key
+Test-Against:
+ public-upstream-key-not-minimal
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-minimal/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream-signing-key.pgp b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream-signing-key.pgp
new file mode 100644
index 0000000..d83f52c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream-signing-key.pgp
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFpEMFgBEADNYEVhITIZ/rVECuLWxDJUk4rV+v6IfJCxJzuXRfqbjkdLNsCD
+P83FOdvcxNQSrWPdSCgV1tDeDc18pNmfWDnu90zrLRipR1u7ln/ajTpx0RI7tHaO
+SCIJfo42iw7firz9IoegqZaH8LKCh63EaXxLD98MgRA9fcBTEaBSD+Wxh8yYL/5b
+bjdUu2FNNEi8f0POBAB3XInu80mqkEeVYPijd2T8Tc5xaxD90OBuuNGSiqKrJ+lB
+9TSxwr5E/9N+6fnCjrR4FVkZtyTELAdZm4CpQN26tinVolG1gDpMz5B27471oXPY
+9K92/UzTRllwuZ09pdBwpd4gu9mTXMLwOJ/S/+LJeSfCmby7QZiM/61NpS5EyaYg
+h+m8YyTUtulFqpWd2HxttXz0ii5C01LKUrNPqlQrxmfrACJ1tHvcngVQm4wyqMHq
+Uw5LYJ8FM7eS3JPeHpHqFGpY1VKx3nZAZGx+1As1ClvT7Og1KyuVY59w8qNaeJ8C
+eA9XrwGVbMm9PiTP+fyBykMaYpf5aGucH+GeBtkvmpyOyXqf7zrOqyRvY0QaMgt1
+n3jXcD7AZKHCp0wY6LYVa/sKqrDJtxoloBA6kV2Ui3kClOWmlfvm+i1Ecg7vCG8d
+QrJtZxo1Wu54dIr+g0qMFjlBA69OFYRXPzoaWFW1BKtNAYFoej9vW/f+0wARAQAB
+tDtMaW50aWFuIFRlc3QgVXBzdHJlYW0gS2V5IChXb3JraW5nLCBObyBFeHBpcmF0
+aW9uLCBNaW5pbWFsKYkCTgQTAQoAOBYhBPr6VG+KNaSTu27AqFtc4nOV5lb+BQJa
+RDBYAhsDBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEFtc4nOV5lb+B3kQAMMm
+umaOq12REmLdKWMN7GOsxzV6fTF5xBjTgKfY9DCBeNV7tSuJGpGT9MaxRD5Yu/1p
+PDMGC9TkDxOEULBucmp7M//3FCuSnGQFBcObHNXY9FmLQ5MZJ32QUi8KLNIcDjuF
+AKMEYJ5AT50pBsGyLVGXL27HWndNV7jMeIX64gIN5chPKMHqCn0g/wTTaPY/kkEs
+MYirGmBQ83cIAv/1nywtIPeBnj+02Vu3B1hJIZYgmDQZwjZdd7HTxsVW0LAZEXs5
+gtWArfHO3zNKy6WkVE+xhNgZuVO3EyV46JW0bQ2RC7yY70/qFxX71co6p2+VaZgf
+198QtRddq9cKaSe68BnZesIp9YnT3xJVYeL6IrrMYNIZxlslL4/b+gKU3epHyFes
+tQP1tqkhnmC+Bxds6kx0ngPVfTfWM4Ruaeot51BuenZu82S1B3FB5B0qruCNyKre
+nl53nPaNkOERPOF654AXoIODTgnyaocCaQTPztOYm52X8u9qogf9wf1eEA9EZIBI
+WSbn3eCohN6qWvsdC0MMRDu0HB4S1QUyyOceNflXePg6SPvJSPHuOG/5DShcN6ah
+mgVMH44ecAWsh/8Uj1+Z39Ea07nfE3lCU/WR+DXJb56WaQChXN7AKITrNRd/Q61X
+jqrB6jWRSeVBKDidsFwI7oALdSgONE/ZEy+M4j76uQINBFpEMFgBEADCWJECQ6K1
+HgH7OwX7eY8ggEdCOYI/cTGx9rfzdqx67tc7fsF63BrO+nTHylcwXi9IAs695zvp
+miCnCu1EUVjfM+nD52kocVEhzFc/lcCq6d9ac7H9ItJgf3Qc2HpwcqvsNUTWPDMU
+VjQ8ciZ57qq601kIjVPuHjKRY96K9iHxUeVGh2n74JLYZL5IKO08WtQgPmPVLFDX
+X2iZXnZdW/X4xTYB+/+V/D1LyUIP3X7CzBNzJuYjP3vGDH3h4ulLWnDSmxKs6Aep
+a0sKu6+YD14/xXOi+buc0m6ghP7WePl9gYi6XePLdVPeLC9aiDi1tCWEVbbsinhw
+ODxLwndXCGUc+AVySdUrUMuRchNRI6Z5PW/a/RsuVmyORg1RSuFGLeJQZj1pAw6x
+WjxgioqoqydECIx4gCwGO/0GNZCfe5n11vuMEZ7SKbnrf5d58EQXOgV+yZumRKkz
+OmdKICjql6w5CealrvP/si2kfD3oVwqBeuM0aM8HmWTfrdESWrd8xqAxBlcDsIun
+mpsJ6obGN2mOaMFmOljukdzDFgMJMIrcS4UcGNzyQWUbz6JOSfPq96RkrTVsXMKy
+40Ygtwe63PS9lXGT2ojmiV193UrGJqEUjuAL79KXWkxTRFxvFwck9qK5RAX2F1GQ
+4ELDAFSKr8t6IpiYiTXaA3OTJfxJMK191QARAQABiQI2BBgBCgAgFiEE+vpUb4o1
+pJO7bsCoW1zic5XmVv4FAlpEMFgCGwwACgkQW1zic5XmVv4VEA//dOFj60ktKKsl
+CgRdtnuo9Sdd7IjShic67qoT0gFZRiMATaryM4ifjAcl03rxzGk5MOsltHFJr5h+
+RmaudKhCyksd1nQ2dBpFgPHyxVTS5/k+wMelP9kPailqiGUA735SP5mO/28YOT8v
+Xa4rwnTn6s9Ga7+lMN4I7LKRo47uGG89Og381tHSkW8DjFuLTme3TQDysG2MGlSY
+vTPJmF7xPCuG3s8J5RIrVwWbN0orWen9YWT1923+0CAZG8M+7AFxU5xxCFIBRKMw
+2tw/ovjtE9czuT743LMPlUJRc1pveYjVhLY9xUMQsPO6j41pdIL2X7txFjQqzjFl
+hpIJviupVWlV0vSS0Q7nAtvLTsjhXSyQriKqmfdsdcxXBz7LGRxEi5l/9zuW5GMy
+kD5ikQ05li6wkBdQYLS3ZBYkrj94LpNEqNZE3sfX33Yc5cpE2Bc4Ga+MxYxQwrfz
+sNNSp8jdf2FyFvlvRkO8UUgsW5PPOuwthb05bx7dQGfKvqySpd0JLrhxw8G8odJh
+PGzl0ig4F8xEitMc0lms5yzQGvtpEvSYLUs+4EJaf/XN9nRS+4e+GciTmp9XUM/5
+EtKOKXVuhHyaizqfpF4VR0Tbg65HHE3zLJMr7XTUGC0Zr+bj0n/V177R0XgptY7Y
+jr6SfdNikIDjGYa+yuN6KGQsriza1aA=
+=CYsi
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..d83f52c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFpEMFgBEADNYEVhITIZ/rVECuLWxDJUk4rV+v6IfJCxJzuXRfqbjkdLNsCD
+P83FOdvcxNQSrWPdSCgV1tDeDc18pNmfWDnu90zrLRipR1u7ln/ajTpx0RI7tHaO
+SCIJfo42iw7firz9IoegqZaH8LKCh63EaXxLD98MgRA9fcBTEaBSD+Wxh8yYL/5b
+bjdUu2FNNEi8f0POBAB3XInu80mqkEeVYPijd2T8Tc5xaxD90OBuuNGSiqKrJ+lB
+9TSxwr5E/9N+6fnCjrR4FVkZtyTELAdZm4CpQN26tinVolG1gDpMz5B27471oXPY
+9K92/UzTRllwuZ09pdBwpd4gu9mTXMLwOJ/S/+LJeSfCmby7QZiM/61NpS5EyaYg
+h+m8YyTUtulFqpWd2HxttXz0ii5C01LKUrNPqlQrxmfrACJ1tHvcngVQm4wyqMHq
+Uw5LYJ8FM7eS3JPeHpHqFGpY1VKx3nZAZGx+1As1ClvT7Og1KyuVY59w8qNaeJ8C
+eA9XrwGVbMm9PiTP+fyBykMaYpf5aGucH+GeBtkvmpyOyXqf7zrOqyRvY0QaMgt1
+n3jXcD7AZKHCp0wY6LYVa/sKqrDJtxoloBA6kV2Ui3kClOWmlfvm+i1Ecg7vCG8d
+QrJtZxo1Wu54dIr+g0qMFjlBA69OFYRXPzoaWFW1BKtNAYFoej9vW/f+0wARAQAB
+tDtMaW50aWFuIFRlc3QgVXBzdHJlYW0gS2V5IChXb3JraW5nLCBObyBFeHBpcmF0
+aW9uLCBNaW5pbWFsKYkCTgQTAQoAOBYhBPr6VG+KNaSTu27AqFtc4nOV5lb+BQJa
+RDBYAhsDBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEFtc4nOV5lb+B3kQAMMm
+umaOq12REmLdKWMN7GOsxzV6fTF5xBjTgKfY9DCBeNV7tSuJGpGT9MaxRD5Yu/1p
+PDMGC9TkDxOEULBucmp7M//3FCuSnGQFBcObHNXY9FmLQ5MZJ32QUi8KLNIcDjuF
+AKMEYJ5AT50pBsGyLVGXL27HWndNV7jMeIX64gIN5chPKMHqCn0g/wTTaPY/kkEs
+MYirGmBQ83cIAv/1nywtIPeBnj+02Vu3B1hJIZYgmDQZwjZdd7HTxsVW0LAZEXs5
+gtWArfHO3zNKy6WkVE+xhNgZuVO3EyV46JW0bQ2RC7yY70/qFxX71co6p2+VaZgf
+198QtRddq9cKaSe68BnZesIp9YnT3xJVYeL6IrrMYNIZxlslL4/b+gKU3epHyFes
+tQP1tqkhnmC+Bxds6kx0ngPVfTfWM4Ruaeot51BuenZu82S1B3FB5B0qruCNyKre
+nl53nPaNkOERPOF654AXoIODTgnyaocCaQTPztOYm52X8u9qogf9wf1eEA9EZIBI
+WSbn3eCohN6qWvsdC0MMRDu0HB4S1QUyyOceNflXePg6SPvJSPHuOG/5DShcN6ah
+mgVMH44ecAWsh/8Uj1+Z39Ea07nfE3lCU/WR+DXJb56WaQChXN7AKITrNRd/Q61X
+jqrB6jWRSeVBKDidsFwI7oALdSgONE/ZEy+M4j76uQINBFpEMFgBEADCWJECQ6K1
+HgH7OwX7eY8ggEdCOYI/cTGx9rfzdqx67tc7fsF63BrO+nTHylcwXi9IAs695zvp
+miCnCu1EUVjfM+nD52kocVEhzFc/lcCq6d9ac7H9ItJgf3Qc2HpwcqvsNUTWPDMU
+VjQ8ciZ57qq601kIjVPuHjKRY96K9iHxUeVGh2n74JLYZL5IKO08WtQgPmPVLFDX
+X2iZXnZdW/X4xTYB+/+V/D1LyUIP3X7CzBNzJuYjP3vGDH3h4ulLWnDSmxKs6Aep
+a0sKu6+YD14/xXOi+buc0m6ghP7WePl9gYi6XePLdVPeLC9aiDi1tCWEVbbsinhw
+ODxLwndXCGUc+AVySdUrUMuRchNRI6Z5PW/a/RsuVmyORg1RSuFGLeJQZj1pAw6x
+WjxgioqoqydECIx4gCwGO/0GNZCfe5n11vuMEZ7SKbnrf5d58EQXOgV+yZumRKkz
+OmdKICjql6w5CealrvP/si2kfD3oVwqBeuM0aM8HmWTfrdESWrd8xqAxBlcDsIun
+mpsJ6obGN2mOaMFmOljukdzDFgMJMIrcS4UcGNzyQWUbz6JOSfPq96RkrTVsXMKy
+40Ygtwe63PS9lXGT2ojmiV193UrGJqEUjuAL79KXWkxTRFxvFwck9qK5RAX2F1GQ
+4ELDAFSKr8t6IpiYiTXaA3OTJfxJMK191QARAQABiQI2BBgBCgAgFiEE+vpUb4o1
+pJO7bsCoW1zic5XmVv4FAlpEMFgCGwwACgkQW1zic5XmVv4VEA//dOFj60ktKKsl
+CgRdtnuo9Sdd7IjShic67qoT0gFZRiMATaryM4ifjAcl03rxzGk5MOsltHFJr5h+
+RmaudKhCyksd1nQ2dBpFgPHyxVTS5/k+wMelP9kPailqiGUA735SP5mO/28YOT8v
+Xa4rwnTn6s9Ga7+lMN4I7LKRo47uGG89Og381tHSkW8DjFuLTme3TQDysG2MGlSY
+vTPJmF7xPCuG3s8J5RIrVwWbN0orWen9YWT1923+0CAZG8M+7AFxU5xxCFIBRKMw
+2tw/ovjtE9czuT743LMPlUJRc1pveYjVhLY9xUMQsPO6j41pdIL2X7txFjQqzjFl
+hpIJviupVWlV0vSS0Q7nAtvLTsjhXSyQriKqmfdsdcxXBz7LGRxEi5l/9zuW5GMy
+kD5ikQ05li6wkBdQYLS3ZBYkrj94LpNEqNZE3sfX33Yc5cpE2Bc4Ga+MxYxQwrfz
+sNNSp8jdf2FyFvlvRkO8UUgsW5PPOuwthb05bx7dQGfKvqySpd0JLrhxw8G8odJh
+PGzl0ig4F8xEitMc0lms5yzQGvtpEvSYLUs+4EJaf/XN9nRS+4e+GciTmp9XUM/5
+EtKOKXVuhHyaizqfpF4VR0Tbg65HHE3zLJMr7XTUGC0Zr+bj0n/V177R0XgptY7Y
+jr6SfdNikIDjGYa+yuN6KGQsriza1aA=
+=CYsi
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/watch b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/watch
new file mode 100644
index 0000000..8194d1c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/debian/watch
@@ -0,0 +1,5 @@
+version=4 \
+
+opts=\
+pgpsigurlmangle=s/project-$1\.tar\.gz/project-$1\.tar\.gz\.asc/,\
+ https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/fill-values
new file mode 100644
index 0000000..fd2f6c4
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: upstream-key-multiple-locations
+Skeleton: upload-non-native
+Description: Check if upstream signing keys are present in multiple locations
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/desc
new file mode 100644
index 0000000..71c877f
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-key-multiple-locations
+Check: debian/upstream/signing-key
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/hints
new file mode 100644
index 0000000..f6e6e54
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-multiple-locations/eval/hints
@@ -0,0 +1 @@
+upstream-key-multiple-locations (source): public-upstream-keys-in-multiple-locations upstream-signing-key.pgp upstream/signing-key.asc
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..41c2c56
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,160 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFkjME4BEACatcbzE9EaIKMmiS3OmcrooZZUI4pGtJcFqCNBOP3qvxUEq9Tk
+4XPY8EARDGdwy2rMc12ywoc5FMzNwXiC3RpUNHnNhY+zau18q9CQx8UR02NDFWQq
+AwaDSF4WU1GBVBMWgtxfIwAQGl/qOr+aSVtJCnEOTA/YiZPNw/wpA7r2g6EHYcce
+a5srr7F15a6OxzDdPXlfoJuoSXMZUHpJIqG0UOo7NPkxPGRoHO2yGPS1DWKy3egG
+xm718DwaIWee+mfJrcqT0ZFH4n5po1BJVj+8TcqE4YlkN/z4p0zI/XAxNCR2wGV2
+6cCQ8laEgwG33rPp+N3G/FeJchYTFvL7zDtdYKbBPVeaJh2kROnqbVVN5kZBVEXB
+QNbXKuK6/TPiQeI+8anA9WflI19lzkzl29L7hsM9ornk7+wtu9P2hu3eEUgjjBli
+Ujisw8s0aTPB5QsMCjSownwZ0ucqj+07nYVsPU2wK8x6A7p6Cg2SCPnjbX8jUb3Z
+wyn0yi4SWceW9a+LW6wdGarMGbu+Lm6in8pK93u7mE/D4AskUVz1yLyiNO9WBXPq
+GyTocqXKXTutHKhhSwY9CyEw1+SRzXXyHPmRunRULTgZHLOaydK6ekzBOe1Yp9Zk
+hLvon6fgOhJTsokv27QCSw8ILbQPGF9qJWFQfYZhT4QCufmPaFgBpJOdewARAQAB
+iQJOBB8BCgA4FiEE4c8g3f/kuJ6AJljx4LEYlPZq7JgFAlkjMMkXDIABgOl28UpQ
+ikjpyj/pvDciUsoc+WQCBwAACgkQ4LEYlPZq7JiCcw/+NxzyntWMM/b/eIMedzZK
+Zyq7Mo6vgFxT57wAloMtLu0WS9oETTH/+/9+fHPmkYxCX1HTNKpdY2KbjiZC/gAY
+vJ8iGWredwIls2UyW4fegzRLNvWLZmUBbLg0WaTIQ9JZwa2Rw/q6Z0pe0tfb44oX
+lpps0WA/OZCWXYVO2rhOzoiQulqdmHgwdcLA29BnpqBY1R8/LMDsfPLnJu7AFqgM
+CQpnjIGRH6ZxF2TNUSdljUbIOultEeIvxtxosF1u0r20mg46aaKDpr0ANiR/Ojaj
+YoeHZc39fyubSrhIyQuk4rDisrJod63MJ9x9upAc9H3qz71QjpwpVXPDxereWULO
+17qN3hjjZd23CBdRv8HjRKQoFagUnxlrat1t+/yJCENzX6eX8wBs0vVCSmbtbSp7
+y+0BK4fyjDKCdiyKh1TiAnQ1Po/xICGr4Sa6Wohq2TeWXz4VlRnaQeCIwa4Kk6T/
+3VTQbNxn7Uiy9ec8aR+1YMGUBDG/k3s6K1PWLdJtSVgao8MkQYeKcQk/sgGSFPh8
+SkTy7CnSjK/gQP8NC5fFDWpatGpnDr9qsQwzMnUVYWNZQMQ+LJHPnXRyusr3M+Gh
+4muVW1wmyjNLhtEYjJJnbv9bVVv2HFVXOWGiXY4hnj01xkHf3885Qq5ORWl1FMnU
+lcqUcFsB6a1CCPGxNTJQhgKJAk4EHwEKADgWIQThzyDd/+S4noAmWPHgsRiU9mrs
+mAUCWSMwyRcMgAH7+r21QbXclVvZum7bFs9bsSUlxAIHAAAKCRDgsRiU9mrsmK2H
+D/9frYP6KRecLNMzLJGe6MB/1DbqIud1/kzd/jHRo3e4Dz8cls29N03HskLE4jTf
+BXKAhUmRI52aMCioY/K03rZLaR++/GMIdnF7O4Ks7P203J4/CudmXQvz3Rby22lC
+RCp3Wsx2DqFgpc1V5SjmdDxzEs3fwKJ0B8YOMyibyUaLfwaxRfiTsWmRF192WzCM
+/B1tmJDLIqwq/xxzxmiqzrxBWq3JIxH1PzrGbWvAE0gfBJHgw/2HHO4PAG9Lj+AV
+HHPV/9xhXdbF/KnnKUGtd9lssNleWlc5LeM0ix2pU/QrZx7c+CBW+142jQcZ58X6
+QvHTKBkImI7y3kMCUOs+UbxKnFsRBRduMLvIpXJVXukV3QvRn+9riITPIcviF4ni
+F6V2NQ+ONrvMOK2s6VdfgMS7c4Azuyt4SJSEzBhHu+VTVnMZCBiKvZtRL5XX85ZF
+DDkN62Bwa+F36lTiOBWOecSQykCyOKcnn0jKrSgDOk08qE7Nzl2SPdlpza0/bk2u
+6i8o3mrmdO02OqC9vJum6M4Pn2HHrkPzAtSs11E7ogcZghPxnGCekGQNekHx9DKM
+mv8W+SZf4b1KD1EKECeNLZ0QHQMjU3AYBav+Mq9IXIlwFZL85BYLUAWfrCnqf/gV
+CTiy9yKdQ4WIr9XR+zywDigAZqJ5PxwBh1+phrkoWUfsLokCTgQfAQoAOBYhBOHP
+IN3/5LiegCZY8eCxGJT2auyYBQJZIzDJFwyAATCZEb6pZtBhMFMEVxG05f8VsP2C
+AgcAAAoJEOCxGJT2auyYWHAP/jlmSZQI/dnrYTT0ZtZA0k3sCaaOApWmno4Jm1+p
+QzxBJyVXC/7em3D/Wb3B4XpQKnkWOGz3XtEf4LNPhrW1n6nLFOLctprGwnlZihBp
+tmidEvvFKCa5exv4WOVyat5jLttNJ6o4O0BJHmUJG/wAVSjfWi2KgVXZEnz/wts8
+KFXc06RCgavIATmlC5QqD87U5ezKJdY0HY/A8uT9aBJ3KFdzj5MnZOzr2RJcEtWU
+UE1HHxqJS7POQVMUWK/7nABUKjzpQg8Hn7VNom553Lf8yk+OLl0x7+bS/8tZltZ/
+zkIqzUmpPk1QSf5b4JOryJye0ZV60TtbI7juXi2VV41gcHxd7EMkF4PAMtHF/rNM
+n/sR4LLXPnQk71zqOScYpMBDQ0FikQ7UuUT35iJAX3u7mWYL0P4h3NBlPmRLg9W3
+k/g5KRBLJ2U9Ba+i3UIRva8tUGz/EluzOCUcSbIEMNkaNyt4ktO3PaIzAzdVdxYk
+IWV6NUj92vSBJvXinzIjyXTk9Tjfuf4hLo15C+1c9P0+XkpKzpvW1ycpIUVH9QSZ
+afC1e45EXSkD0AV+y6ihJf4PWddgGb3ZeWarcp2QL/ll3XoBdEGfxOQJ1Py2nfIS
+HxVrl5AxoEJ9q+4YO5xysAV4f+UFKvS4snJtRztOYBKM0/4pup41u4V8oGWLRUOC
+d/GitEdEZWJpYW4gQXJjaGl2ZSBBdXRvbWF0aWMgU2lnbmluZyBLZXkgKDkvc3Ry
+ZXRjaCkgPGZ0cG1hc3RlckBkZWJpYW4ub3JnPokCVAQTAQoAPhYhBOHPIN3/5Lie
+gCZY8eCxGJT2auyYBQJZIzBOAhsDBQkPCZwABQsJCAcDBRUKCQgLBRYCAwEAAh4B
+AheAAAoJEOCxGJT2auyYKFoP/R5ijjBRlLpClTvhk5p1pE/cJbMAHd1Y7x09iSN3
+nT222tx4Zk3wVnP/1puJNkOxW7btMuUNz6Y4DolLpAa71hq3NOsTGz+5PL8ZFBoi
+lIN2iOpfzqIFLASM0Pz6X+twV3ZyE1PZmfzLAu8OWm4kt1v3qJVtWN/5dHbjTqMt
+vUc28VX1di51zWTs+3b/SDC+KN98i9W64JUiHPcLL6b2Y44fDszDDVVExwtPrPk0
+VU+et4/uWmhcdEIEb91MIEsLAUJIBqcGTZU7Gymxupa3vApT6UUxfNKkVCGDN5dk
+zFKkS6p2NEQjtIPNAheBwUfHqSDeN+EW4IuQxHZ92o+XGFMHqU29Vy81sPkGvKkG
+EIL12iMpW9hDTbjO/+v695o3tVo/h1b0NSZP3Jk4I3iDBpAcUEYarxoOung2K1fC
+QYH7R+7hy3lnRP36s9za6rEbik0c4XRvyYaYq7npGEq4CqhcKgRhZqVcy2Zmymcw
+MqR1wLSxEmbREQZfBCFh5zpVC+kmRHfXCmZyAfDwLgGuMDVL7piCW5DqpC04Ks7M
+Uj/r1O5hyMEjIzcdATVBMNJmdOPw7d0vqgBUizj0Y/e8RhmY8mkmy1zoI1HU7JfF
+eKNnK/I2KYUop0qV0+bEFcu0RiEFVMP5cw4L2QAr1Y39XJNFU3v7IujRZXkxLn+H
+6l4HiQJVBBABCAA/FiEE+/q9tUG13JVb2bpu2xbPW7ElJcQFAlkknnUhGmh0dHA6
+Ly9ncGcuZ2FubmVmZi5kZS9wb2xpY3kudHh0AAoJENsWz1uxJSXE0z8P/3wl5xqi
+wO8sHcMtPXRoOMGRBGlXN/GWbEuqOxaN4lVko+sqGTineW0nk6bx9zhTFDCXjEpK
+da6M8Tc7V/cQoEyrV7btFolrb1KPKl5cVTsxKbLSJO79VgN9CZdrv8xS1VsI6SW/
+7euwZmdjYCnOqs049uAxmeZU3HI/yjaOowhDDHAXRvzzbMTN5Y8aWqE1Sv/ndnb+
+qHDq0Xh6hX0iS+Szx7KIGDLsgPPPjvEfsfmXVhYrWPdB4KXIeOcISehblxxU9FCE
+JmArB0txQtW595m/Gn5ntVbiyHhrhNlGYT+6D1Fsw3q1l9kIzj8ro2/yRcZ/JRot
+w5j5bMbYatQGoxmaBr9AaHCyUmmQEwfQFqBDnOBrV2XwLlurIX3ZvkQQVy5e4ysp
+9K8lAd5X4k3sKOSca9HooIcK8szc48aUijHabzOzU459qrds5iX10q0L5It1FqLp
+obg2l3wLWU7XwAP6K7m6LcvSa+2QqJmh72SBLd6xPCQAdwwUgdfzjovxTpdQu+3u
+5NX+ud4uc+WP8bEG1oT//H9cQ6ocRKXS9iGYby7LF0ykY1MVBI8KfQ7UyLWe/wZ/
+HlPBT2tFQ+8HoB1ZmtzsukaJcTiDtOcQGrIfgEs+bbw7mFKIDjI8OKZpZRlm+UAy
+Vm4jG/OiHoxOcr29mYCUwAzLRpavE+L2/koGiQIzBBABCgAdFiEEgOl28UpQikjp
+yj/pvDciUsoc+WQFAlkkgYkACgkQvDciUsoc+WQChQ/7BgfCpOAN2mmrSToaMY5C
+UVsxw6GVa68gDJA6A1rFXq3cqI5KIj5lNZ+NQi5a9hUu/Ll0m5TN7bZQ8+wxre1U
+GY1EnIUb1MFsL7r43dvYOifwV0jNci7+wfvU7slJWfwRlO+q9pwxseBRnGsxLgnf
+p6ZK/VqzjMUBXzAdMxwqacaJITsgHHGqActsuTGlasOafTxSvWDjIM9O8+maOzAq
+sTa9EXGQhASuzAnDaaW6L7etM6Icm//7cMz8oVnTPKIrqYsHTypIju5XXqHa6Y1D
+jZlFcQe7aFbgyBufe4hNtcUHJxXpJHThmZVjJA0t8ofZ8tPWScRDrphMTPfGzVZS
+TPUKn+WbkD7w9H7fjQcaCH6YKoJx3tIYzLuDStS/+SLqF45eJp5Miws7AYJCZ2u6
+vJ/8kDVByVPW4Xlq+nmi2RPG7Ym6NcmjG6FUFNUs4PPPfVn7cdLLcnNNriV8hyOJ
+T+NnXISSLo20F9buHMl28YqBb7sXmM71lr4kbjNKi0IWUOb+uZcgzMnJPjegR0hT
+GWbN5TmZnQ0lxYU2gr+t9F5DewTfMZMqE70T5eNfSyfr9iCEt8pp6GsjQlFglYZr
+30bcoLI8IYvS5VOvHAtWrOe35UgLXT8iB0pdCDcVbdA4ZaUaSR6hH26RZgPu4dRx
+9flHYtovRX1rDB9Ujc2d3JuJAhwEEAEIAAYFAlkl7L0ACgkQEbTl/xWw/YJo3BAA
+jRFiSZPG8SH2QQ1XWF0RREv/yWO95HkZdTHY/yDNfB94YLVCSqWDfO7QepCE2SUp
+4+eBdKUSUk6sICQL5gQ3D6PpSLMPaiJ9QoUi7JU6pT9xlrdFIfwC/zZypsfDQ8Gb
+L0xZPuXEurcR6YArCFHxtACKSxcUBqvpb2YL9fOEQqVzq90yWxQYsX+xlOpXAXXe
+ITwbjgT0E6izN0ucYthhvBM0nw3Ma+v1C4o590MzAFefKaA8kQ2xrO/NIQVwD4qI
+MQh+Cshq7UZXM8LRa3gxaMvglMKeeyFHXPP1V+AKsQ5KmPlzYKFe+Fam85FZOF8i
+0OrlYcuJ6ZCSXFY9Yfr4GFrkLNsyWfSdv20JVi5U5LWJj4kArw8vc09zVxnpw5IK
+4TNxhg68Pho5/XES4upBQkWAzukwOKUVjzCaZkj9Kbos7MO5D4w9DZjGD5sosob/
+aLPznRqrhGX7KIVeqUDn5gavtIjk6mZBMpdDGi9GQ6ObuHUnDKyf0K4gYQ40NVGD
+e1KidJmRoLgdWph2NNP1tuLQcq6dzCdC5Oryu0yCLFXnxHURkIDTT6mKCtJ6rEsk
+O+s6+3yOB2FXv+oF1L/rUzv+dZsvKQR7T9odOITuQ/LGs9whGTG0sqpbCjyhCwt7
+2xy95fIpPdQ1Uhzcu9N/XZPRYY5IYR0NUDEUen9QAHWJAhwEEwEKAAYFAlkmhFEA
+CgkQdjjQRCuQ0BAjWxAAjIMwo5CFvImdmyiSfDLPezHLFL49FbLGIENr6E0xcAKo
+kPj5s3mCZ0dbCV32yrMBBIllHNrJ1dnv3+VQAwJFQNaTKZbej15zUL5RvBxZlaN5
+RNlf/vYD9Llm0fWiwMXpm0ep2ID2T93i1wGyYt1FnlQ58fO2Qye3h1Kp4qAQjDMR
+k2jjePqwx06QkC9+R21XK78RezgmtVb9BPTVNnUazzREcq1/mVfratAnlR+Arh63
+80E63Glwc9vNqzkuYA1ilTodzPCXk9vEA2gD31L1gCu3YP0kqe5aHB1R6y1cFvQz
+0Il/P4lyMBm3eTWZ09961Eopl0kLMPFFZkGw2ev4OB1wa0IAdugBTpCqc6lx/CY8
+mt/s6mEVxvzI4ljNgKPyyLaBZUOY0gtEgwmpE63njMWmuFxDOls7WuP45WEuRoOB
+OJkwtYNNpaghN2K/qWEgLtU76Nq64DGkjFd8xVdEccgmYxquQtrXEKj+2E5G8NOx
+tZeH0HrVcOfXHTMNx9UoZRP00VSycctkDwt0NBrDqA+o0Djkdql01YLUFOmOYe+U
+Z7vxNZIfQkGr2ynnAiqIchMuoz4/IUBLJ0HKasEf62NYluPrcbh2giTTYKtDkZqA
+eFB6lLxyTiZ3vDTE5a9lPrKt/p1JBhW5/S2BHWJjDMDO9ut4a8MWfw84u2ZwNuOJ
+AhwEEwEKAAYFAlkmhVkACgkQnW2Pa8hXyQagAxAAvhC1r8xGL31TWdusrNWzh7jD
+h1qWOMY/cvWmU5Jj10OG2O9oBa7hhm8g/bj8a3rVPEFPwdzJQNEG1MKinVkRjgTP
+ST9QHNuUP2sPtVsq/Y5HxFV8prCKXZ5hiVBLgORpSLF/kUh54dGhiFjycUoTFn0g
+MkaNArvkAGWpqjFgeQxW+Y15DHj4c1EwcSIKrcpDMyVqlZD96bbkLL7kTQ4zCMlJ
+irezEANgEXUYz0RD4NcWGHaT+GFVJfI+Mq4P17FltpHZyTtWbBmkzvJ4y6tbvxQt
+mKpDR4z88nstjCSXDjU4nOZL7Bifoi8ztV4uLzJ00dC6ivFmTCQyCqXCHPMvT3dj
+9Byr+cMWBGSfM198/oUh++eYW8dp0wjNtIrnJaqnLICzvBg5OucxzRVa4ZMPPx9+
+4jYjdsNsYg+oiZE5ljW1Ig8CBcCyVjNSUBDrRbb9vp1up/ByC3oxD8Uy3wETc7C7
+AMJ8H+RH/6J+HrE3im0HB22XiR4TtKgOuLQxGVO+aXEhdGdxFdWZUDdulC+feWc8
+acVkRvlIYF2Bfxs1Ecee/BkP7++kWZJ9o9Nl1HEpv+spDoxpzL4VRNF3U84InaCb
+wX17GLuVj07bk06ag44ZHmXwM/GSRn4ITwEVSKKoBCcvJGnRROA0n1a5+v7XSMvT
+9Q0gJj1rzlA9VNgS7Pi5Ag0EWSMwTgEQAMkD4hfHi8rZYM4I8V+vJp8feW93+Oiq
+caVzQygYKs+/dbr9favoHttNxOF8eBMIwkQgQlBIYehcHAnhnhuCP6s16tnM2lF6
+52s4c7DV4Fodo53Q+sqzPth/dH76NOeUAzSj3KPfD9YblrB+J2Z14PP2ObfvO8k/
+SghaCEPZ8geq5DZjTAs1YU5xYlawVJCvoQnb2TKEXbUrMOqAX/ysOwk3DrIo78h1
+HvGShBuHf08gOtv8Fm2pKdkPHzr/QI0/atFoRn793W74n4Qc2mwrDUUQds7oZ1IX
+tXeIHlVV8Z13no4qA7FRNL40/vBfKuPFAPZGt17k946L2LL5Lxu43eVFIbW2jAod
+tV3NxAYu5JAYIYOawZO0p9OZJdZ8sTg5KOhBfyfO4pFyc/FaOhxv3SVqhRZAuHTe
+6OSKLUMcV/7Yrb1hClSXtZcuTEZfaqDksoGg/QDHuYcnAtD7NWEEgEfuL2KYXudw
+GIjRQSUUMWv4Fw+BT50f3PHSH+lns/vQXxEaKDiGacKOC+FEHs9jTvWl9+phyzCK
+4CfTgZagW6gsvfPc/0fg2a/TaTzj4Y48KbENcBc+x2IwowRZAtSI+LsgH8puKMbQ
+7oRRnVdt2LqkWtzBoTcc4r5r4m+eGZ8/qsB1n69bS+MNWZtusaBeaQHGFv4d9rIC
+0QOzwZLX5EE1ABEBAAGJBHIEGAEKACYWIQThzyDd/+S4noAmWPHgsRiU9mrsmAUC
+WSMwTgIbAgUJDwmcAAJACRDgsRiU9mrsmMF0IAQZAQoAHRYhBBbpCz/fZe3jqn8y
+PATucje31FPsBQJZIzBOAAoJEATucje31FPscu8P/0yRsvlQjY0q600VkxD8KciV
+lvC7+xyrMBIal1ILjIpPlMeuWWpPE+Ffnry91m1GcAlXTfUf7NhZkqWfsyygqUGy
+BJ7ydPox8rA4UXW3J31Em4Lgc0JwUFD/bFqz/iVVYCnaWYcoX/68CwaWRCjt67v3
+3vNCw97t/W40430HsmK+AC6HS6vV09KeYk5fhrORFBNGrZT7Bm7lsWGgaz+7pNGk
+GE6k+K3sS6boGga1EGLA6YbaOEaIS6QJtpm4VEleFksj3JHK1TMN/QCnSGdy0/0b
+qkF/TDcfqG9c1vCp9knWkCKQmi/nv2ay2v6ZAcICAY7sjibicmBd06uvfU1bhKB7
+nYC/i77l+IGKX5R/WvTrdb+J5qQhODF70Nr6HO6EsI4E4X541GRLgGMZYKbiu0Tb
+uo1B7PSOrkddGUwxXjDBXM2ClcgPi8nL1irpleSAu89/B+Y+pr5IshaVmIP4+jCl
+GDG18/kPryOFk0ACszjlX7eFMTFPUX0gl7qDRfVE1jKzPxf75gLoeIylYChMd17b
+uQo8RsknkcvNgifdL4sRcbxOvhpERONK1MwR88K8C0GqJ61cIRMv8odMMpescww0
+5ECOpE+kl9PJcREnm8SVkclraWcQVEwGOkHtx5BsPqZplUEAIcJNXuvXm9kFkaVS
+2SRvQyklI6/NQQZzK8SRwacQAIGFHV3eOtC0rdrnmnh2XCDeEN5iPCvVG723jIc2
+6aDR4a47zr9507TBLUxMPJQ6mB7imsEcWHfR48zARq8jMSj7ahfhIa1ixEksc943
+CxLrjPAWfAnog/2MYJdUw/nBjU4dqb53ssxD/F/c3LB+z/nCEaO2UgH2Kekh0KyV
+KgwV0N8XcTB0UmGcH9J2DZ5/ZXRc2XiYWIDoJHs8thGxwsIYXEhYsgBwGu9Kil4t
+LzFt4sluY0kvfrDHu+oYfcYBh5V7q6AQYBh8ujjAhKZUmlKtgay6IHkR65m8QI49
+ITdTQW+Y+orphcsdbvCm4IhXPgykLySouskwr7RuhPka0hKwDUt+0MHbBmAhfYnF
+JC5o23tmgAq8l2WZbp6/uFZ+4E9UmvAI0RvQM/B3AxQBOCBOryGeaBwkJcsACm8V
+ADWm+/OWK78kuval45wGQl9+TqqjRuwA9ESEUMgZnc33rVPM3h6gR8Rv/M77AjyM
+88rGBLCWr7wNY4e3U34tH8jMFOMy9vN6l3kOR5/EFoXJJGehzE+xCyyeicY2HsJ5
+t5R/R6w23vgNqf6eBRQuDtym2rSuuiaCnvKEF3S9ng+phmm/eZadG7xOjERRPqqt
+TP+zge55Q1B+P1HmllKlR6YLFyRuKOO1ZOVh4Ae2MS4oZybMQsTifjjiQ/8W8KJq
+k5Bh
+=3qWJ
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/fill-values
new file mode 100644
index 0000000..2a29809
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: upstream-key-native
+Description: Check for public upstream signing key in native package
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/desc
new file mode 100644
index 0000000..789bca6
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-key-native
+Check: debian/upstream/signing-key
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/hints
new file mode 100644
index 0000000..fababb0
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-native/eval/hints
@@ -0,0 +1 @@
+upstream-key-native (source): public-upstream-key-in-native-package [debian/upstream/signing-key.asc]
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..e311b55
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1 @@
+Testing an empty file would require source format 3.0 (quilt).
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/fill-values
new file mode 100644
index 0000000..786ee2c
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: upstream-key-nonsense
+Skeleton: upload-non-native
+Description: Check for nonsense data in public upstream signing key
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/desc
new file mode 100644
index 0000000..6e60720
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/desc
@@ -0,0 +1,2 @@
+Testname: upstream-key-nonsense
+Check: debian/upstream/signing-key
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/hints
new file mode 100644
index 0000000..5bc79f7
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-key-nonsense/eval/hints
@@ -0,0 +1 @@
+upstream-key-nonsense (source): public-upstream-key-unusable cannot be processed [debian/upstream/signing-key.asc]
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..b79208f
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,153 @@
+pub dsa1024 2006-05-25 [SC]
+ A0AEA075AC8398E93CFC6F45D70B095F855781BA
+uid [ unknown] Aaron C Spike <aaron@ekips.org>
+sub elg2048 2006-05-25 [E]
+ 75FE92B054BE8CCB6556FE630B755C0230DF8115
+
+pub dsa1024 2000-03-22 [SC]
+ 9FA3C49C23C9D1BC2E3019751FFF4BA917063E6D
+uid [ unknown] Kees Cook <kees@outflux.net>
+uid [ unknown] Kees Cook <kees@debian.org>
+uid [ unknown] Kees Cook <kees@kernel.org>
+uid [ unknown] Kees Cook <kees@ubuntu.com>
+uid [ unknown] Kees Cook <kees@canonical.com>
+uid [ unknown] Kees Cook <kees.cook@canonical.com>
+sub elg4096 2000-03-22 [E]
+ EF1A71F45F7588F7EFACC36653B02EBC76E6CE33
+
+pub dsa1024 2006-09-06 [SC]
+ C7223EBE4EF66513B892598911A30156E0E67611
+uid [ unknown] Bryce Harrington <bryce.harrington@canonical.com>
+uid [ unknown] Bryce Harrington <bryce@ubuntu.com>
+uid [ unknown] Bryce Harrington <bryce@canonical.com>
+uid [ unknown] Bryce Harrington <bryce@osg.samsung.com>
+uid [ unknown] Bryce Harrington <bryce@bryceharrington.org>
+uid [ unknown] Bryce Harrington <bryce.harrington@ubuntu.com>
+sub elg2048 2006-09-06 [E]
+ 90778E96D30DA29C45CC28920813D5E325D309EB
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGiBER12zgRBADBv4KbzMWnE5jwJlCK0aauc6NHsY9xiip6vMUmuyaU9O/DOKEx
+DqiEixZzxggV3lBsYf4QjaTNZ7+Gkb1IV9zCG7YzmBbMRI12TT+sZRdfCArC0IV2
+N3XAlCLuibXpb/rBloWfJUJsh4SSnS+GNYutLtRqbS/gDLZ6U57w+yM5LwCg5vZA
+M/JhaYA7y3aX91JkHKwxy40D/RwT8yo6RzckIs2+wSXSYEegPbvResOYV1kOXTi5
+qZ6afqHhyVtBRVVsQocEg/QIscAJu3ja/NiUAFCSKYN1iZCulGdcfLCfGIgJihSN
+6TFh7vUyBB+lGPCnax9MsdttsUaLfQeikWIsHxCBQUTwHLl4elOG7TPSFwELB/JX
+oZPvA/401Kv4bZvB9GLBzNfNLMdF3lrM+d0YH5R9k0WPV3XKShKz9H+vLEWGqxYB
+dJpK7jdhC7TK+L9V1hv4UhpOz9++K1O681HvkodCi1TxfIEKW1bA7tsNsM+Ggz0Z
+6BwqSCffc/ZysSL0L9GstNLMrtmnIdb+oQTtnR9XTVmAeD3H3bQfQWFyb24gQyBT
+cGlrZSA8YWFyb25AZWtpcHMub3JnPohgBBMRAgAgBQJEdds4AhsDBgsJCAcDAgQV
+AggDBBYCAwECHgECF4AACgkQ1wsJX4VXgbqdMgCfY0tcC/sffk1QXFqwh6ELk8Kx
+JQgAnitcjtlGWPWobbLmwztmAr7VlldruQINBER120sQCACv0SkI1OCjgYgW+8MF
+z3PALT7rP2J6IGEbIO95fg8H73apgPzx/ZM5bKY83mMbu3hN3SoFyhBY3yXA9qHE
+nC/W3Wm54yDvTOgVRjW/LiuBGcLJvQruB0Eu2WF5XEjcUi+vl+iZpEtNGc3enrVB
+tk0l4NXAONANWznX7ZlJx4IHhRNz4bHWsGrI1F5sA41bt1bRm2CE9GJrFcLnkjDp
+x1OEciBgP9x5M0pKfKL8DMtrAq0XsppP+Gg9OS4YF7UTDDDWKzqQnJAitseH/JQs
+soxsDOqxz6uY4GltnkV5inqAFVlVSxTG3JpxF3Rlsx2GqoOseEVssFUxTIFoBpYs
+TJpTAAMGB/oCLhuHGWnGa3OMHxBBGGX8nOPr9snglEHk2P/Kox6MRSAOU1BW6nVN
+LeN1jMldPH9Vd15FUHokCfydGuCPohx5daaA+vEp9qHM4g4fEGPgop+SZr8VMgNq
+yQUjUhU1rQOro/jyNXiQ7nICG7+QyDjeDZNfgWR/sHruHmWuoSEavx2zgxseNE5s
+pWICwdFltDXvvi9HWDDmPkCJHkhRlMaAaEwldM9z0M3AO6dXKK/1nKGGa4VqNL6f
+qDIfKTTpp5vuM/GUBE3d7fEuEfgi27YvdzQJa17SK1vrnpUaZ5+Bdt7DP5oFE9pB
+Tadkd4oCfglQQTEkOzYxVx4H6W/0XhjsiEkEGBECAAkFAkR120sCGwwACgkQ1wsJ
+X4VXgbrWNQCgt+WswdAQXAmJbuSTHNEvMgIuXyUAoLQnXJqYx2DOTY2i28thyeYM
+WS96mQGiBDjYWfMRBACN8F0N8tsW3zwhUpykfC62UdPJsu3zuqnipHWlPyMb7WYb
+NeR2EXpNxh5DKyI4kXHZL+7I6wrSYroHcw3biIrEy00oNNjyYZTwetSB/GMfISz0
+PNG1TMKL1dLrG146vmZp9vfoU2tJcCCB7Ir5hsKva7ddndvQdQYsvdS3cHJzjwCg
+pZPqPpzTpBnWZt/TA84LnjZ2Xt0D/36lHbAPDH92HjYeeclZjy7z3abrJYCxoc+U
+PBIu6/rAqYkE17S9kjkkiLb5JdF5lMJgSYu8Kf1QSCkc/II1CGJYfGqnKo3YGLIS
+rqrVzQob47tOMFjUYZ9UEb569m8rmgnl3RmPmZ9wCT+RY0U3XNeYx5ukfn/fJLt6
+A8b9Cqx5A/9rZLrnsSTL3bYuAHMn9FEwj1cetJvqi11L0MhQy4WBz293BUtR2X5S
+/lKzRfY+mNzSMe6NEEd5sD1QgJTUdC3wIJJeK9qMqyqK56Cmge3E7m4l/5QdI8uZ
+sqFuNCsGfpJPaSQ8yjJ2sAX+g8TjEMYZ9Cwkrod7sSagMrO4cV0no7QZS2VlcyBD
+b29rIDxrZWVzQG9zZGwub3JnPohJBDARAgAJBQJFca8BAh0gAAoJEB//S6kXBj5t
+uQYAn3X9zRGDua4OAPFS4qiNh09y7pItAJ0eQs5NHNFB/gBqZwEV7RCcUAelfbQb
+S2VlcyBDb29rIDxjb29rQGNwb2ludC5uZXQ+iEkEMBECAAkFAkUQGNkCHSAACgkQ
+H/9LqRcGPm2l1wCcDdjlXHGJzM4lrSyzUXyjxEwIvD4AoIv3oSyyfNoxTPTF3QTd
+vhVrfm6GtBtLZWVzIENvb2sgPGtlZXNAZGViaWFuLm9yZz6IYQQTEQIAIQUCR6Eg
+DQIbAwcLCQgHAwIBBBUCCAMEFgIDAQIeAQIXgAAKCRAf/0upFwY+bUNgAJ9RM+r7
+ZCl0xHjYqMkX9yF4NOjzrACdED6Y7Xohf5rpcSVxTkSFl3oSX5m0G0tlZXMgQ29v
+ayA8a2Vlc0BrZXJuZWwub3JnPohgBBMRAgAgAhsDAh4BAheABQJFtXy4BgsJCAcD
+AgQVAggDBBYCAwEACgkQH/9LqRcGPm3hcwCbBu1Wdux1iWFrxhV2E6mpjvjbt6EA
+nRHaGYEH2BuMCJjq0AE2cWqPCHjQtBtLZWVzIENvb2sgPGtlZXNAdWJ1bnR1LmNv
+bT6IYAQTEQIAIAIbAwIeAQIXgAUCRbV8uAYLCQgHAwIEFQIIAwQWAgMBAAoJEB//
+S6kXBj5tK68AoIhUwpdkaNHz/ecNJPv6ZuPnzcHVAJ0f4p4HSXqjIM4w2123e5Kw
+PyiQIbQcS2VlcyBDb29rIDxrZWVzQG91dGZsdXgubmV0PohjBBMRAgAjAhsDAh4B
+AheAAhkBBQJFtXyzBgsJCAcDAgQVAggDBBYCAwEACgkQH/9LqRcGPm2t9QCbBBgv
+K8umgFnfFM3gHSWXcchf/U8AnjgRSagInpCzDsriwz/7kRk6CZjRtB5LZWVzIENv
+b2sgPGtlZXNAY2Fub25pY2FsLmNvbT6IYAQTEQIAIAIbAwIeAQIXgAUCRbV8uAYL
+CQgHAwIEFQIIAwQWAgMBAAoJEB//S6kXBj5tlA4An1TrHtj4+NspE3AS3hhR3LzP
+Y1Y/AJ9sF22Ytoz+RTuDnV+6b62E6kIe47QjS2VlcyBDb29rIDxrZWVzLmNvb2tA
+Y2Fub25pY2FsLmNvbT6IYQQTEQIAIQUCR/QWgAIbAwcLCQgHAwIBBBUCCAMEFgID
+AQIeAQIXgAAKCRAf/0upFwY+baOTAJ0XMfD87j/R/LyaF/p84mtYM/mUXACfd7KQ
+Hty/NNRHZm65IGUiQpCMPVi0J0Nvcm5lbGl1cyBDb29rIChLZWVzKSA8Y29va0Bj
+cG9pbnQubmV0PohJBDARAgAJBQJE64y0Ah0gAAoJEB//S6kXBj5tvXAAn3QUzyP3
+bopVytVzU2t5ATvFbDvSAJ9Kb7OYDI+d6Ym/kjRNVxyAMqfkcLQoQ29ybmVsaXVz
+IENvb2sgKEtlZXMpIDxrZWVzQG91dGZsdXgubmV0PohJBDARAgAJBQJGAUI9Ah0g
+AAoJEB//S6kXBj5tdt0An28ib9AYfoa6TRteVRn22k/sBykvAKCh9X7U/NspQC61
+kcH+6yf/FszC3LkEDQQ42FvaEBAAkofDOJKr1mgLU+0NM5M0z33uN3LFX3vC+ON+
+vY5SAwvt1WqCvUgocByb0npfdqtu8VGD0QZ+m9Lp1yXyYjDoSgMmBachbordxHHW
+b7asqmHrOkPWX6AvrITRhMOfvQ1zDKlLa19kLMUANhYXRH3JjsiZAhQ++xcEZqes
+JtgmKdpcX0vX3TuVV8wSBJFG0tKgLZPkEnYtUDRiBp7RrqYruNCctVzCxr4n26cY
+V0saMvwHhHpmHP8qwJQf2++eWPG/lm/wMzatThEgkKqXGj1rHU+uzKBrxc2pQDi/
+Pz12vg9H86pO51E0xPXthH6hazwWix7Tx1Q0mig4pbrHLuHgV0A6CtlJIPclWlsY
+9jO67XiUGVw+ypR3QwPyUVZuCmRv3w+FroajxQ+VM/hlKhikDb7ylhQ0UCo3nym7
+mRTbEC5O+3mahTr4X7TadaX3GOjceMLzaOF4sbo9pFusK3lXOoehZO5Ob6VIbyTw
+T5M2qsjwLqLn7pmIN84tpQvlVaEFKyNyR9C+uCdB1ZkdOtUxOee8MOMxS3I06ZVv
+pRbFfUAr3Y/SzgapIGsDqHf9HKP5mMw9zDTWJwtUcAVtQELfM4JZ9F1tGd8G9ebH
+n1esy/Fb1c3upyhkLBBHdmI/dHnJ0hzt8SoSgsrORtq0DVL/fGpqDkeykkmOi4+t
+XS315Q8AAwUP/37nvk/tvV/IH43RY1DHQ+7DFhWpNzGfUDIEORoQeCGqpw6pJm1B
+Wvm3WDFuoXrrlOPvR5xQDEANbuBAejcC4MaPX+DHHdo6+uM2nkpYbIKFQ2GS6mg2
+GNUTqTBQX8Z/1BTE0NzcO/cANZA1kZeV7i6UXTpR7w3oNdPYk1OHWtDMCx97brCf
+IFD+5UuTeJiNRuOe+OiNZGsRL6/BtowDjKTdhsgotE3ZsgL+IyW8bMdowc7F56fD
+3SRL63SAu3yjfk7/ryZZIArCYusrkEV52OyEniCa42sCafONQ3WWIGXOVb3Wc62n
+AMOSFcbOE+BqvnmGlJ9vxRZ1GCB1is4lJb/8Wr2oq0aDH3sQoontF5W7nzWD041u
+rgsFMKLol8NH2waWXcnwbBcAcChk8duxGMEx0w1D8ldpTqVzIVgeIe8I2axlEnvq
+Vta9oR4uiCtinApD3yTrZRez9O2PwjEY5iZTe1WyiSGi+U0Tiz1ZIawhojOCxJWC
+ggB0Zs9n2FaCb5Cs7BMRzCdibeI1XoFqiL8YxY1cWkwcBTALSWpUy9FYOITPMSji
+x/Svlew+8VTrGZ+aKDXmEoXMbUfcPkRIbk7TWq0YrTTCYkikLviXczkrvBl1b5qw
+rhEF18dCl89N2kqUyDNJ4SuOeNELMhcGtARKY0OHtu3vSuC5Yr8woTN7iEYEGBEC
+AAYFAkW2eZgACgkQH/9LqRcGPm2CBgCglD0MerQ+cfQ734FX0hd89L8+XBcAn3Ab
+83GBmoy4K0aF4Jp5Nwlgo59DmQGiBET+XhERBADlUYa7VXfPl3y9uCBUMniYdE4F
+KLAobrREyiveLf+2mTf435YLde0gcx9ZS/EZUq+4rn4uv6AsKmw/f/N/VWGC4KL6
+0uyp7zJjUNed2KKBk3sk57IGpHwRqzXQwk8wVMOuhyyv207cmUadGVtL4GPKUCOY
+p+C0hnSs3Jq0fZJ9lwCg5xDxfg3g++HUm8Gu2D/SYR4pFWED/2J4fkdPRQhxnfmv
+UxphqKf24aDngDwXYLkKlywYGs52J8iOwTQ/DRIruKepqrh66gb06QwnMQe9R5mJ
+qncoi87m2jlKzUdJ5WV4JRmXc4QVu9vRySK9j6e1O2mJeRrYvkf5rDBCHXvOoXET
+6VSHZI//1OJJ5OMiIApERFdT+a5TA/4u82BHdLFerbK23ML0aWOpTc/kMbOwLjF7
+rFF3iJ4Pbhv0gS2wWx/1oqbFZGdTS5XVGiWf/+/rZpN8SeC5Q8cJ1EYqSHyo/eA+
+mI+C6ylqyyODmZ42OQr142xjt6MFj5uBMq3QQGYytZ65ustDfnE/qP6hNJGtE9Lw
+6NVGd6oG37QjQnJ5Y2UgSGFycmluZ3RvbiA8YnJ5Y2VAdWJ1bnR1LmNvbT6IYAQT
+EQIAIAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJUwED9AAoJEBGjAVbg5nYR
+YHkAoN8LIA4RjqX6TtK87+V+5aOSggk1AKC6T20Lo9yte4Q6uXXJWGPNVydG8bQm
+QnJ5Y2UgSGFycmluZ3RvbiA8YnJ5Y2VAY2Fub25pY2FsLmNvbT6IYAQTEQIAIAIb
+AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJUwED9AAoJEBGjAVbg5nYRNDQAoKJ3
+TMTZS3nK+gtYCosXcO4JFYxRAKDdOzV2Hn+dwors+2n3X91Ol3BNArQoQnJ5Y2Ug
+SGFycmluZ3RvbiA8YnJ5Y2VAb3NnLnNhbXN1bmcuY29tPohiBBMRAgAiAhsDBgsJ
+CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCVMBA/QAKCRARowFW4OZ2Ed2iAJ4s0EVg
+9+vuE3wAmeHGZazsvRnakACg0VP0/JUmDDvgm7vOfg5Ex/v82nC0LEJyeWNlIEhh
+cnJpbmd0b24gPGJyeWNlQGJyeWNlaGFycmluZ3Rvbi5vcmc+iGAEExECACACGwMG
+CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCVMBA/QAKCRARowFW4OZ2EfLRAKC/HqDc
+a42tb3lyPxjEJv17tpFxSQCdHJeu88EIYaC5HZHUbG9ZaFoUuwi0LkJyeWNlIEhh
+cnJpbmd0b24gPGJyeWNlLmhhcnJpbmd0b25AdWJ1bnR1LmNvbT6IYAQTEQIAIAIb
+AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJUwED6AAoJEBGjAVbg5nYRHEcAnRlu
+XGX7z2CeQHVccOjXPEx3DhbuAKC3BOql6z4e/oHnuPcrmm+cDVwvn7QxQnJ5Y2Ug
+SGFycmluZ3RvbiA8YnJ5Y2UuaGFycmluZ3RvbkBjYW5vbmljYWwuY29tPohgBBMR
+AgAgAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAlTAQP0ACgkQEaMBVuDmdhHg
+7wCgghXeewn/DeBZh3g0EstNcdSDDU4Anif0Ud+4cdTFS4jWWPJrs/gaPFbDuQIN
+BET+XiQQCADT0bmOAoaZ/3Y7cpvc221+V7Yq1YtUw1QNUgkaku5I+5ee54oIvMrE
+WbADQRd1TqtKjsTS8v1kYFqHC965uhHgXAMHCb6hlN+AzVXsgl/iqQI3knqHAtx5
+1Buqd/PF1t6grELRhGH39ElzkK2D9E1e8Ag6XdWY/jCx/tRypc2HrUJoNsdUFrj8
++VDOYa9Xi1XSzQdRPbWbdzXiIxtA5iY4i8mS3B3wItl1eyzD5UFQzgWK5FLFjfhm
+6/DEpVqlyu1mp+2I7InKz4HW64l0Rkzn5EC7UxUn/chGDWQTtfiyjeia4ANcUC8J
+x5C4NOKXPzXN8anWV3S0oJZh+pGRaUKTAAMFB/9YkEg13DveEPPg8+bqUXtN9YU+
+Ogxcvcyou8I5bzRMxlpJkG3aEsrpAB7mS9D3kpImUa5QA8Y9QoEl4CLxbGIDJIyK
+Nm93OhZrO+A0h8uCTHK45clmqg3UdUKqnXr5V48zIvs56lrpTnlJ3PqNSl2ErDYt
+T7fgODyXAyLPNpCGsz2otYfJ4ne1aYf7i/7gI+UTXpavDUsM90FrX+sydnjbZIi0
+t6HNpmO9sb9o82QjF+hMr28YntWS0LUvOdUmWNnUyrDtZ2fnTzxoOYl0/8hxE+vU
+wcw3vk6+CtNEw4r+VkuKKpZgrP7BIyD8m2dGJn5cfRe8LCP2TIkYh7WBoKQxiEkE
+GBECAAkFAkT+XiQCGwwACgkQEaMBVuDmdhHXAgCg1DelVwB3NVuI4X3w4QAijqlg
+3vsAn13J6LbSbWkCE1GwkJfoF9GzWqNd
+=L+CY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/fill-values b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/fill-values
new file mode 100644
index 0000000..1ed18f8
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: upstream-keyring
+Skeleton: upload-non-native
+Description: Test with a keyring (false positive, from inkscape)
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/desc b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/desc
new file mode 100644
index 0000000..753cd74
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/desc
@@ -0,0 +1,4 @@
+Testname: upstream-keyring
+Check: debian/upstream/signing-key
+Test-Against:
+ public-upstream-key-unusable
diff --git a/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/hints b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/upstream/signing-key/upstream-keyring/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/a-file b/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/a-file
new file mode 100644
index 0000000..c40b9f1
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/a-file
@@ -0,0 +1 @@
+MEANINGFUL CONTENTS
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/install b/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/install
new file mode 100644
index 0000000..8a62397
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/debian/install
@@ -0,0 +1 @@
+a-file usr/lib/$(DEB_BUILD_MULTIARCH)/
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/fill-values b/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/fill-values
new file mode 100644
index 0000000..82217ed
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-install/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: build-multiarch-in-install
+Description: Uses DEB_BUILD_MULTIARCH in d/install
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-install/eval/desc b/t/recipes/checks/debian/variables/build-multiarch-in-install/eval/desc
new file mode 100644
index 0000000..f30475e
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-install/eval/desc
@@ -0,0 +1,4 @@
+Testname: build-multiarch-in-install
+Check: debian/variables
+See-Also:
+ Bug#983219
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-install/eval/hints b/t/recipes/checks/debian/variables/build-multiarch-in-install/eval/hints
new file mode 100644
index 0000000..5ea29b9
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-install/eval/hints
@@ -0,0 +1 @@
+build-multiarch-in-install (source): illegal-variable DEB_BUILD_MULTIARCH [debian/install]
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/a-file b/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/a-file
new file mode 100644
index 0000000..c40b9f1
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/a-file
@@ -0,0 +1 @@
+MEANINGFUL CONTENTS
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/links b/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/links
new file mode 100644
index 0000000..4f759a6
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/debian/links
@@ -0,0 +1 @@
+/usr/lib/$(DEB_BUILD_MULTIARCH)/target /usr/lib/$(DEB_BUILD_MULTIARCH)/not-working
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/fill-values b/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/fill-values
new file mode 100644
index 0000000..bf606c3
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-links/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: build-multiarch-in-links
+Description: Uses DEB_BUILD_MULTIARCH in d/links
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-links/eval/desc b/t/recipes/checks/debian/variables/build-multiarch-in-links/eval/desc
new file mode 100644
index 0000000..324f3b5
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-links/eval/desc
@@ -0,0 +1,4 @@
+Testname: build-multiarch-in-links
+Check: debian/variables
+See-Also:
+ Bug#983219
diff --git a/t/recipes/checks/debian/variables/build-multiarch-in-links/eval/hints b/t/recipes/checks/debian/variables/build-multiarch-in-links/eval/hints
new file mode 100644
index 0000000..d843c89
--- /dev/null
+++ b/t/recipes/checks/debian/variables/build-multiarch-in-links/eval/hints
@@ -0,0 +1 @@
+build-multiarch-in-links (source): illegal-variable DEB_BUILD_MULTIARCH [debian/links]
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/control b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/rules b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/templates b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/fill-values b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/eval/desc b/t/recipes/checks/debian/version-substvars/legacy-binary/eval/desc
new file mode 100644
index 0000000..6d02762
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: debian/version-substvars
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/eval/hints b/t/recipes/checks/debian/version-substvars/legacy-binary/eval/hints
new file mode 100644
index 0000000..47fabf6
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (source): not-binnmuable-all-depends-any binary-data -> binary
+binary (source): maybe-not-arch-all-binnmuable binary -> binary-data
diff --git a/t/recipes/checks/debian/version-substvars/legacy-binary/eval/post-test b/t/recipes/checks/debian/version-substvars/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/desc b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..d8b2ef7
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: debian/version-substvars
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/hints b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..939340b
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (source): not-binnmuable-all-depends-any only-etcfiles -> etcfiles
diff --git a/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/post-test b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/desc b/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..9f00b57
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debian/version-substvars
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/hints b/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..81c169a
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz (source): not-binnmuable-any-depends-any libbaz2-dev -> libbaz2
+libbaz (source): not-binnmuable-any-depends-any libbaz1-dev -> libbaz1
diff --git a/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/post-test b/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/debian/control.in b/t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/debian/control.in
new file mode 100644
index 0000000..bedaad7
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/debian/control.in
@@ -0,0 +1,62 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: program-bin
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ program-data (= ${binary:Version}),
+ program-data-extra (= ${source:Version})
+Provides:
+ provided-package (= ${binary:Version}),
+ provided-package-2 (= ${binary:Version})
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+
+Package: program-data
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ foreign-pkg:any (= ${source:Version})
+Suggests: provided-package (= ${binary:Version})
+Replaces: other-foreign-pkg:any (<< ${binary:Version})
+Recommends: another-foreign-pkg-${suffix}:any (= ${source:Version})
+Description: [% $description %] - data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Data package.
+
+Package: program-utils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ program-bin:any (= ${source:Version}),
+ program-data (>= ${binary:Version})
+Description: [% $description %] - extra utils
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Extra utils.
+
+Package: program-data-extra
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ program-bin:any (= ${binary:Version}),
+Description: [% $description %] - extra data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Extra-Data package.
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/fill-values b/t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/fill-values
new file mode 100644
index 0000000..4ccfdc0
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: version-substvars-general
+Description: Test of substvars
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-general/eval/desc b/t/recipes/checks/debian/version-substvars/version-substvars-general/eval/desc
new file mode 100644
index 0000000..a564fe5
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-substvars-general
+Check: debian/version-substvars
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-general/eval/hints b/t/recipes/checks/debian/version-substvars/version-substvars-general/eval/hints
new file mode 100644
index 0000000..90f8083
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-general/eval/hints
@@ -0,0 +1,7 @@
+version-substvars-general (source): version-substvar-for-external-package Replaces ${binary:Version} program-data -> other-foreign-pkg [debian/control:29]
+version-substvars-general (source): version-substvar-for-external-package Depends ${source:Version} program-data -> foreign-pkg [debian/control:26]
+version-substvars-general (source): not-binnmuable-any-depends-any program-utils -> program-bin
+version-substvars-general (source): not-binnmuable-any-depends-all program-utils -> program-data
+version-substvars-general (source): not-binnmuable-any-depends-all program-bin -> program-data
+version-substvars-general (source): not-binnmuable-all-depends-any program-data-extra -> program-bin
+version-substvars-general (source): maybe-not-arch-all-binnmuable program-bin -> program-data-extra
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/debian/control.in b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/debian/control.in
new file mode 100644
index 0000000..200f9ad
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/debian/control.in
@@ -0,0 +1,57 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: program-bin
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ program-data (= ${binary:Version}),
+ program-data-extra (= ${source:Version})
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+
+Package: program-data
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ foreign-pkg:any (= ${Source-Version})
+Replaces: other-foreign-pkg:any (<< ${binary:Version})
+Description: [% $description %] - data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Data package.
+
+Package: program-utils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ program-bin:any (= ${source:Version}),
+ program-data (>= ${binary:Version})
+Description: [% $description %] - extra utils
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Extra utils.
+
+Package: program-data-extra
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ program-bin:any (= ${binary:Version}),
+Description: [% $description %] - extra data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Extra-Data package.
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/fill-values b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/fill-values
new file mode 100644
index 0000000..ec9740c
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: version-substvars-obsolete
+Description: Test of substvars
+Extra-Build-Depends: dpkg (<< 1.17.2)
+# dpkg 1.18.11 Will error out for ${source-version}
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/desc b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/desc
new file mode 100644
index 0000000..25c3fcb
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/desc
@@ -0,0 +1,3 @@
+Testname: version-substvars-obsolete
+Check: debian/version-substvars
+# dpkg 1.18.11 Will error out for ${source-version}
diff --git a/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/hints b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/hints
new file mode 100644
index 0000000..e1b5e52
--- /dev/null
+++ b/t/recipes/checks/debian/version-substvars/version-substvars-obsolete/eval/hints
@@ -0,0 +1,8 @@
+version-substvars-obsolete (source): version-substvar-for-external-package program-data -> other-foreign-pkg
+version-substvars-obsolete (source): version-substvar-for-external-package program-data -> foreign-pkg
+version-substvars-obsolete (source): substvar-source-version-is-deprecated program-data
+version-substvars-obsolete (source): not-binnmuable-any-depends-any program-utils -> program-bin
+version-substvars-obsolete (source): not-binnmuable-any-depends-all program-utils -> program-data
+version-substvars-obsolete (source): not-binnmuable-any-depends-all program-bin -> program-data
+version-substvars-obsolete (source): not-binnmuable-all-depends-any program-data-extra -> program-bin
+version-substvars-obsolete (source): maybe-not-arch-all-binnmuable program-bin -> program-data-extra
diff --git a/t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..bd03c4e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/changes-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/debian/watch/changes-upstream-signature-missing/build-spec/fill-values b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/fill-values
new file mode 100644
index 0000000..c3943fa
--- /dev/null
+++ b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: changes-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/debian/watch/changes-upstream-signature-missing/build-spec/pre-build b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/pre-build
new file mode 100755
index 0000000..2d5a158
--- /dev/null
+++ b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/build-spec/pre-build
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+NAME="changes-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/debian/watch/changes-upstream-signature-missing/eval/desc b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/desc
new file mode 100644
index 0000000..6c8544d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/desc
@@ -0,0 +1,3 @@
+Testname: changes-upstream-signature-missing
+Check: debian/watch
+# dpkg 1.18.5 required in order to create multiple tarballs with detached signatures
diff --git a/t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/hints b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/hints
new file mode 100644
index 0000000..a1301ce
--- /dev/null
+++ b/t/recipes/checks/debian/watch/changes-upstream-signature-missing/eval/hints
@@ -0,0 +1,2 @@
+changes-upstream-signature-missing (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+changes-upstream-signature-missing (source): debian-watch-could-verify-download debian/upstream/signing-key.asc [debian/watch]
diff --git a/t/recipes/checks/debian/watch/filenamemangle/build-spec/debian/watch b/t/recipes/checks/debian/watch/filenamemangle/build-spec/debian/watch
new file mode 100644
index 0000000..c266694
--- /dev/null
+++ b/t/recipes/checks/debian/watch/filenamemangle/build-spec/debian/watch
@@ -0,0 +1,5 @@
+version=4
+opts=\
+ downloadurlmangle=s/\/releases\/tag\/(\d\S+)$/\/archive\/$1\.tar\.gz/,\
+ filenamemangle=s/.+\/tag\/(\d\S+)$/foot-$1\.tar\.gz/ \
+https://codeberg.org/dnkl/foot/releases .*/releases/tag/(\d\S+)
diff --git a/t/recipes/checks/debian/watch/filenamemangle/build-spec/fill-values b/t/recipes/checks/debian/watch/filenamemangle/build-spec/fill-values
new file mode 100644
index 0000000..b0aec17
--- /dev/null
+++ b/t/recipes/checks/debian/watch/filenamemangle/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: filenamemangle
+Description: Option filenamemangle in d/watch
diff --git a/t/recipes/checks/debian/watch/filenamemangle/eval/desc b/t/recipes/checks/debian/watch/filenamemangle/eval/desc
new file mode 100644
index 0000000..9c5d3bc
--- /dev/null
+++ b/t/recipes/checks/debian/watch/filenamemangle/eval/desc
@@ -0,0 +1,2 @@
+Testname: filenamemangle
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/filenamemangle/eval/hints b/t/recipes/checks/debian/watch/filenamemangle/eval/hints
new file mode 100644
index 0000000..3cb3be0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/filenamemangle/eval/hints
@@ -0,0 +1,2 @@
+filenamemangle (source): prefer-uscan-symlink filenamemangle s/.+\/tag\/(\d\S+)$/foot-$1\.tar\.gz/ [debian/watch:5]
+filenamemangle (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/desc b/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..8b1333e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: debian/watch
+See-Also:
+ Bug#497347
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/hints b/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..3e324c4
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/hints
@@ -0,0 +1 @@
+generic-dh-make-2008 (source): debian-watch-file-is-missing
diff --git a/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/post-test b/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..57a489c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description uses only UTF-8 high bytes chars.
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/eval/desc b/t/recipes/checks/debian/watch/legacy-foo++/eval/desc
new file mode 100644
index 0000000..b8bd838
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/eval/hints b/t/recipes/checks/debian/watch/legacy-foo++/eval/hints
new file mode 100644
index 0000000..5607bd3
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (source): debian-watch-file-in-native-package [debian/watch]
diff --git a/t/recipes/checks/debian/watch/legacy-foo++/eval/post-test b/t/recipes/checks/debian/watch/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..15e1052
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..900fab6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,4 @@
+maintainer-scripts (source): debian-watch-uses-insecure-uri http://domain.tld/foo-(.+)\.tar\.gz [debian/watch:11]
+maintainer-scripts (source): debian-watch-not-mangling-version opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/ [debian/watch:7]
+maintainer-scripts (source): debian-watch-not-mangling-version options=active http://domain.tld/foo-(.+)\.tar\.gz [debian/watch:11]
+maintainer-scripts (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/eval/desc b/t/recipes/checks/debian/watch/legacy-scripts/eval/desc
new file mode 100644
index 0000000..dc395d0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/eval/hints b/t/recipes/checks/debian/watch/legacy-scripts/eval/hints
new file mode 100644
index 0000000..eb22aa3
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/eval/hints
@@ -0,0 +1,7 @@
+scripts (source): debian-watch-uses-insecure-uri http://qa.debian.org/watch/sf.php?project=foo [debian/watch:5]
+scripts (source): debian-watch-uses-insecure-uri http://ftp.sf.net/foo/foo_bar(.+)\.Z [debian/watch:8]
+scripts (source): debian-watch-mangles-debian-version-improperly opts="uversionmangle=s/$/ds/" http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate [debian/watch:5]
+scripts (source): debian-watch-lacks-sourceforge-redirector http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate [debian/watch:8]
+scripts (source): debian-watch-file-uses-deprecated-sf-redirector-method http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate [debian/watch:5]
+scripts (source): debian-watch-file-specifies-old-upstream-version 5 [debian/watch]
+scripts (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/legacy-scripts/eval/post-test b/t/recipes/checks/debian/watch/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/debian/watch b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/debian/watch
new file mode 100644
index 0000000..6cc9db4
--- /dev/null
+++ b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# watch file with no version mangling, even though there's a dfsg in the
+# package version number.
+
+version=2
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
+
+# version mangling is not needed in this case:
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz 0.24 uupdate
+
+# version mangling *is* needed in this case:
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/fill-values b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/fill-values
new file mode 100644
index 0000000..a804d99
--- /dev/null
+++ b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: repack-indicator-in-debian-revision
+Skeleton: upload-non-native
+Version: 1-debian1
+Description: Avoid false positives in Devuan (#931846)
diff --git a/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/desc b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/desc
new file mode 100644
index 0000000..cff1b33
--- /dev/null
+++ b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/desc
@@ -0,0 +1,2 @@
+Testname: repack-indicator-in-debian-revision
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/hints b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/hints
new file mode 100644
index 0000000..e758710
--- /dev/null
+++ b/t/recipes/checks/debian/watch/repack-indicator-in-debian-revision/eval/hints
@@ -0,0 +1 @@
+repack-indicator-in-debian-revision (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/comments-only/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/comments-only/build-spec/debian/watch
new file mode 100644
index 0000000..b0c64af
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/comments-only/build-spec/debian/watch
@@ -0,0 +1,2 @@
+# explanation for why this file is empty
+# presumably similar to the file that gave rise to Bug#965385
diff --git a/t/recipes/checks/debian/watch/standard/comments-only/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/comments-only/build-spec/fill-values
new file mode 100644
index 0000000..f599495
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/comments-only/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: comments-only
+Skeleton: source-non-native
+Description: Only comments in watch file (false positive)
diff --git a/t/recipes/checks/debian/watch/standard/comments-only/eval/desc b/t/recipes/checks/debian/watch/standard/comments-only/eval/desc
new file mode 100644
index 0000000..7edcb5e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/comments-only/eval/desc
@@ -0,0 +1,7 @@
+Testname: comments-only
+Check: debian/watch/standard
+Test-Against:
+ missing-debian-watch-file-standard
+See-Also:
+ Bug#965385,
+ Bug#992569
diff --git a/t/recipes/checks/debian/watch/standard/comments-only/eval/hints b/t/recipes/checks/debian/watch/standard/comments-only/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/comments-only/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/control b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..57a489c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description uses only UTF-8 high bytes chars.
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/desc b/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/desc
new file mode 100644
index 0000000..fd35332
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/hints b/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/hints
new file mode 100644
index 0000000..6322360
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (source): unknown-debian-watch-file-standard 0 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/post-test b/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/pre-build b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/desc b/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/desc
new file mode 100644
index 0000000..b13e704
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/hints b/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/hints
new file mode 100644
index 0000000..8c75be5
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/hints
@@ -0,0 +1,3 @@
+scripts (source): older-debian-watch-file-standard 3 [debian/watch]
+scripts (source): multiple-debian-watch-file-standards 2 3 [debian/watch]
+scripts (source): debian-watch-file-standard 3 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/post-test b/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/debian/watch/standard/no-version/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/no-version/build-spec/debian/watch
new file mode 100644
index 0000000..4d3b502
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/no-version/build-spec/debian/watch
@@ -0,0 +1 @@
+http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/watch/standard/no-version/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/no-version/build-spec/fill-values
new file mode 100644
index 0000000..41649e0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/no-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: no-version
+Skeleton: upload-non-native
+Description: Watch file with no version
diff --git a/t/recipes/checks/debian/watch/standard/no-version/eval/desc b/t/recipes/checks/debian/watch/standard/no-version/eval/desc
new file mode 100644
index 0000000..c16a93c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/no-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-version
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/no-version/eval/hints b/t/recipes/checks/debian/watch/standard/no-version/eval/hints
new file mode 100644
index 0000000..b3051e0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/no-version/eval/hints
@@ -0,0 +1 @@
+no-version (source): missing-debian-watch-file-standard [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/version-1/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/version-1/build-spec/debian/watch
new file mode 100644
index 0000000..8cd5a87
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-1/build-spec/debian/watch
@@ -0,0 +1,2 @@
+version=1
+http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/watch/standard/version-1/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/version-1/build-spec/fill-values
new file mode 100644
index 0000000..1f9c306
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-1/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: version-1
+Skeleton: upload-non-native
+Description: Watch file of version 1
diff --git a/t/recipes/checks/debian/watch/standard/version-1/eval/desc b/t/recipes/checks/debian/watch/standard/version-1/eval/desc
new file mode 100644
index 0000000..0304f2e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-1/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-1
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/version-1/eval/hints b/t/recipes/checks/debian/watch/standard/version-1/eval/hints
new file mode 100644
index 0000000..6d27d24
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-1/eval/hints
@@ -0,0 +1 @@
+version-1 (source): unknown-debian-watch-file-standard 1 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/version-2/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/version-2/build-spec/debian/watch
new file mode 100644
index 0000000..a201846
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-2/build-spec/debian/watch
@@ -0,0 +1,2 @@
+version=2
+http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/watch/standard/version-2/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/version-2/build-spec/fill-values
new file mode 100644
index 0000000..d00cdfa
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-2/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: version-2
+Skeleton: upload-non-native
+Description: Watch file of version 2
diff --git a/t/recipes/checks/debian/watch/standard/version-2/eval/desc b/t/recipes/checks/debian/watch/standard/version-2/eval/desc
new file mode 100644
index 0000000..3d5177c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-2/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-2
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/version-2/eval/hints b/t/recipes/checks/debian/watch/standard/version-2/eval/hints
new file mode 100644
index 0000000..fd0f141
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-2/eval/hints
@@ -0,0 +1,2 @@
+version-2 (source): obsolete-debian-watch-file-standard 2 [debian/watch]
+version-2 (source): debian-watch-file-standard 2 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/version-3/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/version-3/build-spec/debian/watch
new file mode 100644
index 0000000..5750c6f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-3/build-spec/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/watch/standard/version-3/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/version-3/build-spec/fill-values
new file mode 100644
index 0000000..ec6b701
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-3/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: version-3
+Skeleton: upload-non-native
+Description: Watch file of version 3
diff --git a/t/recipes/checks/debian/watch/standard/version-3/eval/desc b/t/recipes/checks/debian/watch/standard/version-3/eval/desc
new file mode 100644
index 0000000..fbb5105
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-3/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-3
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/version-3/eval/hints b/t/recipes/checks/debian/watch/standard/version-3/eval/hints
new file mode 100644
index 0000000..31501a1
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-3/eval/hints
@@ -0,0 +1,2 @@
+version-3 (source): older-debian-watch-file-standard 3 [debian/watch]
+version-3 (source): debian-watch-file-standard 3 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/version-4/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/version-4/build-spec/debian/watch
new file mode 100644
index 0000000..259bb88
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-4/build-spec/debian/watch
@@ -0,0 +1,2 @@
+version=4
+http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/watch/standard/version-4/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/version-4/build-spec/fill-values
new file mode 100644
index 0000000..d7fd7de
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-4/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: version-4
+Skeleton: upload-non-native
+Description: Watch file of version 4
diff --git a/t/recipes/checks/debian/watch/standard/version-4/eval/desc b/t/recipes/checks/debian/watch/standard/version-4/eval/desc
new file mode 100644
index 0000000..4c3c00e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-4/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-4
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/version-4/eval/hints b/t/recipes/checks/debian/watch/standard/version-4/eval/hints
new file mode 100644
index 0000000..244ebd0
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-4/eval/hints
@@ -0,0 +1 @@
+version-4 (source): debian-watch-file-standard 4 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/version-5/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/version-5/build-spec/debian/watch
new file mode 100644
index 0000000..6b8a6f4
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-5/build-spec/debian/watch
@@ -0,0 +1,2 @@
+version=5
+http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
diff --git a/t/recipes/checks/debian/watch/standard/version-5/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/version-5/build-spec/fill-values
new file mode 100644
index 0000000..7f069bb
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-5/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: version-5
+Skeleton: upload-non-native
+Description: Watch file of version 5
diff --git a/t/recipes/checks/debian/watch/standard/version-5/eval/desc b/t/recipes/checks/debian/watch/standard/version-5/eval/desc
new file mode 100644
index 0000000..cd8cc36
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-5/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-5
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/version-5/eval/hints b/t/recipes/checks/debian/watch/standard/version-5/eval/hints
new file mode 100644
index 0000000..5ebdc82
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/version-5/eval/hints
@@ -0,0 +1 @@
+version-5 (source): unknown-debian-watch-file-standard 5 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2340930
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/changelog.in
@@ -0,0 +1,14 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0-1) unstable; urgency=low
+
+ * Provoke debian-watch-file-specifies-old-upstream-version.
+
+ -- [% $author %] Thu, 01 Jan 2009 08:34:20 -0800
diff --git a/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..d83f52c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFpEMFgBEADNYEVhITIZ/rVECuLWxDJUk4rV+v6IfJCxJzuXRfqbjkdLNsCD
+P83FOdvcxNQSrWPdSCgV1tDeDc18pNmfWDnu90zrLRipR1u7ln/ajTpx0RI7tHaO
+SCIJfo42iw7firz9IoegqZaH8LKCh63EaXxLD98MgRA9fcBTEaBSD+Wxh8yYL/5b
+bjdUu2FNNEi8f0POBAB3XInu80mqkEeVYPijd2T8Tc5xaxD90OBuuNGSiqKrJ+lB
+9TSxwr5E/9N+6fnCjrR4FVkZtyTELAdZm4CpQN26tinVolG1gDpMz5B27471oXPY
+9K92/UzTRllwuZ09pdBwpd4gu9mTXMLwOJ/S/+LJeSfCmby7QZiM/61NpS5EyaYg
+h+m8YyTUtulFqpWd2HxttXz0ii5C01LKUrNPqlQrxmfrACJ1tHvcngVQm4wyqMHq
+Uw5LYJ8FM7eS3JPeHpHqFGpY1VKx3nZAZGx+1As1ClvT7Og1KyuVY59w8qNaeJ8C
+eA9XrwGVbMm9PiTP+fyBykMaYpf5aGucH+GeBtkvmpyOyXqf7zrOqyRvY0QaMgt1
+n3jXcD7AZKHCp0wY6LYVa/sKqrDJtxoloBA6kV2Ui3kClOWmlfvm+i1Ecg7vCG8d
+QrJtZxo1Wu54dIr+g0qMFjlBA69OFYRXPzoaWFW1BKtNAYFoej9vW/f+0wARAQAB
+tDtMaW50aWFuIFRlc3QgVXBzdHJlYW0gS2V5IChXb3JraW5nLCBObyBFeHBpcmF0
+aW9uLCBNaW5pbWFsKYkCTgQTAQoAOBYhBPr6VG+KNaSTu27AqFtc4nOV5lb+BQJa
+RDBYAhsDBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEFtc4nOV5lb+B3kQAMMm
+umaOq12REmLdKWMN7GOsxzV6fTF5xBjTgKfY9DCBeNV7tSuJGpGT9MaxRD5Yu/1p
+PDMGC9TkDxOEULBucmp7M//3FCuSnGQFBcObHNXY9FmLQ5MZJ32QUi8KLNIcDjuF
+AKMEYJ5AT50pBsGyLVGXL27HWndNV7jMeIX64gIN5chPKMHqCn0g/wTTaPY/kkEs
+MYirGmBQ83cIAv/1nywtIPeBnj+02Vu3B1hJIZYgmDQZwjZdd7HTxsVW0LAZEXs5
+gtWArfHO3zNKy6WkVE+xhNgZuVO3EyV46JW0bQ2RC7yY70/qFxX71co6p2+VaZgf
+198QtRddq9cKaSe68BnZesIp9YnT3xJVYeL6IrrMYNIZxlslL4/b+gKU3epHyFes
+tQP1tqkhnmC+Bxds6kx0ngPVfTfWM4Ruaeot51BuenZu82S1B3FB5B0qruCNyKre
+nl53nPaNkOERPOF654AXoIODTgnyaocCaQTPztOYm52X8u9qogf9wf1eEA9EZIBI
+WSbn3eCohN6qWvsdC0MMRDu0HB4S1QUyyOceNflXePg6SPvJSPHuOG/5DShcN6ah
+mgVMH44ecAWsh/8Uj1+Z39Ea07nfE3lCU/WR+DXJb56WaQChXN7AKITrNRd/Q61X
+jqrB6jWRSeVBKDidsFwI7oALdSgONE/ZEy+M4j76uQINBFpEMFgBEADCWJECQ6K1
+HgH7OwX7eY8ggEdCOYI/cTGx9rfzdqx67tc7fsF63BrO+nTHylcwXi9IAs695zvp
+miCnCu1EUVjfM+nD52kocVEhzFc/lcCq6d9ac7H9ItJgf3Qc2HpwcqvsNUTWPDMU
+VjQ8ciZ57qq601kIjVPuHjKRY96K9iHxUeVGh2n74JLYZL5IKO08WtQgPmPVLFDX
+X2iZXnZdW/X4xTYB+/+V/D1LyUIP3X7CzBNzJuYjP3vGDH3h4ulLWnDSmxKs6Aep
+a0sKu6+YD14/xXOi+buc0m6ghP7WePl9gYi6XePLdVPeLC9aiDi1tCWEVbbsinhw
+ODxLwndXCGUc+AVySdUrUMuRchNRI6Z5PW/a/RsuVmyORg1RSuFGLeJQZj1pAw6x
+WjxgioqoqydECIx4gCwGO/0GNZCfe5n11vuMEZ7SKbnrf5d58EQXOgV+yZumRKkz
+OmdKICjql6w5CealrvP/si2kfD3oVwqBeuM0aM8HmWTfrdESWrd8xqAxBlcDsIun
+mpsJ6obGN2mOaMFmOljukdzDFgMJMIrcS4UcGNzyQWUbz6JOSfPq96RkrTVsXMKy
+40Ygtwe63PS9lXGT2ojmiV193UrGJqEUjuAL79KXWkxTRFxvFwck9qK5RAX2F1GQ
+4ELDAFSKr8t6IpiYiTXaA3OTJfxJMK191QARAQABiQI2BBgBCgAgFiEE+vpUb4o1
+pJO7bsCoW1zic5XmVv4FAlpEMFgCGwwACgkQW1zic5XmVv4VEA//dOFj60ktKKsl
+CgRdtnuo9Sdd7IjShic67qoT0gFZRiMATaryM4ifjAcl03rxzGk5MOsltHFJr5h+
+RmaudKhCyksd1nQ2dBpFgPHyxVTS5/k+wMelP9kPailqiGUA735SP5mO/28YOT8v
+Xa4rwnTn6s9Ga7+lMN4I7LKRo47uGG89Og381tHSkW8DjFuLTme3TQDysG2MGlSY
+vTPJmF7xPCuG3s8J5RIrVwWbN0orWen9YWT1923+0CAZG8M+7AFxU5xxCFIBRKMw
+2tw/ovjtE9czuT743LMPlUJRc1pveYjVhLY9xUMQsPO6j41pdIL2X7txFjQqzjFl
+hpIJviupVWlV0vSS0Q7nAtvLTsjhXSyQriKqmfdsdcxXBz7LGRxEi5l/9zuW5GMy
+kD5ikQ05li6wkBdQYLS3ZBYkrj94LpNEqNZE3sfX33Yc5cpE2Bc4Ga+MxYxQwrfz
+sNNSp8jdf2FyFvlvRkO8UUgsW5PPOuwthb05bx7dQGfKvqySpd0JLrhxw8G8odJh
+PGzl0ig4F8xEitMc0lms5yzQGvtpEvSYLUs+4EJaf/XN9nRS+4e+GciTmp9XUM/5
+EtKOKXVuhHyaizqfpF4VR0Tbg65HHE3zLJMr7XTUGC0Zr+bj0n/V177R0XgptY7Y
+jr6SfdNikIDjGYa+yuN6KGQsriza1aA=
+=CYsi
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/watch b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/watch
new file mode 100644
index 0000000..dc196dd
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/debian/watch
@@ -0,0 +1,32 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate
+
+# Test additional Sourceforge patterns. (See Bug#510398)
+ftp://upload.sourceforge.net/pub/sourceforge/s/so/soprano/ \
+ soprano-(.*)\.tar\.bz2
+http://sourceforge.net/project/showfiles.php?group_id=100501 \
+ .*/octaviz/octaviz-([\d\.]+).tar.gz.*
+http://sourceforge.net/projects/synce/files http://downloads.sourceforge.net/.+/kcemirror-(.+).tar.gz.*
+
+# Unknown version number.
+version=42
+
+# Specifies the same version number as the package.
+https://example.com/ foo([\d.]+)\.tar\.gz 2.0.ds1-1 uupdate
+
+# Deprecated githubredir
+http://githubredir.debian.net/github/username/project /(.*).tar.gz
+
+# without any pgpsigurlmangle
+
+http://insecure.com /(.*).tar.gz
+https://secure.com /(.*).tar.gz
+
+# False positive for debian-watch-uses-insecure-uri
+http://sf.net/uses/redirector-([^-]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/fill-values b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/fill-values
new file mode 100644
index 0000000..185084f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/watch-file-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-general
+Skeleton: upload-non-native
+Version: 2.0.ds1-1
+Description: General watch file checks
diff --git a/t/recipes/checks/debian/watch/standard/watch-file-general/eval/desc b/t/recipes/checks/debian/watch/standard/watch-file-general/eval/desc
new file mode 100644
index 0000000..f376aa2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/watch-file-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: watch-file-general
+See-Also: Debian Bug#510398
+Check: debian/watch/standard
diff --git a/t/recipes/checks/debian/watch/standard/watch-file-general/eval/hints b/t/recipes/checks/debian/watch/standard/watch-file-general/eval/hints
new file mode 100644
index 0000000..75c45f7
--- /dev/null
+++ b/t/recipes/checks/debian/watch/standard/watch-file-general/eval/hints
@@ -0,0 +1,4 @@
+watch-file-general (source): unknown-debian-watch-file-standard 42 [debian/watch]
+watch-file-general (source): older-debian-watch-file-standard 3 [debian/watch]
+watch-file-general (source): multiple-debian-watch-file-standards 2 3 42 [debian/watch]
+watch-file-general (source): debian-watch-file-standard 3 [debian/watch]
diff --git a/t/recipes/checks/debian/watch/two-upstream-components/build-spec/debian/watch b/t/recipes/checks/debian/watch/two-upstream-components/build-spec/debian/watch
new file mode 100644
index 0000000..ae00c12
--- /dev/null
+++ b/t/recipes/checks/debian/watch/two-upstream-components/build-spec/debian/watch
@@ -0,0 +1,6 @@
+version=4
+https://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-([.[:digit:]]+).tar.gz
+
+opts="component=x1" https://github.com/a/x1/tags archives/v?([\d\-]+)\.tar\.gz
+
+opts="component=x2" https://github.com/a/x2 archives/v?([\d\-]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/two-upstream-components/build-spec/fill-values b/t/recipes/checks/debian/watch/two-upstream-components/build-spec/fill-values
new file mode 100644
index 0000000..b98e8f2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/two-upstream-components/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: two-upstream-components
+Skeleton: upload-non-native
+Description: Contains a watch file with 2 components
diff --git a/t/recipes/checks/debian/watch/two-upstream-components/eval/desc b/t/recipes/checks/debian/watch/two-upstream-components/eval/desc
new file mode 100644
index 0000000..37a05ff
--- /dev/null
+++ b/t/recipes/checks/debian/watch/two-upstream-components/eval/desc
@@ -0,0 +1,2 @@
+Testname: two-upstream-components
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/two-upstream-components/eval/hints b/t/recipes/checks/debian/watch/two-upstream-components/eval/hints
new file mode 100644
index 0000000..d7b3f59
--- /dev/null
+++ b/t/recipes/checks/debian/watch/two-upstream-components/eval/hints
@@ -0,0 +1,3 @@
+two-upstream-components (source): debian-watch-upstream-component https://github.com/a/x2 x2 [debian/watch:6]
+two-upstream-components (source): debian-watch-upstream-component https://github.com/a/x1/tags x1 [debian/watch:4]
+two-upstream-components (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..bd03c4e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1 @@
+Too lazy to fake this file
diff --git a/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/watch
new file mode 100644
index 0000000..6f30e20
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/debian/watch
@@ -0,0 +1,4 @@
+version=3
+# Trailing whitespace and missing continuation backslash intentional!
+opts=pgpsigurlmangle=s/$/.asc/
+https://www.example.com/Downloads/code-(.+)code\.zip
diff --git a/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/fill-values
new file mode 100644
index 0000000..b764faa
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-bug-765995/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-bug-765995
+Skeleton: upload-non-native
+Version: 2.0-1
+Description: Watch file that caused undef warning
diff --git a/t/recipes/checks/debian/watch/watch-file-bug-765995/eval/desc b/t/recipes/checks/debian/watch/watch-file-bug-765995/eval/desc
new file mode 100644
index 0000000..ff09232
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-bug-765995/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-bug-765995
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-bug-765995/eval/hints b/t/recipes/checks/debian/watch/watch-file-bug-765995/eval/hints
new file mode 100644
index 0000000..93efc33
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-bug-765995/eval/hints
@@ -0,0 +1,3 @@
+watch-file-bug-765995 (source): debian-watch-line-invalid opts=pgpsigurlmangle=s/$/.asc/ [debian/watch:3]
+watch-file-bug-765995 (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+watch-file-bug-765995 (source): debian-watch-could-verify-download debian/upstream/signing-key.asc [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2340930
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/changelog.in
@@ -0,0 +1,14 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0-1) unstable; urgency=low
+
+ * Provoke debian-watch-file-specifies-old-upstream-version.
+
+ -- [% $author %] Thu, 01 Jan 2009 08:34:20 -0800
diff --git a/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..d83f52c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFpEMFgBEADNYEVhITIZ/rVECuLWxDJUk4rV+v6IfJCxJzuXRfqbjkdLNsCD
+P83FOdvcxNQSrWPdSCgV1tDeDc18pNmfWDnu90zrLRipR1u7ln/ajTpx0RI7tHaO
+SCIJfo42iw7firz9IoegqZaH8LKCh63EaXxLD98MgRA9fcBTEaBSD+Wxh8yYL/5b
+bjdUu2FNNEi8f0POBAB3XInu80mqkEeVYPijd2T8Tc5xaxD90OBuuNGSiqKrJ+lB
+9TSxwr5E/9N+6fnCjrR4FVkZtyTELAdZm4CpQN26tinVolG1gDpMz5B27471oXPY
+9K92/UzTRllwuZ09pdBwpd4gu9mTXMLwOJ/S/+LJeSfCmby7QZiM/61NpS5EyaYg
+h+m8YyTUtulFqpWd2HxttXz0ii5C01LKUrNPqlQrxmfrACJ1tHvcngVQm4wyqMHq
+Uw5LYJ8FM7eS3JPeHpHqFGpY1VKx3nZAZGx+1As1ClvT7Og1KyuVY59w8qNaeJ8C
+eA9XrwGVbMm9PiTP+fyBykMaYpf5aGucH+GeBtkvmpyOyXqf7zrOqyRvY0QaMgt1
+n3jXcD7AZKHCp0wY6LYVa/sKqrDJtxoloBA6kV2Ui3kClOWmlfvm+i1Ecg7vCG8d
+QrJtZxo1Wu54dIr+g0qMFjlBA69OFYRXPzoaWFW1BKtNAYFoej9vW/f+0wARAQAB
+tDtMaW50aWFuIFRlc3QgVXBzdHJlYW0gS2V5IChXb3JraW5nLCBObyBFeHBpcmF0
+aW9uLCBNaW5pbWFsKYkCTgQTAQoAOBYhBPr6VG+KNaSTu27AqFtc4nOV5lb+BQJa
+RDBYAhsDBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEFtc4nOV5lb+B3kQAMMm
+umaOq12REmLdKWMN7GOsxzV6fTF5xBjTgKfY9DCBeNV7tSuJGpGT9MaxRD5Yu/1p
+PDMGC9TkDxOEULBucmp7M//3FCuSnGQFBcObHNXY9FmLQ5MZJ32QUi8KLNIcDjuF
+AKMEYJ5AT50pBsGyLVGXL27HWndNV7jMeIX64gIN5chPKMHqCn0g/wTTaPY/kkEs
+MYirGmBQ83cIAv/1nywtIPeBnj+02Vu3B1hJIZYgmDQZwjZdd7HTxsVW0LAZEXs5
+gtWArfHO3zNKy6WkVE+xhNgZuVO3EyV46JW0bQ2RC7yY70/qFxX71co6p2+VaZgf
+198QtRddq9cKaSe68BnZesIp9YnT3xJVYeL6IrrMYNIZxlslL4/b+gKU3epHyFes
+tQP1tqkhnmC+Bxds6kx0ngPVfTfWM4Ruaeot51BuenZu82S1B3FB5B0qruCNyKre
+nl53nPaNkOERPOF654AXoIODTgnyaocCaQTPztOYm52X8u9qogf9wf1eEA9EZIBI
+WSbn3eCohN6qWvsdC0MMRDu0HB4S1QUyyOceNflXePg6SPvJSPHuOG/5DShcN6ah
+mgVMH44ecAWsh/8Uj1+Z39Ea07nfE3lCU/WR+DXJb56WaQChXN7AKITrNRd/Q61X
+jqrB6jWRSeVBKDidsFwI7oALdSgONE/ZEy+M4j76uQINBFpEMFgBEADCWJECQ6K1
+HgH7OwX7eY8ggEdCOYI/cTGx9rfzdqx67tc7fsF63BrO+nTHylcwXi9IAs695zvp
+miCnCu1EUVjfM+nD52kocVEhzFc/lcCq6d9ac7H9ItJgf3Qc2HpwcqvsNUTWPDMU
+VjQ8ciZ57qq601kIjVPuHjKRY96K9iHxUeVGh2n74JLYZL5IKO08WtQgPmPVLFDX
+X2iZXnZdW/X4xTYB+/+V/D1LyUIP3X7CzBNzJuYjP3vGDH3h4ulLWnDSmxKs6Aep
+a0sKu6+YD14/xXOi+buc0m6ghP7WePl9gYi6XePLdVPeLC9aiDi1tCWEVbbsinhw
+ODxLwndXCGUc+AVySdUrUMuRchNRI6Z5PW/a/RsuVmyORg1RSuFGLeJQZj1pAw6x
+WjxgioqoqydECIx4gCwGO/0GNZCfe5n11vuMEZ7SKbnrf5d58EQXOgV+yZumRKkz
+OmdKICjql6w5CealrvP/si2kfD3oVwqBeuM0aM8HmWTfrdESWrd8xqAxBlcDsIun
+mpsJ6obGN2mOaMFmOljukdzDFgMJMIrcS4UcGNzyQWUbz6JOSfPq96RkrTVsXMKy
+40Ygtwe63PS9lXGT2ojmiV193UrGJqEUjuAL79KXWkxTRFxvFwck9qK5RAX2F1GQ
+4ELDAFSKr8t6IpiYiTXaA3OTJfxJMK191QARAQABiQI2BBgBCgAgFiEE+vpUb4o1
+pJO7bsCoW1zic5XmVv4FAlpEMFgCGwwACgkQW1zic5XmVv4VEA//dOFj60ktKKsl
+CgRdtnuo9Sdd7IjShic67qoT0gFZRiMATaryM4ifjAcl03rxzGk5MOsltHFJr5h+
+RmaudKhCyksd1nQ2dBpFgPHyxVTS5/k+wMelP9kPailqiGUA735SP5mO/28YOT8v
+Xa4rwnTn6s9Ga7+lMN4I7LKRo47uGG89Og381tHSkW8DjFuLTme3TQDysG2MGlSY
+vTPJmF7xPCuG3s8J5RIrVwWbN0orWen9YWT1923+0CAZG8M+7AFxU5xxCFIBRKMw
+2tw/ovjtE9czuT743LMPlUJRc1pveYjVhLY9xUMQsPO6j41pdIL2X7txFjQqzjFl
+hpIJviupVWlV0vSS0Q7nAtvLTsjhXSyQriKqmfdsdcxXBz7LGRxEi5l/9zuW5GMy
+kD5ikQ05li6wkBdQYLS3ZBYkrj94LpNEqNZE3sfX33Yc5cpE2Bc4Ga+MxYxQwrfz
+sNNSp8jdf2FyFvlvRkO8UUgsW5PPOuwthb05bx7dQGfKvqySpd0JLrhxw8G8odJh
+PGzl0ig4F8xEitMc0lms5yzQGvtpEvSYLUs+4EJaf/XN9nRS+4e+GciTmp9XUM/5
+EtKOKXVuhHyaizqfpF4VR0Tbg65HHE3zLJMr7XTUGC0Zr+bj0n/V177R0XgptY7Y
+jr6SfdNikIDjGYa+yuN6KGQsriza1aA=
+=CYsi
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/watch
new file mode 100644
index 0000000..dc196dd
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-general/build-spec/debian/watch
@@ -0,0 +1,32 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate
+
+# Test additional Sourceforge patterns. (See Bug#510398)
+ftp://upload.sourceforge.net/pub/sourceforge/s/so/soprano/ \
+ soprano-(.*)\.tar\.bz2
+http://sourceforge.net/project/showfiles.php?group_id=100501 \
+ .*/octaviz/octaviz-([\d\.]+).tar.gz.*
+http://sourceforge.net/projects/synce/files http://downloads.sourceforge.net/.+/kcemirror-(.+).tar.gz.*
+
+# Unknown version number.
+version=42
+
+# Specifies the same version number as the package.
+https://example.com/ foo([\d.]+)\.tar\.gz 2.0.ds1-1 uupdate
+
+# Deprecated githubredir
+http://githubredir.debian.net/github/username/project /(.*).tar.gz
+
+# without any pgpsigurlmangle
+
+http://insecure.com /(.*).tar.gz
+https://secure.com /(.*).tar.gz
+
+# False positive for debian-watch-uses-insecure-uri
+http://sf.net/uses/redirector-([^-]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/watch-file-general/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-general/build-spec/fill-values
new file mode 100644
index 0000000..185084f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-general
+Skeleton: upload-non-native
+Version: 2.0.ds1-1
+Description: General watch file checks
diff --git a/t/recipes/checks/debian/watch/watch-file-general/eval/desc b/t/recipes/checks/debian/watch/watch-file-general/eval/desc
new file mode 100644
index 0000000..9f9961f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: watch-file-general
+See-Also: Debian Bug#510398
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-general/eval/hints b/t/recipes/checks/debian/watch/watch-file-general/eval/hints
new file mode 100644
index 0000000..7383a4c
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-general/eval/hints
@@ -0,0 +1,24 @@
+watch-file-general (source): debian-watch-uses-insecure-uri http://sourceforge.net/projects/synce/files [debian/watch:15]
+watch-file-general (source): debian-watch-uses-insecure-uri http://sourceforge.net/project/showfiles.php?group_id=100501 [debian/watch:14]
+watch-file-general (source): debian-watch-uses-insecure-uri http://qa.debian.org/watch/sf.php?project=foo [debian/watch:5]
+watch-file-general (source): debian-watch-uses-insecure-uri http://insecure.com [debian/watch:28]
+watch-file-general (source): debian-watch-uses-insecure-uri http://githubredir.debian.net/github/username/project [debian/watch:24]
+watch-file-general (source): debian-watch-uses-insecure-uri http://ftp.sf.net/foo/foo_bar(.+)\.Z [debian/watch:8]
+watch-file-general (source): debian-watch-uses-insecure-uri ftp://upload.sourceforge.net/pub/sourceforge/s/so/soprano/ [debian/watch:12]
+watch-file-general (source): debian-watch-not-mangling-version https://secure.com /(.*).tar.gz [debian/watch:29]
+watch-file-general (source): debian-watch-not-mangling-version http://sourceforge.net/projects/synce/files http://downloads.sourceforge.net/.+/kcemirror-(.+).tar.gz.* [debian/watch:15]
+watch-file-general (source): debian-watch-not-mangling-version http://sourceforge.net/project/showfiles.php?group_id=100501 .*/octaviz/octaviz-([\d\.]+).tar.gz.* [debian/watch:14]
+watch-file-general (source): debian-watch-not-mangling-version http://sf.net/uses/redirector-([^-]+)\.tar\.gz [debian/watch:32]
+watch-file-general (source): debian-watch-not-mangling-version http://insecure.com /(.*).tar.gz [debian/watch:28]
+watch-file-general (source): debian-watch-not-mangling-version http://githubredir.debian.net/github/username/project /(.*).tar.gz [debian/watch:24]
+watch-file-general (source): debian-watch-not-mangling-version ftp://upload.sourceforge.net/pub/sourceforge/s/so/soprano/ soprano-(.*)\.tar\.bz2 [debian/watch:12]
+watch-file-general (source): debian-watch-mangles-debian-version-improperly opts="uversionmangle=s/$/ds/" http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate [debian/watch:5]
+watch-file-general (source): debian-watch-lacks-sourceforge-redirector http://sourceforge.net/projects/synce/files http://downloads.sourceforge.net/.+/kcemirror-(.+).tar.gz.* [debian/watch:15]
+watch-file-general (source): debian-watch-lacks-sourceforge-redirector http://sourceforge.net/project/showfiles.php?group_id=100501 .*/octaviz/octaviz-([\d\.]+).tar.gz.* [debian/watch:14]
+watch-file-general (source): debian-watch-lacks-sourceforge-redirector http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate [debian/watch:8]
+watch-file-general (source): debian-watch-lacks-sourceforge-redirector ftp://upload.sourceforge.net/pub/sourceforge/s/so/soprano/ soprano-(.*)\.tar\.bz2 [debian/watch:12]
+watch-file-general (source): debian-watch-file-uses-deprecated-sf-redirector-method http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate [debian/watch:5]
+watch-file-general (source): debian-watch-file-uses-deprecated-githubredir http://githubredir.debian.net/github/username/project /(.*).tar.gz [debian/watch:24]
+watch-file-general (source): debian-watch-file-specifies-wrong-upstream-version 2.0.ds1-1 [debian/watch]
+watch-file-general (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+watch-file-general (source): debian-watch-could-verify-download debian/upstream/signing-key.asc [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-native/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-native/build-spec/debian/watch
new file mode 100644
index 0000000..23b829d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-native/build-spec/debian/watch
@@ -0,0 +1,5 @@
+# watch file with upstream version mangling
+
+version=3
+https://somewhere.debian.org/foo/foo_bar(.+)\.tar\.gz 5 uupdate
+
diff --git a/t/recipes/checks/debian/watch/watch-file-native/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-native/build-spec/fill-values
new file mode 100644
index 0000000..72168c2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: watch-file-native
+Description: Native package with a watch file
diff --git a/t/recipes/checks/debian/watch/watch-file-native/eval/desc b/t/recipes/checks/debian/watch/watch-file-native/eval/desc
new file mode 100644
index 0000000..bd769e4
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-native
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-native/eval/hints b/t/recipes/checks/debian/watch/watch-file-native/eval/hints
new file mode 100644
index 0000000..c38b1c2
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-native/eval/hints
@@ -0,0 +1,2 @@
+watch-file-native (source): debian-watch-file-in-native-package [debian/watch]
+watch-file-native (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/changelog.in b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..0aaa2a6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/changelog.in
@@ -0,0 +1,14 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * New upstream release.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+ * We forgot to update the watch file, lalala.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (1.0-1) unstable; urgency=low
+
+ * An earlier non-native version.
+
+ -- [% $author %] Tue, 1 Jan 2008 22:45:57 +0000
diff --git a/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/watch
new file mode 100644
index 0000000..ebaecbd
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/debian/watch
@@ -0,0 +1,3 @@
+version=3
+
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz 1.0 uupdate
diff --git a/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/fill-values
new file mode 100644
index 0000000..e8c0c43
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-old-upstream-version
+Skeleton: upload-non-native
+Version: 2.0-1
+Description: Watch file with old upstream version
diff --git a/t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/desc b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/desc
new file mode 100644
index 0000000..fdffb7d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-old-upstream-version
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/hints b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/hints
new file mode 100644
index 0000000..7cdf746
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-old-upstream-version/eval/hints
@@ -0,0 +1,2 @@
+watch-file-old-upstream-version (source): debian-watch-file-specifies-old-upstream-version 1.0 [debian/watch]
+watch-file-old-upstream-version (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..bd03c4e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1 @@
+Too lazy to fake this file
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/watch
new file mode 100644
index 0000000..139bc40
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/debian/watch
@@ -0,0 +1,5 @@
+version=4
+opts="pgpmode=next" https://alioth.debian.org/frs/?group_id=30928 \
+ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian
+opts="pgpmode=previous" https://alioth.debian.org/frs/?group_id=30928 \
+ (?:.*)/@PACKAGE@@ANY_VERSION@@SIGNATURE_EXT@ previous
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/fill-values
new file mode 100644
index 0000000..061e5ae
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-pgpmode-next
+Skeleton: upload-non-native
+Version: 2.0-1
+Description: Watch file with pgpmode=next
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/desc b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/desc
new file mode 100644
index 0000000..10373e6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/desc
@@ -0,0 +1,4 @@
+Testname: watch-file-pgpmode-next
+Test-Against: debian-watch-does-not-check-openpgp-signature
+See-Also: #841000
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/hints b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-next/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/debian/watch
new file mode 100644
index 0000000..190a7c5
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/debian/watch
@@ -0,0 +1,3 @@
+version=4
+opts="pgpmode=none" https://alioth.debian.org/frs/?group_id=30928 \
+ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/fill-values
new file mode 100644
index 0000000..e419c0a
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-pgpmode-none
+Skeleton: upload-non-native
+Version: 2.0-1
+Description: Watch file with pgpmode=none
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/desc b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/desc
new file mode 100644
index 0000000..9797f85
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/desc
@@ -0,0 +1,4 @@
+Testname: watch-file-pgpmode-none
+Test-Against: debian-watch-file-pubkey-file-is-missing
+See-Also: #841000
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/hints b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/hints
new file mode 100644
index 0000000..da03c49
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pgpmode-none/eval/hints
@@ -0,0 +1 @@
+watch-file-pgpmode-none (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/debian/watch
new file mode 100644
index 0000000..8038deb
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts=dversionmangle=s/~rc/-rc/ \
+ https://www.example.com/software/foo/ .*/foo-([^-]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/fill-values
new file mode 100644
index 0000000..759c2e9
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-prerelease/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-prerelease
+Skeleton: upload-non-native
+Version: 1~rc1-1
+Description: Check mangling tags for upstream prereleases
diff --git a/t/recipes/checks/debian/watch/watch-file-prerelease/eval/desc b/t/recipes/checks/debian/watch/watch-file-prerelease/eval/desc
new file mode 100644
index 0000000..130e146
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-prerelease/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-prerelease
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-prerelease/eval/hints b/t/recipes/checks/debian/watch/watch-file-prerelease/eval/hints
new file mode 100644
index 0000000..9f86dc6
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-prerelease/eval/hints
@@ -0,0 +1,2 @@
+watch-file-prerelease (source): debian-watch-mangles-upstream-version-improperly opts=dversionmangle=s/~rc/-rc/ https://www.example.com/software/foo/ .*/foo-([^-]+)\.tar\.gz [debian/watch:3]
+watch-file-prerelease (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/debian/watch
new file mode 100644
index 0000000..7ac78bc
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts="uversionmangle=s/-/./,dversionmangle=s/\.dfsg\d+$//,pgpsigurlmangle=s/$/.asc/" \
+ftp://ftp.imagemagick.org/pub/ImageMagick/ ImageMagick-(.*)\.tar\.xz
diff --git a/t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/fill-values
new file mode 100644
index 0000000..31946e9
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-pubkey-missing
+Skeleton: upload-non-native
+Version: 1+dfsg-1
+Description: Watch file if verify signature should check d/upstream/signing-key.{pgp,asc}
diff --git a/t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/desc b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/desc
new file mode 100644
index 0000000..de6e776
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-pubkey-missing
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/hints b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/hints
new file mode 100644
index 0000000..a7ae561
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-pubkey-missing/eval/hints
@@ -0,0 +1,2 @@
+watch-file-pubkey-missing (source): debian-watch-uses-insecure-uri ftp://ftp.imagemagick.org/pub/ImageMagick/ [debian/watch:3]
+watch-file-pubkey-missing (source): debian-watch-file-pubkey-file-is-missing [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/debian/watch
new file mode 100644
index 0000000..9104ee4
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/debian/watch
@@ -0,0 +1,4 @@
+version=4
+opts="uversionmangle=s/.pre/~pre/,dversionmangle=s/@DEB_EXT@//,repacksuffix=+ds1" \
+ https://github.com/user/project/tags \
+ (?:.*?/)project@ANr_VERSION@\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/fill-values
new file mode 100644
index 0000000..8d0af82
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-should-mangle-unrel
+Skeleton: upload-non-native
+Version: 1+dfsg-1
+Description: Watch file should mangle version (false-positive)
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/desc b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/desc
new file mode 100644
index 0000000..67f3d93
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: watch-file-should-mangle-unrel
+Test-Against:
+ debian-watch-not-mangling-version
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/hints b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/hints
new file mode 100644
index 0000000..e5e98dc
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle-unrel/eval/hints
@@ -0,0 +1 @@
+watch-file-should-mangle-unrel (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/debian/watch
new file mode 100644
index 0000000..6cc9db4
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# watch file with no version mangling, even though there's a dfsg in the
+# package version number.
+
+version=2
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate
+
+# version mangling is not needed in this case:
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz 0.24 uupdate
+
+# version mangling *is* needed in this case:
+https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/fill-values
new file mode 100644
index 0000000..8a8df44
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-should-mangle
+Skeleton: upload-non-native
+Version: 1+dfsg-1
+Description: Watch file should mangle version
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle/eval/desc b/t/recipes/checks/debian/watch/watch-file-should-mangle/eval/desc
new file mode 100644
index 0000000..584f10d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-should-mangle
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-should-mangle/eval/hints b/t/recipes/checks/debian/watch/watch-file-should-mangle/eval/hints
new file mode 100644
index 0000000..ed53e0f
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-should-mangle/eval/hints
@@ -0,0 +1,3 @@
+watch-file-should-mangle (source): debian-watch-not-mangling-version https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate [debian/watch:5]
+watch-file-should-mangle (source): debian-watch-not-mangling-version https://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz [debian/watch:11]
+watch-file-should-mangle (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/checks/debian/watch/watch-file-template/build-spec/debian/watch b/t/recipes/checks/debian/watch/watch-file-template/build-spec/debian/watch
new file mode 100644
index 0000000..fdbc536
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-template/build-spec/debian/watch
@@ -0,0 +1,3 @@
+version=3
+# Example watch control file for uscan
+http://www.example.com/software/foo/ .*/<project>-([^-]+)\.tar\.gz
diff --git a/t/recipes/checks/debian/watch/watch-file-template/build-spec/fill-values b/t/recipes/checks/debian/watch/watch-file-template/build-spec/fill-values
new file mode 100644
index 0000000..fdad29e
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-template/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: watch-file-template
+Skeleton: upload-non-native
+Description: Test for dh_make(1) templates
diff --git a/t/recipes/checks/debian/watch/watch-file-template/eval/desc b/t/recipes/checks/debian/watch/watch-file-template/eval/desc
new file mode 100644
index 0000000..c96ef04
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-template/eval/desc
@@ -0,0 +1,2 @@
+Testname: watch-file-template
+Check: debian/watch
diff --git a/t/recipes/checks/debian/watch/watch-file-template/eval/hints b/t/recipes/checks/debian/watch/watch-file-template/eval/hints
new file mode 100644
index 0000000..b0dd19d
--- /dev/null
+++ b/t/recipes/checks/debian/watch/watch-file-template/eval/hints
@@ -0,0 +1,3 @@
+watch-file-template (source): debian-watch-uses-insecure-uri http://www.example.com/software/foo/ [debian/watch:3]
+watch-file-template (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+watch-file-template (source): debian-watch-contains-dh_make-template Example watch control file for uscan [debian/watch]
diff --git a/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
new file mode 100644
index 0000000..0312410
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
@@ -0,0 +1,36 @@
+Source: [% $source %]
+Section: [% $section %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbg package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbgsym package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ even be an empty package.
diff --git a/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
new file mode 100644
index 0000000..4d83180
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Package-Architecture: any
+Description: Package builds -dbg and -dbgsym
diff --git a/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
new file mode 100644
index 0000000..9413c0b
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Check: debug/automatic
diff --git a/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
new file mode 100644
index 0000000..390db6f
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
@@ -0,0 +1 @@
+changes-files-package-builds-dbg-and-dbgsym-variants (source): debian-control-has-dbgsym-package (in section for changes-files-package-builds-dbg-and-dbgsym-variants-dbgsym) Package [debian/control:28]
diff --git a/t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/rules b/t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debug/automatic/control-file-general/build-spec/fill-values b/t/recipes/checks/debug/automatic/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debug/automatic/control-file-general/eval/desc b/t/recipes/checks/debug/automatic/control-file-general/eval/desc
new file mode 100644
index 0000000..2c44eb9
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debug/automatic
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debug/automatic/control-file-general/eval/hints b/t/recipes/checks/debug/automatic/control-file-general/eval/hints
new file mode 100644
index 0000000..87c2911
--- /dev/null
+++ b/t/recipes/checks/debug/automatic/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): debian-control-has-dbgsym-package (in section for control-file-general-dbgsym) Package [debian/control:87]
diff --git a/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
new file mode 100644
index 0000000..0312410
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
@@ -0,0 +1,36 @@
+Source: [% $source %]
+Section: [% $section %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbg package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbgsym package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ even be an empty package.
diff --git a/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
new file mode 100644
index 0000000..4d83180
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Package-Architecture: any
+Description: Package builds -dbg and -dbgsym
diff --git a/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
new file mode 100644
index 0000000..fa56958
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Check: debug/obsolete
diff --git a/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
new file mode 100644
index 0000000..c424ec0
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
@@ -0,0 +1 @@
+changes-files-package-builds-dbg-and-dbgsym-variants (source): debian-control-has-obsolete-dbg-package (in section for changes-files-package-builds-dbg-and-dbgsym-variants-dbg) Package [debian/control:18]
diff --git a/t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/control.in b/t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/rules b/t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/debug/obsolete/control-file-general/build-spec/fill-values b/t/recipes/checks/debug/obsolete/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/debug/obsolete/control-file-general/eval/desc b/t/recipes/checks/debug/obsolete/control-file-general/eval/desc
new file mode 100644
index 0000000..0821016
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: debug/obsolete
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/debug/obsolete/control-file-general/eval/hints b/t/recipes/checks/debug/obsolete/control-file-general/eval/hints
new file mode 100644
index 0000000..f9f2b8c
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): debian-control-has-obsolete-dbg-package (in section for control-file-general-dbg) Package [debian/control:97]
diff --git a/t/recipes/checks/debug/obsolete/fields-general/build-spec/debian/control.in b/t/recipes/checks/debug/obsolete/fields-general/build-spec/debian/control.in
new file mode 100644
index 0000000..f5aa07a
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/fields-general/build-spec/debian/control.in
@@ -0,0 +1,46 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+# Whoops, typo
+Homepage: ttp://lintian.debian.org/
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dbg)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (dbg)g.
+# ... and some unneeded <>
+Homepage: <http://lintian.debian.org/>
+
+Package: [% $source %]-debug
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (debug)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (debug).
+
diff --git a/t/recipes/checks/debug/obsolete/fields-general/build-spec/fill-values b/t/recipes/checks/debug/obsolete/fields-general/build-spec/fill-values
new file mode 100644
index 0000000..11b0c69
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/fields-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-general
+Description: Test for tags related to minor field issues
diff --git a/t/recipes/checks/debug/obsolete/fields-general/eval/desc b/t/recipes/checks/debug/obsolete/fields-general/eval/desc
new file mode 100644
index 0000000..35f28a2
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/fields-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general
+Check: debug/obsolete
diff --git a/t/recipes/checks/debug/obsolete/fields-general/eval/hints b/t/recipes/checks/debug/obsolete/fields-general/eval/hints
new file mode 100644
index 0000000..d52577d
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/fields-general/eval/hints
@@ -0,0 +1 @@
+fields-general (source): debian-control-has-obsolete-dbg-package (in section for fields-general-dbg) Package [debian/control:21]
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/desc b/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..68eb0d3
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: debug/obsolete
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/hints b/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..306ecd5
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz (source): debian-control-has-obsolete-dbg-package (in section for libbaz2-dbg) Package [debian/control:48]
diff --git a/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/post-test b/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/debug/obsolete/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/debian/install b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/debian/install
new file mode 100644
index 0000000..a75e237
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/debian/install
@@ -0,0 +1,2 @@
+etc
+usr
diff --git a/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/fill-values b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/fill-values
new file mode 100644
index 0000000..8466676
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: dbus-policy
+Description: test deprecated D-Bus policies
diff --git a/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/etc/dbus-1/system.d/send-destination.conf b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/etc/dbus-1/system.d/send-destination.conf
new file mode 100644
index 0000000..ae052ff
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/etc/dbus-1/system.d/send-destination.conf
@@ -0,0 +1,14 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <policy user="root">
+ <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
+ </policy>
+ <policy user="nobody">
+ <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
+ </policy>
+ <policy context="default">
+ <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
+ <allow send_member="AreYouReallySureThisMethodIsAlwaysOK"/>
+ <allow send_path="/com/example/Here"/>
+ </policy>
+</busconfig>
diff --git a/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/usr/share/dbus-1/system.d/at-console.conf b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/usr/share/dbus-1/system.d/at-console.conf
new file mode 100644
index 0000000..8c47adb
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-policy/build-spec/orig/usr/share/dbus-1/system.d/at-console.conf
@@ -0,0 +1,15 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- this is OK, at least for now -->
+ <policy group="bluetooth">
+ <allow send_destination="com.example.Service"/>
+ <allow send_destination="com.example.Other"/>
+ </policy>
+
+ <!-- this is deprecated -->
+ <policy at_console="true">
+ <allow send_destination="com.example.Service"/>
+ <allow send_destination="com.example.Other"/>
+ </policy>
+</busconfig>
diff --git a/t/recipes/checks/desktop/dbus/dbus-policy/eval/desc b/t/recipes/checks/desktop/dbus/dbus-policy/eval/desc
new file mode 100644
index 0000000..a1b0e16
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-policy/eval/desc
@@ -0,0 +1,2 @@
+Testname: dbus-policy
+Check: desktop/dbus
diff --git a/t/recipes/checks/desktop/dbus/dbus-policy/eval/hints b/t/recipes/checks/desktop/dbus/dbus-policy/eval/hints
new file mode 100644
index 0000000..6066067
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-policy/eval/hints
@@ -0,0 +1,9 @@
+dbus-policy (binary): dbus-policy-without-send-destination <policy user="nobody"><allow send_interface="org.freedesktop.DBus.ObjectManager"/> [etc/dbus-1/system.d/send-destination.conf:2]
+dbus-policy (binary): dbus-policy-without-send-destination <policy context="default"><allow send_path="/com/example/Here"/> [etc/dbus-1/system.d/send-destination.conf:5]
+dbus-policy (binary): dbus-policy-without-send-destination <policy context="default"><allow send_member="AreYouReallySureThisMethodIsAlwaysOK"/> [etc/dbus-1/system.d/send-destination.conf:4]
+dbus-policy (binary): dbus-policy-without-send-destination <policy context="default"><allow send_interface="org.freedesktop.DBus.ObjectManager"/> [etc/dbus-1/system.d/send-destination.conf:3]
+dbus-policy (binary): dbus-policy-excessively-broad <policy context="default"><allow send_path="/com/example/Here"/> [etc/dbus-1/system.d/send-destination.conf:5]
+dbus-policy (binary): dbus-policy-excessively-broad <policy context="default"><allow send_member="AreYouReallySureThisMethodIsAlwaysOK"/> [etc/dbus-1/system.d/send-destination.conf:4]
+dbus-policy (binary): dbus-policy-in-etc [etc/dbus-1/system.d/send-destination.conf]
+dbus-policy (binary): dbus-policy-at-console <policy at_console="true"><allow send_destination="com.example.Service"/> [usr/share/dbus-1/system.d/at-console.conf:3]
+dbus-policy (binary): dbus-policy-at-console <policy at_console="true"><allow send_destination="com.example.Other"/> [usr/share/dbus-1/system.d/at-console.conf:4]
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/build-spec/debian/install b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/debian/install
new file mode 100644
index 0000000..73752c9
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/debian/install
@@ -0,0 +1 @@
+usr
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/build-spec/fill-values b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/fill-values
new file mode 100644
index 0000000..694bdb7
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: dbus-services
+Description: test D-Bus .service files
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/gvfs-daemon.service b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/gvfs-daemon.service
new file mode 100644
index 0000000..1a8607d
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/gvfs-daemon.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gtk.vfs.Daemon
+Exec=/usr/lib/gvfs/gvfsd
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/org.mpris.MediaPlayer2.mpd.service b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/org.mpris.MediaPlayer2.mpd.service
new file mode 100644
index 0000000..3f14f4a
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/services/org.mpris.MediaPlayer2.mpd.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.mpris.MediaPlayer2.mpd
+Exec=/usr/bin/mpDris2
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service
new file mode 100644
index 0000000..51d1f94
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit1.service
@@ -0,0 +1,5 @@
+[D-BUS Service]
+Name=org.freedesktop.PolicyKit1
+Exec=/usr/lib/policykit-1/polkitd --no-debug
+User=root
+SystemdService=polkitd.service
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/this-name-cannot-work.service b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/this-name-cannot-work.service
new file mode 100644
index 0000000..e87a5bb
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/build-spec/orig/usr/share/dbus-1/system-services/this-name-cannot-work.service
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=com.example.SystemDaemon1
+Exec=/usr/sbin/example-system-daemon
+User=nobody
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/eval/desc b/t/recipes/checks/desktop/dbus/dbus-services/eval/desc
new file mode 100644
index 0000000..8102dfa
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/eval/desc
@@ -0,0 +1,2 @@
+Testname: dbus-services
+Check: desktop/dbus
diff --git a/t/recipes/checks/desktop/dbus/dbus-services/eval/hints b/t/recipes/checks/desktop/dbus/dbus-services/eval/hints
new file mode 100644
index 0000000..1f45b32
--- /dev/null
+++ b/t/recipes/checks/desktop/dbus/dbus-services/eval/hints
@@ -0,0 +1,2 @@
+dbus-services (binary): dbus-system-service-wrong-name better: com.example.SystemDaemon1.service [usr/share/dbus-1/system-services/this-name-cannot-work.service]
+dbus-services (binary): dbus-session-service-wrong-name better: org.gtk.vfs.Daemon.service [usr/share/dbus-1/services/gvfs-daemon.service]
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/desc b/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..f48544d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: desktop/gnome
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/hints b/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..c030bf5
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): package-installs-into-etc-gconf-schemas [etc/gconf/schemas/bar]
diff --git a/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/post-test b/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/control.in b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/control.in
new file mode 100644
index 0000000..e664631
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/control.in
@@ -0,0 +1,87 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: gir1.2-bad
+Section: misc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package gets GObject-Introspection wrong in various ways.
+
+Package: gir1.2-good-42
+Section: oldlibs
+Architecture: any
+Provides: gir1.2-goodextras-42 (= ${binary:Version})
+Depends: ${gir:Depends}, ${shlibs:Depends}, ${misc:Depends}, libgood-42-0
+Description: [% $description %] - GIR
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This contains the GObject-Introspection typelib.
+ .
+ This package is in the oldlibs section (a deprecated typelib), unlike
+ gir1.2-perfect-42 which is in the introspection section.
+
+Package: libgood-42-dev
+Section: oldlibs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, gir1.2-good-42 (= ${binary:Version}), libgood-42-0 (= ${binary:Version})
+Description: [% $description %] - development
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package is in the oldlibs section (a deprecated development
+ package), unlike libperfect-42-dev which is in the libdevel section.
+
+Package: libgood-42-0
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] - shared library
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This is the shared library.
+
+Package: gir1.2-perfect-42
+Section: introspection
+Architecture: any
+Depends: ${gir:Depends}, ${shlibs:Depends}, ${misc:Depends}, libperfect-42-0
+Description: [% $description %] - GIR with multiarch
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This contains the GObject-Introspection typelib, with multiarch.
+
+Package: libperfect-42-dev
+Section: libdevel
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, gir1.2-perfect-42 (= ${binary:Version}), libperfect-42-0 (= ${binary:Version})
+Description: [% $description %] - development with multiarch
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This contains the development files, with multiarch.
+
+Package: libperfect-42-0
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] - shared library with multiarch
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This is the shared library, with multiarch.
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-bad.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-bad.install
new file mode 100644
index 0000000..c83626e
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-bad.install
@@ -0,0 +1,2 @@
+usr/lib/girepository-1.0/Bad-23.typelib
+usr/share/gir-1.0/Bad-23.gir
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-good-42.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-good-42.install
new file mode 100644
index 0000000..5f1692f
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-good-42.install
@@ -0,0 +1,2 @@
+usr/lib/girepository-1.0/Good-42.typelib
+usr/lib/girepository-1.0/GoodExtras-42.typelib
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-perfect-42.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-perfect-42.install
new file mode 100644
index 0000000..195f200
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/gir1.2-perfect-42.install
@@ -0,0 +1 @@
+usr/lib/*/girepository-1.0/Perfect-42.typelib
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-0.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-0.install
new file mode 100644
index 0000000..5bff9aa
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-0.install
@@ -0,0 +1 @@
+usr/lib/libgood-42-0-dummy
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-dev.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-dev.install
new file mode 100644
index 0000000..1bc5a2c
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libgood-42-dev.install
@@ -0,0 +1,3 @@
+usr/share/gir-1.0/Good-42.gir
+usr/share/gir-1.0/GoodExtras-42.gir
+usr/lib/libgood-42-dev-dummy
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-0.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-0.install
new file mode 100644
index 0000000..75b60a2
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-0.install
@@ -0,0 +1 @@
+usr/lib/*/libperfect-42-0-dummy
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-dev.install b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-dev.install
new file mode 100644
index 0000000..7d0a75b
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/debian/libperfect-42-dev.install
@@ -0,0 +1,2 @@
+usr/share/gir-1.0/Perfect-42.gir
+usr/lib/*/libperfect-42-dev-dummy
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/fill-values b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/fill-values
new file mode 100644
index 0000000..7a86e74
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: gir
+Description: test GObject-Introspection
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/Makefile b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/Makefile
new file mode 100644
index 0000000..a91332d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+multiarch := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+all:
+ install -d usr/lib/$(multiarch)/girepository-1.0
+ cp usr/lib/libgood-42-dev-dummy usr/lib/$(multiarch)/libperfect-42-dev-dummy
+ cp usr/lib/libgood-42-0-dummy usr/lib/$(multiarch)/libperfect-42-0-dummy
+ cp usr/lib/girepository-1.0/Good-42.typelib usr/lib/$(multiarch)/girepository-1.0/Perfect-42.typelib
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Bad-23.typelib b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Bad-23.typelib
new file mode 100644
index 0000000..64fba42
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Bad-23.typelib
@@ -0,0 +1 @@
+not really a typelib
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Good-42.typelib b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Good-42.typelib
new file mode 100644
index 0000000..64fba42
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/Good-42.typelib
@@ -0,0 +1 @@
+not really a typelib
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/GoodExtras-42.typelib b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/GoodExtras-42.typelib
new file mode 100644
index 0000000..64fba42
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/girepository-1.0/GoodExtras-42.typelib
@@ -0,0 +1 @@
+not really a typelib
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-0-dummy b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-0-dummy
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-0-dummy
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-dev-dummy b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-dev-dummy
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/lib/libgood-42-dev-dummy
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Bad-23.gir b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Bad-23.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Bad-23.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Good-42.gir b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Good-42.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Good-42.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/GoodExtras-42.gir b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/GoodExtras-42.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/GoodExtras-42.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Perfect-42.gir b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Perfect-42.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/build-spec/orig/usr/share/gir-1.0/Perfect-42.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/eval/desc b/t/recipes/checks/desktop/gnome/gir/gir/eval/desc
new file mode 100644
index 0000000..bfb9dbf
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/eval/desc
@@ -0,0 +1,3 @@
+Testname: gir
+Check: desktop/gnome/gir
+Test-Architectures: amd64
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/eval/hints b/t/recipes/checks/desktop/gnome/gir/gir/eval/hints
new file mode 100644
index 0000000..9811f07
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/eval/hints
@@ -0,0 +1,10 @@
+gir (source): typelib-missing-gir-depends gir1.2-bad [debian/control]
+gir1.2-good-42 (binary): typelib-not-in-multiarch-directory usr/lib/x86_64-linux-gnu/girepository-1.0 [usr/lib/girepository-1.0/GoodExtras-42.typelib]
+gir1.2-good-42 (binary): typelib-not-in-multiarch-directory usr/lib/x86_64-linux-gnu/girepository-1.0 [usr/lib/girepository-1.0/Good-42.typelib]
+gir1.2-bad (binary): typelib-section-not-introspection misc [usr/lib/girepository-1.0/Bad-23.typelib]
+gir1.2-bad (binary): typelib-package-name-does-not-match gir1.2-bad-23 [usr/lib/girepository-1.0/Bad-23.typelib]
+gir1.2-bad (binary): typelib-not-in-multiarch-directory usr/lib/${DEB_HOST_MULTIARCH}/girepository-1.0 [usr/lib/girepository-1.0/Bad-23.typelib]
+gir1.2-bad (binary): typelib-in-arch-all-package [usr/lib/girepository-1.0/Bad-23.typelib]
+gir1.2-bad (binary): gir-section-not-libdevel misc [usr/share/gir-1.0/Bad-23.gir]
+gir1.2-bad (binary): gir-missing-typelib-dependency gir1.2-bad-23 [usr/share/gir-1.0/Bad-23.gir]
+gir1.2-bad (binary): gir-in-arch-all-package [usr/share/gir-1.0/Bad-23.gir]
diff --git a/t/recipes/checks/desktop/gnome/gir/gir/eval/post-test b/t/recipes/checks/desktop/gnome/gir/gir/eval/post-test
new file mode 100644
index 0000000..56d219b
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/gir/eval/post-test
@@ -0,0 +1 @@
+s, usr/lib/[^/${}]+/girepository-1.0$, usr/lib/MULTIARCH/girepository-1.0,
diff --git a/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/debian/control.in b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..7c8bf78
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/debian/control.in
@@ -0,0 +1,29 @@
+Source: [% $source %]
+Section: introspection
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: gir1.1-missing-gir-depends-2.2
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package should be tagged by Lintian.
+
+Package: gir1.1-gir-depends-present-2.2
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${gir:Depends}
+Description: [% $description %]: False
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package should not be tagged by Lintian.
diff --git a/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/fill-values b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/fill-values
new file mode 100644
index 0000000..019383e
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-gobject-introspection-package-missing-gir-depends
+Description: Check for missing binary dependencies on ${gir:Depends}
diff --git a/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/desc b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/desc
new file mode 100644
index 0000000..4509573
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-gobject-introspection-package-missing-gir-depends
+Check: desktop/gnome/gir/substvars
diff --git a/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/hints b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/hints
new file mode 100644
index 0000000..3807818
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/gir/substvars/control-file-gobject-introspection-package-missing-gir-depends/eval/hints
@@ -0,0 +1 @@
+control-file-gobject-introspection-package-missing-gir-depends (source): gobject-introspection-package-missing-depends-on-gir-depends gir1.1-missing-gir-depends-2.2 [debian/control]
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/control b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/fill-values b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/eval/desc b/t/recipes/checks/desktop/gnome/legacy-filenames/eval/desc
new file mode 100644
index 0000000..edb26ba
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: desktop/gnome
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/eval/hints b/t/recipes/checks/desktop/gnome/legacy-filenames/eval/hints
new file mode 100644
index 0000000..3e3cc43
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): package-installs-into-etc-gconf-schemas [etc/gconf/schemas/test.schema]
diff --git a/t/recipes/checks/desktop/gnome/legacy-filenames/eval/post-test b/t/recipes/checks/desktop/gnome/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/desktop/gnome/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/clean b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/dirs b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/examples b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/install b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/links b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/manpages b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/debian/rules b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/fill-values b/t/recipes/checks/desktop/icons/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/--lzma b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/dir b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.5 b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/sudotest b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/desktop/icons/files-general/build-spec/orig/types b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/desktop/icons/files-general/eval/desc b/t/recipes/checks/desktop/icons/files-general/eval/desc
new file mode 100644
index 0000000..6b5e296
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: desktop/icons
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/desktop/icons/files-general/eval/hints b/t/recipes/checks/desktop/icons/files-general/eval/hints
new file mode 100644
index 0000000..3605524
--- /dev/null
+++ b/t/recipes/checks/desktop/icons/files-general/eval/hints
@@ -0,0 +1,4 @@
+files-general (binary): raster-image-in-scalable-directory [usr/share/icons/hicolor/scalable/apps/lintian-16x16.png]
+files-general (binary): icon-size-and-directory-name-mismatch 22x22 [usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png]
+files-general (binary): icon-size-and-directory-name-mismatch 16x16 [usr/share/icons/hicolor/22x22/apps/lintian-16x16.png]
+files-general (binary): icon-size-and-directory-name-mismatch 16x16 [usr/share/apps/lintian/icons/hicolor/22x22/lintian-16x16.png]
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/control.in b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/control.in
new file mode 100644
index 0000000..851be7b
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/control.in
@@ -0,0 +1,31 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %]
+ Non-font package containing fonts.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: ttf-[% $source %]
+Section: fonts
+Architecture: all
+# Due to file-conflict
+Conflicts: [% $source %]
+Depends: ${misc:Depends}
+Description: [% $description %] (okay)
+ Font package containing fonts.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/files-fonts.install b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/files-fonts.install
new file mode 100644
index 0000000..f3dd053
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/files-fonts.install
@@ -0,0 +1,14 @@
+font.otf usr/share/fonts/truetype
+font.ttf usr/share/fonts/truetype
+4shadow.ttf usr/share/fonts/truetype
+foo.pcf usr/share/fonts/X11/100dpi
+foo.pcf usr/share/fonts/X11/75dpi
+foo.pcf usr/share/fonts/X11/misc
+foo.pcf usr/share/fonts/X11/Type1
+foo.pcf usr/share/fonts/X11/encodings
+foo.pcf usr/share/fonts/X11/util
+foo.pcf usr/share/fonts/X11/PEX
+foo.pcf usr/share/fonts/X11/CID
+foo.pcf usr/share/fonts/X11/Speedo
+foo.pcf usr/share/fonts/X11/cyrillic
+foo.pcf usr/share/fonts/X11/other
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.install b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.install
new file mode 100644
index 0000000..95e5191
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.install
@@ -0,0 +1,4 @@
+font.otf usr/share/fonts/truetype
+font.ttf usr/share/fonts/truetype
+4shadow.ttf usr/share/fonts/truetype
+font.ttf usr/lib/fontpackage
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.links b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.links
new file mode 100644
index 0000000..f57bbb5
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/debian/ttf-files-fonts.links
@@ -0,0 +1 @@
+usr/share/fonts/truetype/font.ttf usr/share/fonts/truetype/dejavusans.ttf
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/fill-values b/t/recipes/checks/desktop/x11/files-fonts/build-spec/fill-values
new file mode 100644
index 0000000..1b07cd1
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-fonts
+Description: Font file checks
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/4shadow.ttf b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/4shadow.ttf
new file mode 100644
index 0000000..780ab93
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/4shadow.ttf
@@ -0,0 +1,2 @@
+This isn't actually a font. The current test is based on the file
+name and doesn't care.
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.otf b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.otf
new file mode 100644
index 0000000..c118d8d
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.otf
@@ -0,0 +1 @@
+This is a fake font file.
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.ttf b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.ttf
new file mode 100644
index 0000000..c118d8d
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/font.ttf
@@ -0,0 +1 @@
+This is a fake font file.
diff --git a/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/foo.pcf b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/foo.pcf
new file mode 100644
index 0000000..8a7d9df
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/build-spec/orig/foo.pcf
@@ -0,0 +1 @@
+I'm not really a font, but I play one on TV.
diff --git a/t/recipes/checks/desktop/x11/files-fonts/eval/desc b/t/recipes/checks/desktop/x11/files-fonts/eval/desc
new file mode 100644
index 0000000..4a018d8
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-fonts
+Check: desktop/x11
diff --git a/t/recipes/checks/desktop/x11/files-fonts/eval/hints b/t/recipes/checks/desktop/x11/files-fonts/eval/hints
new file mode 100644
index 0000000..ac9d4e0
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-fonts/eval/hints
@@ -0,0 +1,7 @@
+files-fonts (binary): package-mixes-misc-and-dpi-fonts
+files-fonts (binary): package-contains-multiple-dpi-fonts
+files-fonts (binary): file-in-unknown-x11-font-directory [usr/share/fonts/X11/other/foo.pcf.gz]
+files-fonts (binary): file-in-discouraged-x11-font-directory [usr/share/fonts/X11/cyrillic/foo.pcf.gz]
+files-fonts (binary): file-in-discouraged-x11-font-directory [usr/share/fonts/X11/Speedo/foo.pcf.gz]
+files-fonts (binary): file-in-discouraged-x11-font-directory [usr/share/fonts/X11/PEX/foo.pcf.gz]
+files-fonts (binary): file-in-discouraged-x11-font-directory [usr/share/fonts/X11/CID/foo.pcf.gz]
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/clean b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/dirs b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/examples b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/install b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/install
new file mode 100644
index 0000000..ea7c1c2
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/install
@@ -0,0 +1,21 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+lintian.conf etc/modules-load.d
+lintian-install.conf etc/modprobe.d
+lintian-install.conf etc/modules-load.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/links b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/manpages b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/debian/rules b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/fill-values b/t/recipes/checks/desktop/x11/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/--lzma b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/dir b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.5 b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-install.conf b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-install.conf
new file mode 100644
index 0000000..d47e02f
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-install.conf
@@ -0,0 +1,2 @@
+install modulename command
+remove modulename command
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/sudotest b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/desktop/x11/files-general/build-spec/orig/types b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/desktop/x11/files-general/eval/desc b/t/recipes/checks/desktop/x11/files-general/eval/desc
new file mode 100644
index 0000000..7aa2151
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: desktop/x11
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/desktop/x11/files-general/eval/hints b/t/recipes/checks/desktop/x11/files-general/eval/hints
new file mode 100644
index 0000000..d60294f
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/files-general/eval/hints
@@ -0,0 +1,4 @@
+files-general (binary): package-contains-compiled-font-file [usr/share/fonts/X11/misc/fonts.scale]
+files-general (binary): package-contains-compiled-font-file [usr/share/fonts/X11/misc/fonts.dir]
+files-general (binary): package-contains-compiled-font-file [usr/share/fonts/X11/misc/fonts.alias]
+files-general (binary): package-contains-compiled-font-file [usr/share/fonts/X11/misc/encodings.dir]
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install
new file mode 100644
index 0000000..4690206
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install
@@ -0,0 +1 @@
+foo.afm usr/share/fonts/X11/Type1
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst
new file mode 100644
index 0000000..ea5884d
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ update-fonts-dir manual
+ update-fonts-scale manual
+fi
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values
new file mode 100644
index 0000000..37d3c47
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-update-fonts-unrel
+Description: Check missing calls to update-fonts (false-positives)
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/desc b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/desc
new file mode 100644
index 0000000..2858502
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-missing-call-to-update-fonts-unrel
+Test-Against:
+ missing-call-to-update-fonts
+Check: desktop/x11/font/update
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/hints b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts-unrel/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/install b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/install
new file mode 100644
index 0000000..4690206
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/install
@@ -0,0 +1 @@
+foo.afm usr/share/fonts/X11/Type1
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/postinst b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/postinst
new file mode 100644
index 0000000..72a8dfb
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ echo "Deliberately not including DEBHELPER snippet."
+fi
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/fill-values b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/fill-values
new file mode 100644
index 0000000..4b17473
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-update-fonts
+Description: Check missing calls to update-fonts
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/desc b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/desc
new file mode 100644
index 0000000..5f5f575
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-update-fonts
+Check: desktop/x11/font/update
diff --git a/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/hints b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/hints
new file mode 100644
index 0000000..163e983
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/font/update/scripts-missing-call-to-update-fonts/eval/hints
@@ -0,0 +1 @@
+scripts-missing-call-to-update-fonts (binary): missing-call-to-update-fonts usr/share/fonts/X11/Type1/foo.afm [postinst]
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/control b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/fill-values b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/eval/desc b/t/recipes/checks/desktop/x11/legacy-filenames/eval/desc
new file mode 100644
index 0000000..7b219ba
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: desktop/x11
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/eval/hints b/t/recipes/checks/desktop/x11/legacy-filenames/eval/hints
new file mode 100644
index 0000000..9980158
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/eval/hints
@@ -0,0 +1,3 @@
+filenames (binary): package-installs-file-to-usr-x11r6 [usr/X11R6/bin/testxbin2]
+filenames (binary): package-installs-file-to-usr-x11r6 [usr/X11R6/bin/]
+filenames (binary): package-installs-file-to-usr-x11r6 [usr/X11R6/]
diff --git a/t/recipes/checks/desktop/x11/legacy-filenames/eval/post-test b/t/recipes/checks/desktop/x11/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/desktop/x11/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/README.source b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/README.source
new file mode 100644
index 0000000..f4b7709
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/README.source
@@ -0,0 +1,5 @@
+cruft-fixme-placeholders for Debian
+-----------------------------------
+
+FIXME: A reminder to do something
+FIX_ME: npm2deb uses underscores
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/control.in b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/control.in
new file mode 100644
index 0000000..4f62807
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/control.in
@@ -0,0 +1,22 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ FIXME: This line should be detected by Lintian.
+ .
+ This line shouldn't be detected as it has a quoted "FIXME".
+ .
+ FIXME: This mixed "FIXME" line should still be detected though.
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright
new file mode 100644
index 0000000..6bb2c0e
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2017 Chris Lamb <lamby@debian.org>
+
+FIXME: Lintian should detect this text.
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright_hints b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright_hints
new file mode 100644
index 0000000..de8f916
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/copyright_hints
@@ -0,0 +1 @@
+FIXME: This file should be ignored.
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/rules b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/rules
new file mode 100644
index 0000000..975a857
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+%:
+ # FIXME: Something
+ dh $@
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/fill-values b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/fill-values
new file mode 100644
index 0000000..dc619a2
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-fixme-placeholders
+Description: Check for placeholders in various maintainer scripts
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/desc b/t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/desc
new file mode 100644
index 0000000..10f5d9f
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-fixme-placeholders
+Check: dh-make
diff --git a/t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/hints b/t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/hints
new file mode 100644
index 0000000..9d6298b
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-fixme-placeholders/eval/hints
@@ -0,0 +1,6 @@
+cruft-fixme-placeholders (source): file-contains-fixme-placeholder FIX_ME [debian/README.source:5]
+cruft-fixme-placeholders (source): file-contains-fixme-placeholder FIXME [debian/rules:4]
+cruft-fixme-placeholders (source): file-contains-fixme-placeholder FIXME [debian/copyright:8]
+cruft-fixme-placeholders (source): file-contains-fixme-placeholder FIXME [debian/control:22]
+cruft-fixme-placeholders (source): file-contains-fixme-placeholder FIXME [debian/control:18]
+cruft-fixme-placeholders (source): file-contains-fixme-placeholder FIXME [debian/README.source:4]
diff --git a/t/recipes/checks/dh-make/cruft-readme-source/build-spec/debian/README.source b/t/recipes/checks/dh-make/cruft-readme-source/build-spec/debian/README.source
new file mode 100644
index 0000000..5fdbe79
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-readme-source/build-spec/debian/README.source
@@ -0,0 +1,5 @@
+cruft-readme-source for Debian
+------------------------------
+
+<this file describes information about the source package, see Debian policy
+manual section 4.14. You WILL either need to modify or delete this file>
diff --git a/t/recipes/checks/dh-make/cruft-readme-source/build-spec/fill-values b/t/recipes/checks/dh-make/cruft-readme-source/build-spec/fill-values
new file mode 100644
index 0000000..be86fdc
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-readme-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-readme-source
+Description: Check for cruft in README.source
diff --git a/t/recipes/checks/dh-make/cruft-readme-source/eval/desc b/t/recipes/checks/dh-make/cruft-readme-source/eval/desc
new file mode 100644
index 0000000..a46d9a7
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-readme-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-readme-source
+Check: dh-make
diff --git a/t/recipes/checks/dh-make/cruft-readme-source/eval/hints b/t/recipes/checks/dh-make/cruft-readme-source/eval/hints
new file mode 100644
index 0000000..c44d576
--- /dev/null
+++ b/t/recipes/checks/dh-make/cruft-readme-source/eval/hints
@@ -0,0 +1 @@
+cruft-readme-source (source): readme-source-is-dh_make-template [debian/README.source]
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/desc b/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..101d4c8
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: dh-make/template
+See-Also:
+ Debian Bug#497347
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/hints b/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..f2817be
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/hints
@@ -0,0 +1,17 @@
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/watch.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/prerm.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/preinst.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/postrm.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/postinst.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/menu.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/manpage.xml.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/manpage.sgml.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/manpage.1.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/init.d.lsb.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/init.d.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/generic-dh-make-2008.doc-base.EX]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/generic-dh-make-2008.default.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/emacsen-startup.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/emacsen-remove.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/emacsen-install.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/cron.d.ex]
diff --git a/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/post-test b/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/dh-make/template/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/control b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/fill-values b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/desc b/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/desc
new file mode 100644
index 0000000..0663c8f
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: documentation/devhelp
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/hints b/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/hints
new file mode 100644
index 0000000..680eb22
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): stray-devhelp-documentation [usr/share/doc/filenames/bad-devhelp/c.devhelp.gz]
diff --git a/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/post-test b/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/debian/install b/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/debian/install
new file mode 100644
index 0000000..1f6260c
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/debian/install
@@ -0,0 +1 @@
+devhelp/index.devhelp usr/share/devhelp/books/this-test/
diff --git a/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/fill-values b/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/fill-values
new file mode 100644
index 0000000..0839040
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-non-native
+Testname: version-1
+Description: Ships a Devhelp index file that follows version 1.
diff --git a/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/orig/devhelp/index.devhelp b/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/orig/devhelp/index.devhelp
new file mode 100644
index 0000000..c40b9f1
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/standard/version-1/build-spec/orig/devhelp/index.devhelp
@@ -0,0 +1 @@
+MEANINGFUL CONTENTS
diff --git a/t/recipes/checks/documentation/devhelp/standard/version-1/eval/desc b/t/recipes/checks/documentation/devhelp/standard/version-1/eval/desc
new file mode 100644
index 0000000..94c87c6
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/standard/version-1/eval/desc
@@ -0,0 +1,2 @@
+Testname: version-1
+Check: documentation/devhelp/standard
diff --git a/t/recipes/checks/documentation/devhelp/standard/version-1/eval/hints b/t/recipes/checks/documentation/devhelp/standard/version-1/eval/hints
new file mode 100644
index 0000000..81e1498
--- /dev/null
+++ b/t/recipes/checks/documentation/devhelp/standard/version-1/eval/hints
@@ -0,0 +1 @@
+version-1 (binary): old-devhelp-standard [usr/share/devhelp/books/this-test/index.devhelp]
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/fill-values b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/fill-values
new file mode 100644
index 0000000..9ba18d6
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-doxygen-documentation
+Description: Detect doxygen documentation
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/Doxyfile b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/Doxyfile
new file mode 100644
index 0000000..2807c21
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/Doxyfile
@@ -0,0 +1,2363 @@
+# Doxyfile 1.8.7
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = example
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = YES
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = YES
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT =
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.idl \
+ *.ddl \
+ *.odl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.cs \
+ *.d \
+ *.php \
+ *.php4 \
+ *.php5 \
+ *.phtml \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.for \
+ *.tcl \
+ *.vhd \
+ *.vhdl \
+ *.ucf \
+ *.qsf \
+ *.as \
+ *.js
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: YES.
+
+HAVE_DOT = YES
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
+# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
+# gif:cairo:gd, gif:gd, gif:gd:gd and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS = YES
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP = YES
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css
new file mode 100644
index 0000000..0a8f962
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css
@@ -0,0 +1,1440 @@
+/* The standard CSS for doxygen 1.8.7 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png
new file mode 100644
index 0000000..3627dee
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png
Binary files differ
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/files.html b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/files.html
new file mode 100644
index 0000000..37c96c6
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/files.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="d1/d6a/hello_8c.html" target="_self">hello.c</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/index.html b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/index.html
new file mode 100644
index 0000000..e9e2c06
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">example Documentation</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css
new file mode 100644
index 0000000..9cf578f
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/doxygen.sty b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/doxygen.sty
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/doxygen.sty
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/files.tex b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/files.tex
new file mode 100644
index 0000000..4335bbf
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/files.tex
@@ -0,0 +1,4 @@
+\section{File List}
+Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{\hyperlink{hello_8c}{hello.\+c} }{\pageref{d1/d6a/hello_8c}}{}
+\end{DoxyCompactList}
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/refman.tex b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/refman.tex
new file mode 100644
index 0000000..608e040
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/doc/latex/refman.tex
@@ -0,0 +1,153 @@
+\documentclass[twoside]{book}
+
+% Packages required by doxygen
+\usepackage{fixltx2e}
+\usepackage{calc}
+\usepackage{doxygen}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\usepackage{multicol}
+\usepackage{multirow}
+\PassOptionsToPackage{warn}{textcomp}
+\usepackage{textcomp}
+\usepackage[nointegrals]{wasysym}
+\usepackage[table]{xcolor}
+
+% Font selection
+\usepackage[T1]{fontenc}
+\usepackage{mathptmx}
+\usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\usepackage{amssymb}
+\usepackage{sectsty}
+\renewcommand{\familydefault}{\sfdefault}
+\allsectionsfont{%
+ \fontseries{bc}\selectfont%
+ \color{darkgray}%
+}
+\renewcommand{\DoxyLabelFont}{%
+ \fontseries{bc}\selectfont%
+ \color{darkgray}%
+}
+\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
+
+% Page & text layout
+\usepackage{geometry}
+\geometry{%
+ a4paper,%
+ top=2.5cm,%
+ bottom=2.5cm,%
+ left=2.5cm,%
+ right=2.5cm%
+}
+\tolerance=750
+\hfuzz=15pt
+\hbadness=750
+\setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\makeatletter
+\renewcommand{\paragraph}{%
+ \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
+ \normalfont\normalsize\bfseries\SS@parafont%
+ }%
+}
+\renewcommand{\subparagraph}{%
+ \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
+ \normalfont\normalsize\bfseries\SS@subparafont%
+ }%
+}
+\makeatother
+
+% Headers & footers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Sun Sep 7 2014 16\+:14\+:08 for example by Doxygen }}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Sun Sep 7 2014 16\+:14\+:08 for example by Doxygen }}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+\renewcommand{\footrulewidth}{0.4pt}
+\renewcommand{\chaptermark}[1]{%
+ \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+ \markright{\thesection\ #1}%
+}
+
+% Indices & bibliography
+\usepackage{natbib}
+\usepackage[titles]{tocloft}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{5}
+\makeindex
+
+% Hyperlinks (required, but should be loaded last)
+\usepackage{ifpdf}
+\ifpdf
+ \usepackage[pdftex,pagebackref=true]{hyperref}
+\else
+ \usepackage[ps2pdf,pagebackref=true]{hyperref}
+\fi
+\hypersetup{%
+ colorlinks=true,%
+ linkcolor=blue,%
+ citecolor=blue,%
+ unicode%
+}
+
+% Custom commands
+\newcommand{\clearemptydoublepage}{%
+ \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+
+
+%===== C O N T E N T S =====
+
+\begin{document}
+
+% Titlepage & ToC
+\hypersetup{pageanchor=false,
+ bookmarks=true,
+ bookmarksnumbered=true,
+ pdfencoding=unicode
+ }
+\pagenumbering{roman}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}%
+{\Large example }\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.8.7}\\
+\vspace*{0.5cm}
+{\small Sun Sep 7 2014 16:14:08}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\hypersetup{pageanchor=true}
+
+%--- Begin generated contents ---
+\chapter{File Index}
+\input{files}
+\chapter{File Documentation}
+\input{d1/d6a/hello_8c}
+%--- End generated contents ---
+
+% Index
+\newpage
+\phantomsection
+\addcontentsline{toc}{chapter}{Index}
+\printindex
+
+\end{document}
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/hello.c b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/hello.c
new file mode 100644
index 0000000..ff2cb8d
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/build-spec/orig/src/hello.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+void hello() {
+ printf("hello");
+}
+
+int main()
+{
+ hello();
+} \ No newline at end of file
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/desc b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/desc
new file mode 100644
index 0000000..3495c4d
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-doxygen-documentation
+Check: documentation/doxygen
diff --git a/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/hints b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/hints
new file mode 100644
index 0000000..0f18d7a
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/cruft-doxygen-documentation/eval/hints
@@ -0,0 +1,4 @@
+cruft-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/latex/]
+cruft-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/index.html]
+cruft-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/files.html]
+cruft-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/]
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/debian/install b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/debian/install
new file mode 100644
index 0000000..a99dced
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/debian/install
@@ -0,0 +1 @@
+src/doc /usr/share/doc/files-doxygen-documentation/html \ No newline at end of file
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/fill-values b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/fill-values
new file mode 100644
index 0000000..2614efb
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-doxygen-documentation
+Description: Detect doxygen documentation problem
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/Doxyfile b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/Doxyfile
new file mode 100644
index 0000000..67bf289
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/Doxyfile
@@ -0,0 +1,2363 @@
+# Doxyfile 1.8.7
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = example
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = YES
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = YES
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT =
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.idl \
+ *.ddl \
+ *.odl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.cs \
+ *.d \
+ *.php \
+ *.php4 \
+ *.php5 \
+ *.phtml \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.for \
+ *.tcl \
+ *.vhd \
+ *.vhdl \
+ *.ucf \
+ *.qsf \
+ *.as \
+ *.js
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: YES.
+
+HAVE_DOT = YES
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
+# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
+# gif:cairo:gd, gif:gd, gif:gd:gd and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS = YES
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP = YES
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css
new file mode 100644
index 0000000..0a8f962
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css
@@ -0,0 +1,1440 @@
+/* The standard CSS for doxygen 1.8.7 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png
new file mode 100644
index 0000000..3627dee
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png
Binary files differ
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js
new file mode 100644
index 0000000..85e1836
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+ a.html('&#9660;');
+ $(this).show();
+ } else if (l==level+1) {
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+ a.html('&#9658;');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ // the clicked row
+ var currentRow = $('#row_'+id);
+
+ // all rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+ // only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() { return this.id.match(re); });
+
+ // first row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ // replace down arrow by right arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ currentRowSpans.filter(".arrow").html('&#9658;');
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+ } else { // we are SHOWING
+ // replace right arrow by down arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+ currentRowSpans.filter(".arrow").html('&#9660;');
+ // replace down arrows by right arrows for child rows
+ var childRowsSpans = childRows.find("span");
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ childRowsSpans.filter(".arrow").html('&#9658;');
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html
new file mode 100644
index 0000000..37c96c6
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="d1/d6a/hello_8c.html" target="_self">hello.c</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html
new file mode 100644
index 0000000..8556064
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div><ul>
+<li>hello()
+: <a class="el" href="d1/d6a/hello_8c.html#a27a1864e1f4693766ae2596e6e205731">hello.c</a>
+</li>
+<li>main()
+: <a class="el" href="d1/d6a/hello_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4">hello.c</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html
new file mode 100644
index 0000000..62539e2
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>hello()
+: <a class="el" href="d1/d6a/hello_8c.html#a27a1864e1f4693766ae2596e6e205731">hello.c</a>
+</li>
+<li>main()
+: <a class="el" href="d1/d6a/hello_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4">hello.c</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html
new file mode 100644
index 0000000..84ada4d
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: Graph Legend</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Graph Legend</div> </div>
+</div><!--header-->
+<div class="contents">
+<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
+<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
+<div class="line"><span class="keyword">class </span>Invisible { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
+<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
+<div class="line"></div>
+<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
+<div class="line"><span class="keyword">class </span>Undocumented { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! A template class */</span></div>
+<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
+<div class="line"><span class="keyword">class </span>Used { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
+<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
+<div class="line"> <span class="keyword">protected</span> ProtectedBase,</div>
+<div class="line"> <span class="keyword">private</span> PrivateBase,</div>
+<div class="line"> <span class="keyword">public</span> Undocumented,</div>
+<div class="line"> <span class="keyword">public</span> Templ&lt;int&gt;</div>
+<div class="line">{</div>
+<div class="line"> <span class="keyword">private</span>:</div>
+<div class="line"> Used *m_usedClass;</div>
+<div class="line">};</div>
+</div><!-- fragment --><p> This will result in the following graph:</p>
+<center><div class="image">
+<img src="graph_legend.png" />
+</div>
+</center><p>The boxes in the above graph have the following meaning: </p>
+<ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+<p>The arrows have the following meaning: </p>
+<ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gz b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gz
new file mode 100644
index 0000000..2b2d51e
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gz
Binary files differ
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md5 b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md5
new file mode 100644
index 0000000..7bd9957
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md5
@@ -0,0 +1 @@
+1bffc4ef6cd06b95fb6c5ee5c51e8968 \ No newline at end of file
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.png b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.png
new file mode 100644
index 0000000..f2ddbe5
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.png
Binary files differ
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html
new file mode 100644
index 0000000..e9e2c06
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">example Documentation</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css
new file mode 100644
index 0000000..9cf578f
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/hello.c b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/hello.c
new file mode 100644
index 0000000..ff2cb8d
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/build-spec/orig/src/hello.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+void hello() {
+ printf("hello");
+}
+
+int main()
+{
+ hello();
+} \ No newline at end of file
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/desc b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/desc
new file mode 100644
index 0000000..58d9811
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-doxygen-documentation
+Check: documentation/doxygen
diff --git a/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/hints b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/hints
new file mode 100644
index 0000000..c4fcd03
--- /dev/null
+++ b/t/recipes/checks/documentation/doxygen/files-doxygen-documentation/eval/hints
@@ -0,0 +1,6 @@
+files-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/index.html]
+files-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/graph_legend.html]
+files-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/globals_func.html]
+files-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/globals.html]
+files-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/files.html]
+files-doxygen-documentation (source): source-contains-prebuilt-doxygen-documentation [src/doc/html/]
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/desc b/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..e5979ad
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: documentation/examples
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/hints b/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..5b58201
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): nested-examples-directory [usr/share/doc/files-foo-in-bar/examples/examples/]
diff --git a/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/post-test b/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/documentation/examples/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.docs b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.docs
new file mode 100644
index 0000000..42f92ea
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.docs
@@ -0,0 +1,3 @@
+read-only
+README
+some-file
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.init b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.init
new file mode 100644
index 0000000..4ebbdf5
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: binary
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Useless
+# Description: Does nothing
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.install b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.install
new file mode 100644
index 0000000..c759290
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.install
@@ -0,0 +1,9 @@
+sample.ali usr/lib/some-where/
+script-uid usr/bin/
+script-ugid usr/bin/
+script-gid usr/bin/
+script-wexec usr/bin/
+script-wuid usr/bin/
+script-ro usr/bin/
+script etc/cron.d/
+script etc/emacs.d/
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.manpages b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.manpages
new file mode 100644
index 0000000..ad3e735
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/binary.manpages
@@ -0,0 +1 @@
+script-*.1
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/clean b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/clean
new file mode 100644
index 0000000..1e7cec6
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/clean
@@ -0,0 +1 @@
+script*.1
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/control.in b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/control.in
new file mode 100644
index 0000000..5c8703f
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: binary
+Architecture: all
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: game
+Architecture: all
+Section: games
+Depends: ${misc:Depends}
+Description: [% $description %] - game
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Game package.
+
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.install b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.install
new file mode 100644
index 0000000..f708f99
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.install
@@ -0,0 +1 @@
+script usr/games/
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.manpages b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.manpages
new file mode 100644
index 0000000..8d16fb4
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/game.manpages
@@ -0,0 +1 @@
+script.1
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/rules b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/rules
new file mode 100644
index 0000000..951f84c
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/debian/rules
@@ -0,0 +1,31 @@
+#!/usr/bin/make -f
+
+GPKG:=game
+PKG:=binary
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ for N in uid gid ugid wexec wuid ro; do \
+ sed s/script/script-$$N/ < script > script-$$N ; \
+ pod2man --section 1 script-$$N > script-$$N.1 ; \
+ done
+ pod2man --section 1 script > script.1
+
+override_dh_fixperms:
+ dh_fixperms
+
+ chmod 0444 debian/$(PKG)/usr/share/doc/$(PKG)/read-only
+ chmod 4755 debian/$(PKG)/usr/bin/script-uid
+ chmod 2755 debian/$(PKG)/usr/bin/script-gid
+ chmod 6755 debian/$(PKG)/usr/bin/script-ugid
+ chmod 0775 debian/$(PKG)/usr/bin/script-wexec
+ chmod 4744 debian/$(PKG)/usr/bin/script-wuid
+ chmod 0751 debian/$(PKG)/usr/bin/script-ro
+ chmod 0644 debian/$(PKG)/usr/lib/some-where/sample.ali
+ chmod 0744 debian/$(PKG)/usr/share/doc/$(PKG)
+ chmod 0755 debian/$(PKG)/usr/share/doc/$(PKG)/some-file
+ chmod 0755 debian/$(PKG)/etc/cron.d/script
+ chmod 0755 debian/$(PKG)/etc/emacs.d/script
+ chmod 0765 debian/$(PKG)/etc/init.d/binary
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/fill-values b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/fill-values
new file mode 100644
index 0000000..c914891
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-bad-perm-owner
+Description: General permissions and owner tests
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/README b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/read-only b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/read-only
new file mode 100644
index 0000000..1a3fca1
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/read-only
@@ -0,0 +1 @@
+Fadango on the core
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/sample.ali b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/sample.ali
new file mode 100644
index 0000000..fec3fc8
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/sample.ali
@@ -0,0 +1 @@
+This is not a valid ali file
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/script b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/script
new file mode 100755
index 0000000..8521013
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/script
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+echo "Aloha"
+
+exit 0
+
+=head1 NAME
+
+script -- prints Aloha to stdout
+
+=head1 SYNOPSIS
+
+ script
+
+=head1 DESCRIPTION
+
+Prints Aloha to stdout and that is it.
+
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/some-file b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/some-file
new file mode 100644
index 0000000..0dfa8ff
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This is executable and should not be. :)
+ - Unfortunately it triggers an extra tag... oh well.
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/eval/desc b/t/recipes/checks/documentation/files-bad-perm-owner/eval/desc
new file mode 100644
index 0000000..dc2fa3d
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-bad-perm-owner
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-bad-perm-owner/eval/hints b/t/recipes/checks/documentation/files-bad-perm-owner/eval/hints
new file mode 100644
index 0000000..7046d8f
--- /dev/null
+++ b/t/recipes/checks/documentation/files-bad-perm-owner/eval/hints
@@ -0,0 +1 @@
+binary (binary): executable-in-usr-share-doc 0755 [usr/share/doc/binary/some-file]
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/debian/install b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/debian/install
new file mode 100644
index 0000000..a99dced
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/debian/install
@@ -0,0 +1 @@
+src/doc /usr/share/doc/files-doxygen-documentation/html \ No newline at end of file
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/fill-values b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/fill-values
new file mode 100644
index 0000000..2614efb
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-doxygen-documentation
+Description: Detect doxygen documentation problem
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/Doxyfile b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/Doxyfile
new file mode 100644
index 0000000..67bf289
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/Doxyfile
@@ -0,0 +1,2363 @@
+# Doxyfile 1.8.7
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = example
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = YES
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = YES
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT =
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.idl \
+ *.ddl \
+ *.odl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.cs \
+ *.d \
+ *.php \
+ *.php4 \
+ *.php5 \
+ *.phtml \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.for \
+ *.tcl \
+ *.vhd \
+ *.vhdl \
+ *.ucf \
+ *.qsf \
+ *.as \
+ *.js
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: YES.
+
+HAVE_DOT = YES
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
+# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
+# gif:cairo:gd, gif:gd, gif:gd:gd and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS = YES
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP = YES
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css
new file mode 100644
index 0000000..0a8f962
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.css
@@ -0,0 +1,1440 @@
+/* The standard CSS for doxygen 1.8.7 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('ftv2doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png
new file mode 100644
index 0000000..3627dee
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/doxygen.png
Binary files differ
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js
new file mode 100644
index 0000000..85e1836
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+ a.html('&#9660;');
+ $(this).show();
+ } else if (l==level+1) {
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+ a.html('&#9658;');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ // the clicked row
+ var currentRow = $('#row_'+id);
+
+ // all rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+ // only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() { return this.id.match(re); });
+
+ // first row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ // replace down arrow by right arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ currentRowSpans.filter(".arrow").html('&#9658;');
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+ } else { // we are SHOWING
+ // replace right arrow by down arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+ currentRowSpans.filter(".arrow").html('&#9660;');
+ // replace down arrows by right arrows for child rows
+ var childRowsSpans = childRows.find("span");
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ childRowsSpans.filter(".arrow").html('&#9658;');
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html
new file mode 100644
index 0000000..37c96c6
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/files.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="d1/d6a/hello_8c.html" target="_self">hello.c</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html
new file mode 100644
index 0000000..8556064
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div><ul>
+<li>hello()
+: <a class="el" href="d1/d6a/hello_8c.html#a27a1864e1f4693766ae2596e6e205731">hello.c</a>
+</li>
+<li>main()
+: <a class="el" href="d1/d6a/hello_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4">hello.c</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html
new file mode 100644
index 0000000..62539e2
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/globals_func.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>hello()
+: <a class="el" href="d1/d6a/hello_8c.html#a27a1864e1f4693766ae2596e6e205731">hello.c</a>
+</li>
+<li>main()
+: <a class="el" href="d1/d6a/hello_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4">hello.c</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html
new file mode 100644
index 0000000..84ada4d
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: Graph Legend</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Graph Legend</div> </div>
+</div><!--header-->
+<div class="contents">
+<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
+<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
+<div class="line"><span class="keyword">class </span>Invisible { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
+<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
+<div class="line"></div>
+<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
+<div class="line"><span class="keyword">class </span>Undocumented { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! A template class */</span></div>
+<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
+<div class="line"><span class="keyword">class </span>Used { };</div>
+<div class="line"><span class="comment"></span></div>
+<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
+<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
+<div class="line"> <span class="keyword">protected</span> ProtectedBase,</div>
+<div class="line"> <span class="keyword">private</span> PrivateBase,</div>
+<div class="line"> <span class="keyword">public</span> Undocumented,</div>
+<div class="line"> <span class="keyword">public</span> Templ&lt;int&gt;</div>
+<div class="line">{</div>
+<div class="line"> <span class="keyword">private</span>:</div>
+<div class="line"> Used *m_usedClass;</div>
+<div class="line">};</div>
+</div><!-- fragment --><p> This will result in the following graph:</p>
+<center><div class="image">
+<img src="graph_legend.png" />
+</div>
+</center><p>The boxes in the above graph have the following meaning: </p>
+<ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+<p>The arrows have the following meaning: </p>
+<ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gz b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gz
new file mode 100644
index 0000000..2b2d51e
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.map.gz
Binary files differ
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md5 b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md5
new file mode 100644
index 0000000..7bd9957
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.md5
@@ -0,0 +1 @@
+1bffc4ef6cd06b95fb6c5ee5c51e8968 \ No newline at end of file
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.png b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.png
new file mode 100644
index 0000000..f2ddbe5
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/graph_legend.png
Binary files differ
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html
new file mode 100644
index 0000000..e9e2c06
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/index.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>example: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">example
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">example Documentation</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sun Sep 7 2014 16:14:08 for example by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.7
+</small></address>
+</body>
+</html>
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css
new file mode 100644
index 0000000..9cf578f
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/doc/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/hello.c b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/hello.c
new file mode 100644
index 0000000..ff2cb8d
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/build-spec/orig/src/hello.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+void hello() {
+ printf("hello");
+}
+
+int main()
+{
+ hello();
+} \ No newline at end of file
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/eval/desc b/t/recipes/checks/documentation/files-doxygen-documentation/eval/desc
new file mode 100644
index 0000000..568b784
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-doxygen-documentation
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-doxygen-documentation/eval/hints b/t/recipes/checks/documentation/files-doxygen-documentation/eval/hints
new file mode 100644
index 0000000..5a59246
--- /dev/null
+++ b/t/recipes/checks/documentation/files-doxygen-documentation/eval/hints
@@ -0,0 +1,2 @@
+files-doxygen-documentation (binary): useless-autogenerated-doxygen-file [usr/share/doc/files-doxygen-documentation/html/doc/html/graph_legend.md5]
+files-doxygen-documentation (binary): compressed-documentation [usr/share/doc/files-doxygen-documentation/html/doc/html/graph_legend.map.gz]
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/eval/desc b/t/recipes/checks/documentation/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..e65c42b
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/eval/hints b/t/recipes/checks/documentation/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..ddcd68a
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): file-directly-in-usr-share-doc [usr/share/doc/bar]
diff --git a/t/recipes/checks/documentation/files-foo-in-bar/eval/post-test b/t/recipes/checks/documentation/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/documentation/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/clean b/t/recipes/checks/documentation/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/dirs b/t/recipes/checks/documentation/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/examples b/t/recipes/checks/documentation/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/install b/t/recipes/checks/documentation/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/links b/t/recipes/checks/documentation/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/manpages b/t/recipes/checks/documentation/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/documentation/files-general/build-spec/debian/rules b/t/recipes/checks/documentation/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/documentation/files-general/build-spec/fill-values b/t/recipes/checks/documentation/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/--lzma b/t/recipes/checks/documentation/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/dir b/t/recipes/checks/documentation/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/documentation/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/foo.5 b/t/recipes/checks/documentation/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/documentation/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/documentation/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/documentation/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/sudotest b/t/recipes/checks/documentation/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/documentation/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/documentation/files-general/build-spec/orig/types b/t/recipes/checks/documentation/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/documentation/files-general/eval/desc b/t/recipes/checks/documentation/files-general/eval/desc
new file mode 100644
index 0000000..40ecb2e
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: documentation
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/documentation/files-general/eval/hints b/t/recipes/checks/documentation/files-general/eval/hints
new file mode 100644
index 0000000..d302955
--- /dev/null
+++ b/t/recipes/checks/documentation/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): package-contains-info-dir-file [usr/share/info/dir.gz]
diff --git a/t/recipes/checks/documentation/files-package-contains-foo/build-spec/debian/rules b/t/recipes/checks/documentation/files-package-contains-foo/build-spec/debian/rules
new file mode 100644
index 0000000..506639f
--- /dev/null
+++ b/t/recipes/checks/documentation/files-package-contains-foo/build-spec/debian/rules
@@ -0,0 +1,73 @@
+#!/usr/bin/make -f
+
+PKG :=$(shell dh_listpackages)
+SHARE:= debian/$(PKG)/usr/share
+DATA := $(SHARE)/$(PKG)
+DOC := $(SHARE)/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DOC) $(DATA)
+
+ # Vcs stuff
+ mkdir $(DATA)/.svn $(DATA)/.git
+ touch $(DATA)/.svn/file
+ touch $(DATA)/.git/file
+ touch $(DATA)/.gitignore
+ touch $(DATA)/.git_ignore
+ mkdir $(DATA)/sub-git1/
+ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz
+ touch $(DATA)/sub-git1/.gitattributes
+ touch $(DATA)/sub-git1/.gitmodules
+
+ touch $(DATA)/svn-commit-yeehaa.tmp
+ touch $(DATA)/svk-commit-yeehaa.tmp
+
+ # bts control dir
+ mkdir $(DATA)/.be
+ touch $(DATA)/.be/file
+
+ # macos stuff
+ touch $(DATA)/.DS_Store
+ touch $(DATA)/._stuff
+
+ # windows
+ touch $(DATA)/Thumbs.db
+
+ # Foreign READMEs
+ echo "Hallo World Mac" > $(DOC)/README.mac
+ echo "Hallo World Win" > $(DOC)/README.windows
+
+ # Linda override
+ mkdir -p $(SHARE)/linda/overrides
+ touch $(SHARE)/linda/overrides/$(PKG)
+
+ # CMake private files
+ mkdir -p $(SHARE)/cmake-3.1/Modules
+ touch $(SHARE)/cmake-3.1/FindFoo.cmake
+ touch $(SHARE)/cmake-3.1/Modules/FindVar.cmake
+
+ # Ignored Cargo sources
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/.gitignore
+ touch $(SHARE)/cargo/registry/crate-1.0.0/LICENSE
+ touch $(SHARE)/cargo/registry/crate-1.0.0/templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/foo_templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/foo_templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d
+ touch $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d/readme.tmpl
+ echo '#!/bin/sh' > $(SHARE)/cargo/registry/crate-1.0.0/test.sh
+ echo '#!/usr/bin/python' > $(SHARE)/cargo/registry/crate-1.0.0/test.py
+ chmod a+x $(SHARE)/cargo/registry/crate-1.0.0/test.py
+
+ # Documentation outside /usr/share/doc
+ touch $(DATA)/readme.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme_1.1.txt
+ touch $(DATA)/readme-1.1.txt
+ touch $(DATA)/readmefirst.txt
+ touch $(DATA)/readMesh_off.m # False-positive from #914500
diff --git a/t/recipes/checks/documentation/files-package-contains-foo/build-spec/fill-values b/t/recipes/checks/documentation/files-package-contains-foo/build-spec/fill-values
new file mode 100644
index 0000000..b55ed53
--- /dev/null
+++ b/t/recipes/checks/documentation/files-package-contains-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-package-contains-foo
+Description: Test tags about cruft in binary packages
diff --git a/t/recipes/checks/documentation/files-package-contains-foo/eval/desc b/t/recipes/checks/documentation/files-package-contains-foo/eval/desc
new file mode 100644
index 0000000..f7c87a2
--- /dev/null
+++ b/t/recipes/checks/documentation/files-package-contains-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-foo
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-package-contains-foo/eval/hints b/t/recipes/checks/documentation/files-package-contains-foo/eval/hints
new file mode 100644
index 0000000..e777614
--- /dev/null
+++ b/t/recipes/checks/documentation/files-package-contains-foo/eval/hints
@@ -0,0 +1,8 @@
+files-package-contains-foo (binary): package-contains-readme-for-other-platform-or-distro [usr/share/doc/files-package-contains-foo/README.windows]
+files-package-contains-foo (binary): package-contains-readme-for-other-platform-or-distro [usr/share/doc/files-package-contains-foo/README.mac]
+files-package-contains-foo (binary): package-contains-documentation-outside-usr-share-doc [usr/share/files-package-contains-foo/readmefirst.txt]
+files-package-contains-foo (binary): package-contains-documentation-outside-usr-share-doc [usr/share/files-package-contains-foo/readme_1.1.txt]
+files-package-contains-foo (binary): package-contains-documentation-outside-usr-share-doc [usr/share/files-package-contains-foo/readme1.1.txt]
+files-package-contains-foo (binary): package-contains-documentation-outside-usr-share-doc [usr/share/files-package-contains-foo/readme.txt]
+files-package-contains-foo (binary): package-contains-documentation-outside-usr-share-doc [usr/share/files-package-contains-foo/readme-1.1.txt]
+files-package-contains-foo (binary): package-contains-documentation-outside-usr-share-doc [usr/share/cargo/registry/crate-1.0.0/LICENSE]
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/debian/compat.in b/t/recipes/checks/documentation/files-python-general/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/debian/control.in b/t/recipes/checks/documentation/files-python-general/build-spec/debian/control.in
new file mode 100644
index 0000000..cbad865
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/debian/control.in
@@ -0,0 +1,53 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dpkg-dev (>= 1.16.1~)
+Rules-Requires-Root: no
+
+Package: python-kinterbasdb
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python-kinterbasdb-dbg
+Architecture: any
+Section: debug
+Depends: ${misc:Depends}, python-kinterbasdb (= ${binary:Version}),
+ ${shlibs:Depends}
+Description: [% $description %] - debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a fake debug package.
+
+Package: python3-modulename
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %] (Python 3.x)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3.x version.
+
+Package: python3-modulename-dbg
+Architecture: any
+Section: debug
+Depends: ${misc:Depends}, python3-modulename (= ${binary:Version}),
+ ${shlibs:Depends}
+Description: [% $description %] - debug (Python 3.x) version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a fake Python 3.x debug package.
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/debian/python-kinterbasdb.install b/t/recipes/checks/documentation/files-python-general/build-spec/debian/python-kinterbasdb.install
new file mode 100644
index 0000000..ad14f96
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/debian/python-kinterbasdb.install
@@ -0,0 +1,7 @@
+code.pyc usr/share/python-kinterbasdb/
+code.pyo usr/share/python-kinterbasdb/
+code.pyc usr/share/python-kinterbasdb/__pycache__/
+code.pyo usr/share/python-kinterbasdb/__pycache__/
+objects.inv usr/share/doc/python-kinterbasdb/docs/
+python.egg usr/share/python-kinterbasdb/
+python-module.so usr/lib/pyshared/python2.7
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/debian/rules b/t/recipes/checks/documentation/files-python-general/build-spec/debian/rules
new file mode 100644
index 0000000..1648ccd
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+DPKG_EXPORT_BUILDFLAGS:=1
+include /usr/share/dpkg/buildflags.mk
+
+DOCS:=debian/python-kinterbasdb/usr/share/doc/python-kinterbasdb/docs
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -ppython-kinterbasdb --dbg-package=python-kinterbasdb-dbg
+ dh_strip --remaining-packages
+
+override_dh_compress:
+ dh_compress
+ # Manually compress it, since debhelper will fix #608907
+ # in the "near" future.
+ [ -f "$(DOCS)/objects.inv.gz" ] || gzip -n --best "$(DOCS)/objects.inv"
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/fill-values b/t/recipes/checks/documentation/files-python-general/build-spec/fill-values
new file mode 100644
index 0000000..4177acc
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: files-python-general
+Dh-Compat-Level: 7
+Description: Test general Python related tags
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/orig/Makefile b/t/recipes/checks/documentation/files-python-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..e246faf
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+all: lib.c
+ echo 'Hallo World' > code.pyc
+ echo 'Hallo World' > code.pyo
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -o python-module.so lib.c
+
+distclean:
+ rm -f code.pyc code.pyo python-module.so
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/orig/lib.c b/t/recipes/checks/documentation/files-python-general/build-spec/orig/lib.c
new file mode 100644
index 0000000..30d6ed5
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/orig/lib.c
@@ -0,0 +1,4 @@
+int do_something(int (*a)(char *)){
+ char test[10];
+ return a(test);
+}
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/orig/objects.inv b/t/recipes/checks/documentation/files-python-general/build-spec/orig/objects.inv
new file mode 100644
index 0000000..2dcebcb
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/orig/objects.inv
@@ -0,0 +1,199 @@
+# Sphinx inventory version 1
+# Project: KInterbasDB
+# Version: 3.3
+kinterbasdb.typeconv_23plus_lowmem mod beyond-python-db-api.html
+kinterbasdb mod index.html
+kinterbasdb.typeconv_naked mod beyond-python-db-api.html
+kinterbasdb.typeconv_fixed_fixedpoint mod beyond-python-db-api.html
+kinterbasdb.typeconv_23plus mod beyond-python-db-api.html
+kinterbasdb.typeconv_fixed_decimal mod beyond-python-db-api.html
+kinterbasdb.typeconv_fixed_stdlib mod beyond-python-db-api.html
+kinterbasdb.typeconv_datetime_stdlib mod beyond-python-db-api.html
+kinterbasdb.typeconv_text_unicode mod beyond-python-db-api.html
+kinterbasdb.typeconv_datetime_mx mod beyond-python-db-api.html
+kinterbasdb.typeconv_backcompat mod beyond-python-db-api.html
+kinterbasdb.services mod beyond-python-db-api.html
+kinterbasdb.typeconv_24plus mod beyond-python-db-api.html
+kinterbasdb.services.Connection.getArchitecture method beyond-python-db-api.html
+kinterbasdb.connect function python-db-api-compliance.html
+kinterbasdb.Cursor.transaction attribute beyond-python-db-api.html
+Cursor.executemany method Python-DB-API-2.0.html
+kinterbasdb.TableReservation.render method beyond-python-db-api.html
+Error exception Python-DB-API-2.0.html
+kinterbasdb.PreparedStatement.description attribute beyond-python-db-api.html
+kinterbasdb.DATETIME data python-db-api-compliance.html
+kinterbasdb.Connection.prepare method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.sql attribute beyond-python-db-api.html
+kinterbasdb.Transaction.cursors attribute beyond-python-db-api.html
+kinterbasdb.Connection.trans method beyond-python-db-api.html
+kinterbasdb.services.Conenction.setWriteMode method beyond-python-db-api.html
+kinterbasdb.Connection.event_conduit method beyond-python-db-api.html
+kinterbasdb.BlobReader.chunks method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.prepare method beyond-python-db-api.html
+kinterbasdb.TableReservation class beyond-python-db-api.html
+Cursor.close method Python-DB-API-2.0.html
+kinterbasdb.Transaction.n_physical attribute beyond-python-db-api.html
+TimestampFromTicks function Python-DB-API-2.0.html
+kinterbasdb.CT_NONTRANSPARENT data beyond-python-db-api.html
+kinterbasdb.TPB.isolation_level attribute beyond-python-db-api.html
+kinterbasdb.Transaction.close method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.n_output_params attribute beyond-python-db-api.html
+Cursor.nextset method Python-DB-API-2.0.html
+DATETIME data Python-DB-API-2.0.html
+kinterbasdb.Cursor.rowcount attribute python-db-api-compliance.html
+kinterbasdb.Connection.database_info method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.remove method beyond-python-db-api.html
+kinterbasdb.TPB.render method beyond-python-db-api.html
+kinterbasdb.services.Conenction.modifyUser method beyond-python-db-api.html
+kinterbasdb.services.Conenction.rollbackLimboTransaction method beyond-python-db-api.html
+kinterbasdb.Transaction.__init__ method beyond-python-db-api.html
+kinterbasdb.services.Connection.getHomeDir method beyond-python-db-api.html
+kinterbasdb.Cursor.setinputsizes method python-db-api-compliance.html
+paramstyle data Python-DB-API-2.0.html
+kinterbasdb.TPB.lock_timeout attribute beyond-python-db-api.html
+Connection.rollback method Python-DB-API-2.0.html
+kinterbasdb.EventConduit.close method beyond-python-db-api.html
+kinterbasdb.Cursor.arraysize attribute python-db-api-compliance.html
+DatabaseError exception Python-DB-API-2.0.html
+kinterbasdb.Cursor.description attribute python-db-api-compliance.html
+kinterbasdb.EventConduit.flush method beyond-python-db-api.html
+kinterbasdb.services.Connection.close method beyond-python-db-api.html
+kinterbasdb.services.Conenction.activateShadowFile method beyond-python-db-api.html
+kinterbasdb.Cursor.setoutputsize method python-db-api-compliance.html
+kinterbasdb.ConnectionGroup.commit method beyond-python-db-api.html
+kinterbasdb.services.Conenction.setSQLDialect method beyond-python-db-api.html
+connect function Python-DB-API-2.0.html
+Cursor.setinputsizes method Python-DB-API-2.0.html
+kinterbasdb.Connection.dialect attribute python-db-api-compliance.html
+kinterbasdb.Connection.execute_immediate method python-db-api-compliance.html
+kinterbasdb.create_database function beyond-python-db-api.html
+kinterbasdb.Connection.get_type_trans_in method beyond-python-db-api.html
+kinterbasdb.TPB class beyond-python-db-api.html
+kinterbasdb.services.connect function beyond-python-db-api.html
+kinterbasdb.Transaction.commit method beyond-python-db-api.html
+kinterbasdb.Connection.charset attribute python-db-api-compliance.html
+TimeFromTicks function Python-DB-API-2.0.html
+kinterbasdb.Connection.savepoint method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchallmap method python-db-api-compliance.html
+kinterbasdb.PreparedStatement.statement_type attribute beyond-python-db-api.html
+kinterbasdb.Cursor class beyond-python-db-api.html
+kinterbasdb.services.Conenction.setShouldReservePageSpace method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup class beyond-python-db-api.html
+Cursor.callproc method Python-DB-API-2.0.html
+kinterbasdb.services.Connection class beyond-python-db-api.html
+kinterbasdb.services.Connection.getServiceManagerVersion method beyond-python-db-api.html
+IntegrityError exception Python-DB-API-2.0.html
+kinterbasdb.Transaction class beyond-python-db-api.html
+Cursor class Python-DB-API-2.0.html
+kinterbasdb.Connection.drop_database method beyond-python-db-api.html
+Connection.commit method Python-DB-API-2.0.html
+kinterbasdb.services.Conenction.userExists method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchone method python-db-api-compliance.html
+kinterbasdb.Connection.transactions attribute beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.disband method beyond-python-db-api.html
+InterfaceError exception Python-DB-API-2.0.html
+kinterbasdb.Transaction.connection attribute beyond-python-db-api.html
+kinterbasdb.Connection.rollback method python-db-api-compliance.html
+kinterbasdb.services.Connection.getStatistics method beyond-python-db-api.html
+kinterbasdb.TPB.access_mode attribute beyond-python-db-api.html
+kinterbasdb.services.Connection.getCapabilityMask method beyond-python-db-api.html
+kinterbasdb.Connection.precision_mode attribute python-db-api-compliance.html
+kinterbasdb.Connection.transaction_info method beyond-python-db-api.html
+kinterbasdb.EventConduit class beyond-python-db-api.html
+BINARY data Python-DB-API-2.0.html
+kinterbasdb.Connection.db_info method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.add method beyond-python-db-api.html
+Binary function Python-DB-API-2.0.html
+kinterbasdb.init function beyond-python-db-api.html
+Cursor.setoutputsize method Python-DB-API-2.0.html
+kinterbasdb.CT_COMMIT data beyond-python-db-api.html
+kinterbasdb.services.Connection.getConnectionCount method beyond-python-db-api.html
+kinterbasdb.services.Connection.getLockFileDir method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.contains method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.rollback method beyond-python-db-api.html
+kinterbasdb.Connection.set_type_trans_in method beyond-python-db-api.html
+kinterbasdb.Transaction.trans_info method beyond-python-db-api.html
+Cursor.rowcount attribute Python-DB-API-2.0.html
+threadsafety data Python-DB-API-2.0.html
+kinterbasdb.services.Connection.restore method beyond-python-db-api.html
+Warning exception Python-DB-API-2.0.html
+kinterbasdb.services.Connection.getSecurityDatabasePath method beyond-python-db-api.html
+Timestamp function Python-DB-API-2.0.html
+kinterbasdb.Cursor.fetchmanymap method python-db-api-compliance.html
+kinterbasdb.Transaction.closed attribute beyond-python-db-api.html
+kinterbasdb.Cursor.fetchonemap method python-db-api-compliance.html
+Date function Python-DB-API-2.0.html
+kinterbasdb.ConnectionGroup.count method beyond-python-db-api.html
+kinterbasdb.services.Connection.setSweepInterval method beyond-python-db-api.html
+ProgrammingError exception Python-DB-API-2.0.html
+kinterbasdb.Transaction.begin method beyond-python-db-api.html
+kinterbasdb.CT_ROLLBACK data beyond-python-db-api.html
+kinterbasdb.Cursor.set_type_trans_in method beyond-python-db-api.html
+kinterbasdb.services.Conenction.shutdown method beyond-python-db-api.html
+kinterbasdb.services.Connection.getAttachedDatabaseNames method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchall method python-db-api-compliance.html
+kinterbasdb.services.Connection.backup method beyond-python-db-api.html
+Connection class Python-DB-API-2.0.html
+kinterbasdb.ConnectionGroup.begin method beyond-python-db-api.html
+Time function Python-DB-API-2.0.html
+kinterbasdb.services.Connection.getMessageFileDir method beyond-python-db-api.html
+kinterbasdb.Transaction.resolution attribute beyond-python-db-api.html
+Connection.cursor method Python-DB-API-2.0.html
+kinterbasdb.ConnectionGroup.__init__ method beyond-python-db-api.html
+kinterbasdb.Cursor.itermap method python-db-api-compliance.html
+kinterbasdb.services.User class beyond-python-db-api.html
+DataError exception Python-DB-API-2.0.html
+kinterbasdb.CT_VETO data beyond-python-db-api.html
+kinterbasdb.services.Conenction.bringOnline method beyond-python-db-api.html
+apilevel data Python-DB-API-2.0.html
+kinterbasdb.Cursor.get_type_trans_in method beyond-python-db-api.html
+InternalError exception Python-DB-API-2.0.html
+NUMBER data Python-DB-API-2.0.html
+kinterbasdb.services.Conenction.repair method beyond-python-db-api.html
+Cursor.fetchall method Python-DB-API-2.0.html
+kinterbasdb.Transaction.prepare method beyond-python-db-api.html
+kinterbasdb.Transaction.rollback method beyond-python-db-api.html
+kinterbasdb.services.Conenction.setAccessMode method beyond-python-db-api.html
+Cursor.fetchmany method Python-DB-API-2.0.html
+kinterbasdb.services.Connection.getServerVersion method beyond-python-db-api.html
+kinterbasdb.Transaction.cursor method beyond-python-db-api.html
+kinterbasdb.services.Conenction.commitLimboTransaction method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchmany method python-db-api-compliance.html
+Cursor.execute method Python-DB-API-2.0.html
+kinterbasdb.services.Conenction.removeUser method beyond-python-db-api.html
+kinterbasdb.Cursor.name attribute beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.clear method beyond-python-db-api.html
+kinterbasdb.Connection class beyond-python-db-api.html
+kinterbasdb.Connection.main_transaction attribute beyond-python-db-api.html
+kinterbasdb.Cursor.prep method beyond-python-db-api.html
+kinterbasdb.Cursor.nextset method python-db-api-compliance.html
+kinterbasdb.BlobReader class beyond-python-db-api.html
+kinterbasdb.TPB.lock_resolution attribute beyond-python-db-api.html
+kinterbasdb.services.Conenction.getLimboTransactionIDs method beyond-python-db-api.html
+STRING data Python-DB-API-2.0.html
+Cursor.description attribute Python-DB-API-2.0.html
+NotSupportedError exception Python-DB-API-2.0.html
+kinterbasdb.PreparedStatement class beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.members method beyond-python-db-api.html
+kinterbasdb.services.Conenction.addUser method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.n_input_params attribute beyond-python-db-api.html
+kinterbasdb.services.Conenction.setDefaultPageBuffers method beyond-python-db-api.html
+kinterbasdb.Connection.server_version attribute python-db-api-compliance.html
+Connection.close method Python-DB-API-2.0.html
+kinterbasdb.Connection.trans_info method beyond-python-db-api.html
+kinterbasdb.Cursor.iter method python-db-api-compliance.html
+DateFromTicks function Python-DB-API-2.0.html
+kinterbasdb.EventConduit.wait method beyond-python-db-api.html
+kinterbasdb.EventConduit.__init__ method beyond-python-db-api.html
+Cursor.fetchone method Python-DB-API-2.0.html
+kinterbasdb.Transaction.savepoint method beyond-python-db-api.html
+kinterbasdb.services.Conenction.getUsers method beyond-python-db-api.html
+kinterbasdb.TPB.table_reservation attribute beyond-python-db-api.html
+kinterbasdb.Transaction.transaction_info method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.plan attribute beyond-python-db-api.html
+kinterbasdb.services.Connection.getLog method beyond-python-db-api.html
+ROWID data Python-DB-API-2.0.html
+kinterbasdb.Connection.begin method beyond-python-db-api.html
+kinterbasdb.services.Connection.sweep method beyond-python-db-api.html
+kinterbasdb.Connection.commit method python-db-api-compliance.html
+OperationalError exception Python-DB-API-2.0.html
diff --git a/t/recipes/checks/documentation/files-python-general/build-spec/orig/python.egg b/t/recipes/checks/documentation/files-python-general/build-spec/orig/python.egg
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/build-spec/orig/python.egg
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/documentation/files-python-general/eval/desc b/t/recipes/checks/documentation/files-python-general/eval/desc
new file mode 100644
index 0000000..930a5e2
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-python-general
+See-Also: Debian Bug#608810, Debian Bug#756005
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-python-general/eval/hints b/t/recipes/checks/documentation/files-python-general/eval/hints
new file mode 100644
index 0000000..8fc556e
--- /dev/null
+++ b/t/recipes/checks/documentation/files-python-general/eval/hints
@@ -0,0 +1 @@
+python-kinterbasdb (binary): compressed-documentation [usr/share/doc/python-kinterbasdb/docs/objects.inv.gz]
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs
new file mode 100644
index 0000000..58d7b07
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs
@@ -0,0 +1,2 @@
+test-1
+test-2
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install
new file mode 100644
index 0000000..1cc1957
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install
@@ -0,0 +1,6 @@
+test-1 var/lib/test
+test-2 var/lib/test
+README var/lib/test
+misc.txt var/lib/test
+test-1 usr/share/locale
+test-2 usr/share/locale
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/fill-values b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/fill-values
new file mode 100644
index 0000000..ccf850c
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-uses-dpkg-database-directly
+Description: Check for code using dpkg internals
+Package-Architecture: any
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/Makefile b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/Makefile
new file mode 100644
index 0000000..e9d446e
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/Makefile
@@ -0,0 +1,11 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o test test.c
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -m 755 -c test $(DESTDIR)/usr/bin/test
+
+clean distclean:
+ rm -f test
+
+check test:
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/README b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/README
new file mode 100644
index 0000000..a5c0f7b
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/README
@@ -0,0 +1 @@
+/var/lib/dpkg/foo is a false positive.
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/misc.txt b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/misc.txt
new file mode 100644
index 0000000..f51cff6
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/misc.txt
@@ -0,0 +1 @@
+This file is false positive as it references /var/lib/dpkg/foo.
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-1 b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-1
new file mode 100755
index 0000000..1732799
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-1
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/triggers/other-package
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-2 b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-2
new file mode 100755
index 0000000..91f2f88
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test-2
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo /var/lib/dpkg/info/other-package.list
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test.c b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test.c
new file mode 100644
index 0000000..de46c32
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/build-spec/orig/test.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <string.h>
+
+#define VAR_LIB_DPKG "/var/lib/dpkg"
+
+int
+main(void)
+{
+ printf("/var/lib/dpkg\n");
+ printf("%s\n", VAR_LIB_DPKG);
+
+ return 0;
+}
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/desc b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/desc
new file mode 100644
index 0000000..5335ea3
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-uses-dpkg-database-directly
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/hints b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/hints
new file mode 100644
index 0000000..5086cdf
--- /dev/null
+++ b/t/recipes/checks/documentation/files-uses-dpkg-database-directly/eval/hints
@@ -0,0 +1,2 @@
+files-uses-dpkg-database-directly (binary): package-contains-documentation-outside-usr-share-doc [var/lib/test/misc.txt]
+files-uses-dpkg-database-directly (binary): package-contains-documentation-outside-usr-share-doc [var/lib/test/README]
diff --git a/t/recipes/checks/documentation/files-zero-byte-doc/build-spec/fill-values b/t/recipes/checks/documentation/files-zero-byte-doc/build-spec/fill-values
new file mode 100644
index 0000000..2f4ccc2
--- /dev/null
+++ b/t/recipes/checks/documentation/files-zero-byte-doc/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-zero-byte-doc
+Section: doc
+Description: Check detection of zero-byte files in doc directories
diff --git a/t/recipes/checks/documentation/files-zero-byte-doc/build-spec/orig/Makefile b/t/recipes/checks/documentation/files-zero-byte-doc/build-spec/orig/Makefile
new file mode 100644
index 0000000..3f77ca4
--- /dev/null
+++ b/t/recipes/checks/documentation/files-zero-byte-doc/build-spec/orig/Makefile
@@ -0,0 +1,29 @@
+ROOT = $(DESTDIR)/usr/share/doc/files-zero-byte-doc
+
+default:
+ :
+
+install:
+ mkdir -p $(ROOT)
+ # Should be ignored.
+ mkdir -p $(ROOT)/examples
+ touch $(ROOT)/examples/empty
+ touch $(ROOT)/__init__.py
+ mkdir -p $(ROOT)/python/foo
+ touch $(ROOT)/python/foo/__init__.py
+ mkdir -p $(ROOT)/html
+ touch $(ROOT)/html/blah.map
+ mkdir -p $(ROOT)/manual/1/html/foo
+ touch $(ROOT)/manual/1/html/foo/blah.map
+ # Should be diagnosed.
+ touch $(ROOT)/NEWS
+ touch $(ROOT)/foo__init__.py
+ touch $(ROOT)/html.map
+ touch $(ROOT)/htmlfoo.map
+ mkdir -p $(ROOT)/manual
+ touch $(ROOT)/manual/foo.map
+ gzip -n -9 $(ROOT)/manual/foo.map
+ touch $(ROOT)/some-really-long-file-name-to-make-the-gzip-file-larger
+ gzip -n -9 $(ROOT)/some-really-long-file-name-to-make-the-gzip-file-larger
+
+.PHONY: clean distclean realclean install check test
diff --git a/t/recipes/checks/documentation/files-zero-byte-doc/eval/desc b/t/recipes/checks/documentation/files-zero-byte-doc/eval/desc
new file mode 100644
index 0000000..3918c23
--- /dev/null
+++ b/t/recipes/checks/documentation/files-zero-byte-doc/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-zero-byte-doc
+See-Also: Debian Bug#507273
+Check: documentation
diff --git a/t/recipes/checks/documentation/files-zero-byte-doc/eval/hints b/t/recipes/checks/documentation/files-zero-byte-doc/eval/hints
new file mode 100644
index 0000000..79717d5
--- /dev/null
+++ b/t/recipes/checks/documentation/files-zero-byte-doc/eval/hints
@@ -0,0 +1,6 @@
+files-zero-byte-doc (binary): zero-byte-file-in-doc-directory [usr/share/doc/files-zero-byte-doc/some-really-long-file-name-to-make-the-gzip-file-larger.gz]
+files-zero-byte-doc (binary): zero-byte-file-in-doc-directory [usr/share/doc/files-zero-byte-doc/manual/foo.map.gz]
+files-zero-byte-doc (binary): zero-byte-file-in-doc-directory [usr/share/doc/files-zero-byte-doc/htmlfoo.map]
+files-zero-byte-doc (binary): zero-byte-file-in-doc-directory [usr/share/doc/files-zero-byte-doc/html.map]
+files-zero-byte-doc (binary): zero-byte-file-in-doc-directory [usr/share/doc/files-zero-byte-doc/foo__init__.py]
+files-zero-byte-doc (binary): zero-byte-file-in-doc-directory [usr/share/doc/files-zero-byte-doc/NEWS.gz]
diff --git a/t/recipes/checks/documentation/files-zero-byte-doc/eval/post-test b/t/recipes/checks/documentation/files-zero-byte-doc/eval/post-test
new file mode 100644
index 0000000..8538b49
--- /dev/null
+++ b/t/recipes/checks/documentation/files-zero-byte-doc/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/.: .*: duplicate-files .*/ d
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/control b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/rules b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/debian/templates b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/fill-values b/t/recipes/checks/documentation/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/documentation/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/documentation/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/documentation/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/documentation/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/documentation/legacy-binary/eval/desc b/t/recipes/checks/documentation/legacy-binary/eval/desc
new file mode 100644
index 0000000..b5e6b46
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: documentation
diff --git a/t/recipes/checks/documentation/legacy-binary/eval/hints b/t/recipes/checks/documentation/legacy-binary/eval/hints
new file mode 100644
index 0000000..1248ee0
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): package-contains-upstream-installation-documentation [usr/share/doc/binary/INSTALL]
diff --git a/t/recipes/checks/documentation/legacy-binary/eval/post-test b/t/recipes/checks/documentation/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/control b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/fill-values b/t/recipes/checks/documentation/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/documentation/legacy-filenames/eval/desc b/t/recipes/checks/documentation/legacy-filenames/eval/desc
new file mode 100644
index 0000000..3781b96
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: documentation
diff --git a/t/recipes/checks/documentation/legacy-filenames/eval/hints b/t/recipes/checks/documentation/legacy-filenames/eval/hints
new file mode 100644
index 0000000..3a19c7c
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/eval/hints
@@ -0,0 +1,9 @@
+filenames (binary): zero-byte-file-in-doc-directory [usr/share/doc/filenames/news.debian.gz]
+filenames (binary): zero-byte-file-in-doc-directory [usr/share/doc/filenames/examples/very_interesting_example2.gz]
+filenames (binary): zero-byte-file-in-doc-directory [usr/share/doc/filenames/README.macosx]
+filenames (binary): zero-byte-file-in-doc-directory [usr/share/doc/filenames/NEWS.Debian]
+filenames (binary): package-contains-readme-for-other-platform-or-distro [usr/share/doc/filenames/README.macosx]
+filenames (binary): package-contains-documentation-outside-usr-share-doc [usr/share/pixmaps/license.txt]
+filenames (binary): package-contains-documentation-outside-usr-share-doc [usr/share/menu/README]
+filenames (binary): package-contains-documentation-outside-usr-share-doc [usr/lib/menu/README]
+filenames (binary): package-contains-documentation-outside-usr-share-doc [usr/lib/ma-dir/perl/version/foo/.hg_archival.txt]
diff --git a/t/recipes/checks/documentation/legacy-filenames/eval/post-test b/t/recipes/checks/documentation/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/documentation/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/documentation/legacy-libbaz/eval/desc b/t/recipes/checks/documentation/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..5751a3c
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: documentation
diff --git a/t/recipes/checks/documentation/legacy-libbaz/eval/hints b/t/recipes/checks/documentation/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..636c5a5
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz1 (binary): zero-byte-file-in-doc-directory [usr/share/doc/README.Debian]
+libbaz1 (binary): file-directly-in-usr-share-doc [usr/share/doc/README.Debian]
diff --git a/t/recipes/checks/documentation/legacy-libbaz/eval/post-test b/t/recipes/checks/documentation/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/fill-values b/t/recipes/checks/documentation/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/documentation/legacy-scripts/build-spec/pre-build b/t/recipes/checks/documentation/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/documentation/legacy-scripts/eval/desc b/t/recipes/checks/documentation/legacy-scripts/eval/desc
new file mode 100644
index 0000000..a60af85
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: documentation
diff --git a/t/recipes/checks/documentation/legacy-scripts/eval/hints b/t/recipes/checks/documentation/legacy-scripts/eval/hints
new file mode 100644
index 0000000..88099d1
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): script-in-usr-share-doc [usr/share/doc/scripts/rubyfoo]
diff --git a/t/recipes/checks/documentation/legacy-scripts/eval/post-test b/t/recipes/checks/documentation/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/documentation/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/documentation/manual/acute-accent/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/acute-accent/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/acute-accent/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/checks/documentation/manual/acute-accent/build-spec/fill-values b/t/recipes/checks/documentation/manual/acute-accent/build-spec/fill-values
new file mode 100644
index 0000000..63bead0
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/acute-accent/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: acute-accent
+Skeleton: upload-native
+Description: Generates an acute accent instead of an apostrophe or single closing quote
diff --git a/t/recipes/checks/documentation/manual/acute-accent/build-spec/orig/man/hosts_access.5 b/t/recipes/checks/documentation/manual/acute-accent/build-spec/orig/man/hosts_access.5
new file mode 100644
index 0000000..044d0e0
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/acute-accent/build-spec/orig/man/hosts_access.5
@@ -0,0 +1,405 @@
+.TH HOSTS_ACCESS 5
+.SH NAME
+hosts_access \- format of host access control files
+.SH DESCRIPTION
+This manual page describes a simple access control language that is
+based on client (host name/address, user name), and server (process
+name, host name/address) patterns. Examples are given at the end. The
+impatient reader is encouraged to skip to the EXAMPLES section for a
+quick introduction.
+.PP
+The extended version of the access control language is described in the
+\fIhosts_options\fR(5) document. \fBNote that this language supersedes
+the meaning of \fIshell_command\fB as documented below.\fR
+.PP
+In the following text, \fIdaemon\fR is the process name of a
+network daemon process, and \fIclient\fR is the name and/or address of
+a host requesting service. Network daemon process names are specified
+in the inetd configuration file.
+.SH ACCESS CONTROL FILES
+The access control software consults two files. The search stops
+at the first match:
+.IP \(bu
+Access will be granted when a (daemon,client) pair matches an entry in
+the \fI/etc/hosts.allow\fR file.
+.IP \(bu
+Otherwise, access will be denied when a (daemon,client) pair matches an
+entry in the \fI/etc/hosts.deny\fR file.
+.IP \(bu
+Otherwise, access will be granted.
+.PP
+A non-existing access control file is treated as if it were an empty
+file. Thus, access control can be turned off by providing no access
+control files.
+.SH ACCESS CONTROL RULES
+Each access control file consists of zero or more lines of text. These
+lines are processed in order of appearance. The search terminates when a
+match is found.
+.IP \(bu
+A newline character is ignored when it is preceded by a backslash
+character. This permits you to break up long lines so that they are
+easier to edit.
+.IP \(bu
+Blank lines or lines that begin with a `#\' character are ignored.
+This permits you to insert comments and whitespace so that the tables
+are easier to read.
+.IP \(bu
+All other lines should satisfy the following format, things between []
+being optional:
+.sp
+.ti +3
+daemon_list : client_list [ : shell_command ]
+.PP
+\fIdaemon_list\fR is a list of one or more daemon process names
+(argv[0] values) or server port numbers or wildcards (see below).
+.PP
+\fIclient_list\fR is a list
+of one or more host names, host addresses, patterns or wildcards (see
+below) that will be matched against the client host name or address.
+.PP
+The more complex forms \fIdaemon@host\fR and \fIuser@host\fR are
+explained in the sections on server endpoint patterns and on client
+username lookups, respectively.
+.PP
+List elements should be separated by blanks and/or commas.
+.PP
+With the exception of NIS (YP) netgroup lookups, all access control
+checks are case insensitive.
+.ne 4
+.SH PATTERNS
+The access control language implements the following patterns:
+.IP \(bu
+A string that begins with a `.\' character. A host name is matched if
+the last components of its name match the specified pattern. For
+example, the pattern `.tue.nl\' matches the host name
+`wzv.win.tue.nl\'.
+.IP \(bu
+A string that ends with a `.\' character. A host address is matched if
+its first numeric fields match the given string. For example, the
+pattern `131.155.\' matches the address of (almost) every host on the
+Eind\%hoven University network (131.155.x.x).
+.IP \(bu
+A string that begins with an `@\' character is treated as an NIS
+(formerly YP) netgroup name. A host name is matched if it is a host
+member of the specified netgroup. Netgroup matches are not supported
+for daemon process names or for client user names.
+.IP \(bu
+An expression of the form `n.n.n.n/m.m.m.m\' is interpreted as a
+`net/mask\' pair. An IPv4 host address is matched if `net\' is equal to the
+bitwise AND of the address and the `mask\'. For example, the net/mask
+pattern `131.155.72.0/255.255.254.0\' matches every address in the
+range `131.155.72.0\' through `131.155.73.255\'.
+`255.255.255.255\' is not a valid mask value, so a single host can be
+matched just by its IP.
+.IP \(bu
+An expression of the form `n.n.n.n/mm' is interpreted as a
+`net/masklength' pair, where `mm' is the number of consecutive `1'
+bits in the netmask applied to the `n.n.n.n' address.
+.IP \(bu
+An expression of the form `[n:n:n:n:n:n:n:n]/m\' is interpreted as a
+`[net]/prefixlen\' pair. An IPv6 host address is matched if
+`prefixlen\' bits of `net\' is equal to the `prefixlen\' bits of the
+address. For example, the [net]/prefixlen pattern
+`[3ffe:505:2:1::]/64\' matches every address in the range
+`3ffe:505:2:1::\' through `3ffe:505:2:1:ffff:ffff:ffff:ffff\'.
+.IP \(bu
+A string that begins with a `/\' character is treated as a file
+name. A host name or address is matched if it matches any host name
+or address pattern listed in the named file. The file format is
+zero or more lines with zero or more host name or address patterns
+separated by whitespace. A file name pattern can be used anywhere
+a host name or address pattern can be used.
+.IP \(bu
+Wildcards `*\' and `?\' can be used to match hostnames or IP addresses. This
+method of matching cannot be used in conjunction with `net/mask\' matching,
+hostname matching beginning with `.\' or IP address matching ending with `.\'.
+.SH WILDCARDS
+The access control language supports explicit wildcards:
+.IP ALL
+The universal wildcard, always matches.
+.IP LOCAL
+Matches any host whose name does not contain a dot character.
+.IP UNKNOWN
+Matches any user whose name is unknown, and matches any host whose name
+\fIor\fR address are unknown. This pattern should be used with care:
+host names may be unavailable due to temporary name server problems. A
+network address will be unavailable when the software cannot figure out
+what type of network it is talking to.
+.IP KNOWN
+Matches any user whose name is known, and matches any host whose name
+\fIand\fR address are known. This pattern should be used with care:
+host names may be unavailable due to temporary name server problems. A
+network address will be unavailable when the software cannot figure out
+what type of network it is talking to.
+.IP PARANOID
+Matches any host whose name does not match its address. When tcpd is
+built with -DPARANOID (default mode), it drops requests from such
+clients even before looking at the access control tables. Build
+without -DPARANOID when you want more control over such requests.
+.ne 6
+.SH OPERATORS
+.IP EXCEPT
+Intended use is of the form: `list_1 EXCEPT list_2\'; this construct
+matches anything that matches \fIlist_1\fR unless it matches
+\fIlist_2\fR. The EXCEPT operator can be used in daemon_lists and in
+client_lists. The EXCEPT operator can be nested: if the control
+language would permit the use of parentheses, `a EXCEPT b EXCEPT c\'
+would parse as `(a EXCEPT (b EXCEPT c))\'.
+.br
+.ne 6
+.SH SHELL COMMANDS
+If the first-matched access control rule contains a shell command, that
+command is subjected to %<letter> substitutions (see next section).
+The result is executed by a \fI/bin/sh\fR child process with standard
+input, output and error connected to \fI/dev/null\fR. Specify an `&\'
+at the end of the command if you do not want to wait until it has
+completed.
+.PP
+Shell commands should not rely on the PATH setting of the inetd.
+Instead, they should use absolute path names, or they should begin with
+an explicit PATH=whatever statement.
+.PP
+The \fIhosts_options\fR(5) document describes an alternative language
+that uses the shell command field in a different and incompatible way.
+.SH % EXPANSIONS
+The following expansions are available within shell commands:
+.IP "%a (%A)"
+The client (server) host address.
+.IP %c
+Client information: user@host, user@address, a host name, or just an
+address, depending on how much information is available.
+.IP %d
+The daemon process name (argv[0] value).
+.IP "%h (%H)"
+The client (server) host name or address, if the host name is
+unavailable.
+.IP "%n (%N)"
+The client (server) host name (or "unknown" or "paranoid").
+.IP "%r (%R)"
+The clients (servers) port number (or "0").
+.IP %p
+The daemon process id.
+.IP %s
+Server information: daemon@host, daemon@address, or just a daemon name,
+depending on how much information is available.
+.IP %u
+The client user name (or "unknown").
+.IP %%
+Expands to a single `%\' character.
+.PP
+Characters in % expansions that may confuse the shell are replaced by
+underscores.
+.SH SERVER ENDPOINT PATTERNS
+In order to distinguish clients by the network address that they
+connect to, use patterns of the form:
+.sp
+.ti +3
+process_name@host_pattern : client_list ...
+.sp
+Patterns like these can be used when the machine has different internet
+addresses with different internet hostnames. Service providers can use
+this facility to offer FTP, GOPHER or WWW archives with internet names
+that may even belong to different organizations. See also the `twist\'
+option in the hosts_options(5) document. Some systems (Solaris,
+FreeBSD) can have more than one internet address on one physical
+interface; with other systems you may have to resort to SLIP or PPP
+pseudo interfaces that live in a dedicated network address space.
+.sp
+The host_pattern obeys the same syntax rules as host names and
+addresses in client_list context. Usually, server endpoint information
+is available only with connection-oriented services.
+.SH CLIENT USERNAME LOOKUP
+When the client host supports the RFC 931 protocol or one of its
+descendants (TAP, IDENT, RFC 1413) the wrapper programs can retrieve
+additional information about the owner of a connection. Client username
+information, when available, is logged together with the client host
+name, and can be used to match patterns like:
+.PP
+.ti +3
+daemon_list : ... user_pattern@host_pattern ...
+.PP
+The daemon wrappers can be configured at compile time to perform
+rule-driven username lookups (default) or to always interrogate the
+client host. In the case of rule-driven username lookups, the above
+rule would cause username lookup only when both the \fIdaemon_list\fR
+and the \fIhost_pattern\fR match.
+.PP
+A user pattern has the same syntax as a daemon process pattern, so the
+same wildcards apply (netgroup membership is not supported). One
+should not get carried away with username lookups, though.
+.IP \(bu
+The client username information cannot be trusted when it is needed
+most, i.e. when the client system has been compromised. In general,
+ALL and (UN)KNOWN are the only user name patterns that make sense.
+.IP \(bu
+Username lookups are possible only with TCP-based services, and only
+when the client host runs a suitable daemon; in all other cases the
+result is "unknown".
+.IP \(bu
+A well-known UNIX kernel bug may cause loss of service when username
+lookups are blocked by a firewall. The wrapper README document
+describes a procedure to find out if your kernel has this bug.
+.IP \(bu
+Username lookups may cause noticeable delays for non-UNIX users. The
+default timeout for username lookups is 10 seconds: too short to cope
+with slow networks, but long enough to irritate PC users.
+.PP
+Selective username lookups can alleviate the last problem. For example,
+a rule like:
+.PP
+.ti +3
+daemon_list : @pcnetgroup ALL@ALL
+.PP
+would match members of the pc netgroup without doing username lookups,
+but would perform username lookups with all other systems.
+.SH DETECTING ADDRESS SPOOFING ATTACKS
+A flaw in the sequence number generator of many TCP/IP implementations
+allows intruders to easily impersonate trusted hosts and to break in
+via, for example, the remote shell service. The IDENT (RFC931 etc.)
+service can be used to detect such and other host address spoofing
+attacks.
+.PP
+Before accepting a client request, the wrappers can use the IDENT
+service to find out that the client did not send the request at all.
+When the client host provides IDENT service, a negative IDENT lookup
+result (the client matches `UNKNOWN@host\') is strong evidence of a host
+spoofing attack.
+.PP
+A positive IDENT lookup result (the client matches `KNOWN@host\') is
+less trustworthy. It is possible for an intruder to spoof both the
+client connection and the IDENT lookup, although doing so is much
+harder than spoofing just a client connection. It may also be that
+the client\'s IDENT server is lying.
+.PP
+Note: IDENT lookups don\'t work with UDP services.
+.SH EXAMPLES
+The language is flexible enough that different types of access control
+policy can be expressed with a minimum of fuss. Although the language
+uses two access control tables, the most common policies can be
+implemented with one of the tables being trivial or even empty.
+.PP
+When reading the examples below it is important to realize that the
+allow table is scanned before the deny table, that the search
+terminates when a match is found, and that access is granted when no
+match is found at all.
+.PP
+The examples use host and domain names. They can be improved by
+including address and/or network/netmask information, to reduce the
+impact of temporary name server lookup failures.
+.SH MOSTLY CLOSED
+In this case, access is denied by default. Only explicitly authorized
+hosts are permitted access.
+.PP
+The default policy (no access) is implemented with a trivial deny
+file:
+.PP
+.ne 2
+/etc/hosts.deny:
+.in +3
+ALL: ALL
+.PP
+This denies all service to all hosts, unless they are permitted access
+by entries in the allow file.
+.PP
+The explicitly authorized hosts are listed in the allow file.
+For example:
+.PP
+.ne 2
+/etc/hosts.allow:
+.in +3
+ALL: LOCAL @some_netgroup
+.br
+ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
+.PP
+The first rule permits access from hosts in the local domain (no `.\'
+in the host name) and from members of the \fIsome_netgroup\fP
+netgroup. The second rule permits access from all hosts in the
+\fIfoobar.edu\fP domain (notice the leading dot), with the exception of
+\fIterminalserver.foobar.edu\fP.
+.SH MOSTLY OPEN
+Here, access is granted by default; only explicitly specified hosts are
+refused service.
+.PP
+The default policy (access granted) makes the allow file redundant so
+that it can be omitted. The explicitly non-authorized hosts are listed
+in the deny file. For example:
+.PP
+/etc/hosts.deny:
+.in +3
+ALL: some.host.name, .some.domain
+.br
+ALL EXCEPT in.fingerd: other.host.name, .other.domain
+.PP
+The first rule denies some hosts and domains all services; the second
+rule still permits finger requests from other hosts and domains.
+.SH BOOBY TRAPS
+The next example permits tftp requests from hosts in the local domain
+(notice the leading dot). Requests from any other hosts are denied.
+Instead of the requested file, a finger probe is sent to the offending
+host. The result is mailed to the superuser.
+.PP
+.ne 2
+/etc/hosts.allow:
+.in +3
+.nf
+in.tftpd: LOCAL, .my.domain
+.PP
+.ne 2
+/etc/hosts.deny:
+.in +3
+.nf
+in.tftpd: ALL: (/usr/sbin/safe_finger -l @%h | \\
+ /usr/bin/mail -s %d-%h root) &
+.fi
+.PP
+The safe_finger command comes with the tcpd wrapper and should be
+installed in a suitable place. It limits possible damage from data sent
+by the remote finger server. It gives better protection than the
+standard finger command.
+.PP
+The expansion of the %h (client host) and %d (service name) sequences
+is described in the section on shell commands.
+.PP
+Warning: do not booby-trap your finger daemon, unless you are prepared
+for infinite finger loops.
+.PP
+On network firewall systems this trick can be carried even further.
+The typical network firewall only provides a limited set of services to
+the outer world. All other services can be "bugged" just like the above
+tftp example. The result is an excellent early-warning system.
+.br
+.ne 4
+.SH DIAGNOSTICS
+An error is reported when a syntax error is found in a host access
+control rule; when the length of an access control rule exceeds the
+capacity of an internal buffer; when an access control rule is not
+terminated by a newline character; when the result of %<letter>
+expansion would overflow an internal buffer; when a system call fails
+that shouldn\'t. All problems are reported via the syslog daemon.
+.SH FILES
+.na
+.nf
+/etc/hosts.allow, (daemon,client) pairs that are granted access.
+/etc/hosts.deny, (daemon,client) pairs that are denied access.
+.ad
+.fi
+.SH SEE ALSO
+.nf
+hosts_options(5) extended syntax.
+tcpd(8) tcp/ip daemon wrapper program.
+tcpdchk(8), tcpdmatch(8), test programs.
+.SH BUGS
+If a name server lookup times out, the host name will not be available
+to the access control software, even though the host is registered.
+.PP
+Domain name server lookups are case insensitive; NIS (formerly YP)
+netgroup lookups are case sensitive.
+.SH AUTHOR
+.na
+.nf
+Wietse Venema (wietse@wzv.win.tue.nl)
+Department of Mathematics and Computing Science
+Eindhoven University of Technology
+Den Dolech 2, P.O. Box 513,
+5600 MB Eindhoven, The Netherlands
+\" @(#) hosts_access.5 1.20 95/01/30 19:51:46
diff --git a/t/recipes/checks/documentation/manual/acute-accent/eval/desc b/t/recipes/checks/documentation/manual/acute-accent/eval/desc
new file mode 100644
index 0000000..411b27a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/acute-accent/eval/desc
@@ -0,0 +1,3 @@
+Testname: acute-accent
+Check: documentation/manual
+See-Also: Bug#554897, Bug#507673
diff --git a/t/recipes/checks/documentation/manual/acute-accent/eval/hints b/t/recipes/checks/documentation/manual/acute-accent/eval/hints
new file mode 100644
index 0000000..c292d15
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/acute-accent/eval/hints
@@ -0,0 +1,34 @@
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:99]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:92]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:91]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:90]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:89]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:88]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:87]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:82]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:79]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:77]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:75]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:74]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:72]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:43]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:378]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:314]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:274]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:272]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:268]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:265]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:202]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:188]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:154]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:147]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:146]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:142]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:115]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:114]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:113]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:106]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:104]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:103]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:101]
+acute-accent (binary): acute-accent-in-manual-page [usr/share/man/man5/hosts_access.5.gz:100]
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/manpages
new file mode 100644
index 0000000..67a8262
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/manpages
@@ -0,0 +1 @@
+undocumented.7
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/rules b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/rules
new file mode 100755
index 0000000..e0581b1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_link:
+ dh_link
+
+ install -d $(tmp)/usr/share/man/man1
+ ln -s undocumented.7.gz $(tmp)/usr/share/man/man1/sbin-binary.1.gz
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/fill-values
new file mode 100644
index 0000000..0348cd4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: bad-link-to-undocumented-manpage
+Description: Manual page that is a bad link to an undocumented man page
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/bin/sbin-binary b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/bin/sbin-binary
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/bin/sbin-binary
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/undocumented.7 b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/undocumented.7
new file mode 100644
index 0000000..a72dfb9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/build-spec/orig/undocumented.7
@@ -0,0 +1,11 @@
+.TH fixcr 7
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/desc b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/desc
new file mode 100644
index 0000000..c6f22fb
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/desc
@@ -0,0 +1,3 @@
+Testname: bad-link-to-undocumented-manpage
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/hints b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/hints
new file mode 100644
index 0000000..c28379f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-link-to-undocumented-manpage/eval/hints
@@ -0,0 +1 @@
+bad-link-to-undocumented-manpage (binary): broken-link-to-undocumented [usr/share/man/man1/sbin-binary.1.gz]
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/manpages
new file mode 100644
index 0000000..4250dab
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/debian/manpages
@@ -0,0 +1 @@
+bad-so.1
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/fill-values
new file mode 100644
index 0000000..d30dcca
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: bad-so-link-in-manpage
+Description: Manual page with a bad .so link
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bad-so.1 b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bad-so.1
new file mode 100644
index 0000000..8e50cfc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bad-so.1
@@ -0,0 +1 @@
+.so ../somewhere/invalid/manpage.1
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bin/bad-so b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bin/bad-so
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/build-spec/orig/bin/bad-so
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/desc b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/desc
new file mode 100644
index 0000000..6a93bf5
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/desc
@@ -0,0 +1,3 @@
+Testname: bad-so-link-in-manpage
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/hints b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/hints
new file mode 100644
index 0000000..dadff55
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/bad-so-link-in-manpage/eval/hints
@@ -0,0 +1 @@
+bad-so-link-in-manpage (binary): bad-so-link-within-manual-page [usr/share/man/man1/bad-so.1.gz]
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/fill-values
new file mode 100644
index 0000000..9abb58a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: combined-manpage
+Skeleton: upload-native
+Description: Ships a combined manpage covering multiple executables
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/bin/mount.cifs b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/bin/mount.cifs
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/bin/mount.cifs
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/man/mount.cifs.8 b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/man/mount.cifs.8
new file mode 100644
index 0000000..211f883
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/build-spec/orig/man/mount.cifs.8
@@ -0,0 +1,59 @@
+.\" Man page generated from reStructuredText.
+.
+.TH MOUNT.CIFS, MOUNT.SMB3 8 "" "" ""
+.SH NAME
+mount.cifs, mount.smb3 \- mount using the Common Internet File System (CIFS)
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+This man page was abbreviated for the Lintian test suite.
+.sp
+\fBmount.cifs\fP mounts a CIFS or SMB3 filesystem from Linux. It is
+usually invoked indirectly by the mount(8) command when using the "\-t cifs"
+option. This command only works in Linux, and the kernel must support
+the cifs filesystem. The SMB3 protocol is the successor to the CIFS (SMB)
+protocol and is supported by most Windows servers, Azure (cloud storage),
+Macs and many other commercial servers and Network Attached Storage
+appliances as well as by the popular Open Source server Samba.
+.SH SEE ALSO
+.sp
+cifs.upcall(8), getcifsacl(1), setcifsacl(1)
+.sp
+\fIDocumentation/filesystems/cifs.txt\fP and \fIfs/cifs/README\fP in the
+Linux kernel source tree may contain additional options and
+information.
+.SH AUTHOR
+.sp
+Steve French
+.sp
+The maintainer of the Linux cifs vfs is Steve French. The maintainer of the
+cifs\-utils suite of user space tools is Pavel Shilovsky. The Linux CIFS Mailing
+list is the preferred place to ask questions regarding these programs.
+.\" Generated by docutils manpage writer.
+.
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/eval/desc b/t/recipes/checks/documentation/manual/combined-manpage/eval/desc
new file mode 100644
index 0000000..94abd52
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/eval/desc
@@ -0,0 +1,6 @@
+Testname: combined-manpage
+Check: documentation/manual
+Test-Against:
+ wrong-manual-section
+See-Also:
+ Bug#962601
diff --git a/t/recipes/checks/documentation/manual/combined-manpage/eval/hints b/t/recipes/checks/documentation/manual/combined-manpage/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/combined-manpage/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/install b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/install
new file mode 100644
index 0000000..0531024
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/install
@@ -0,0 +1 @@
+sbin-binary /usr/sbin
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/manpages
new file mode 100644
index 0000000..8c22c13
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/debian/manpages
@@ -0,0 +1 @@
+sbin-binary.1
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/fill-values b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/fill-values
new file mode 100644
index 0000000..37d076a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: command-in-sbin-has-manpage-in-incorrect-section
+Description: Binary in /sbin with manpage in section 1
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary
new file mode 100755
index 0000000..839c9a9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+:
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary.1 b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary.1
new file mode 100644
index 0000000..ebb8b53
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/build-spec/orig/sbin-binary.1
@@ -0,0 +1,11 @@
+.TH fixcr 1
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/desc b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/desc
new file mode 100644
index 0000000..81a8fdc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/desc
@@ -0,0 +1,2 @@
+Testname: command-in-sbin-has-manpage-in-incorrect-section
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/hints b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/hints
new file mode 100644
index 0000000..fd38216
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/command-in-sbin-has-manpage-in-incorrect-section/eval/hints
@@ -0,0 +1 @@
+command-in-sbin-has-manpage-in-incorrect-section (binary): manual-page-for-system-command [usr/sbin/sbin-binary]
diff --git a/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/debian/install
new file mode 100644
index 0000000..f93fe52
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/debian/install
@@ -0,0 +1,2 @@
+from-abroad /usr/bin
+from-abroad.1 /usr/share/man/de/man1
diff --git a/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/fill-values
new file mode 100644
index 0000000..d58af69
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: executable-without-english-manpage
+Description: Manpage without an English language manpage
diff --git a/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad.1 b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad.1
new file mode 100644
index 0000000..6c03d31
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-english-manpage/build-spec/orig/from-abroad.1
@@ -0,0 +1,10 @@
+.IX Title "TEST 1"
+.TH TEST 1 "2004-12-18" "Debian Project" "Debian GNU/Linux Handbuch"
+.SH "NAME"
+\&\fBTEST\fR \- Eine Test-Manpage mit .1 Erweiterung.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Diese Seite dient hauptsächlich dem Testen von latin1-Buchstaben, wie äöüß
+in Manpages.
diff --git a/t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/desc b/t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/desc
new file mode 100644
index 0000000..25636b3
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/desc
@@ -0,0 +1,3 @@
+Testname: executable-without-english-manpage
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/hints b/t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/hints
new file mode 100644
index 0000000..07c2bce
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-english-manpage/eval/hints
@@ -0,0 +1 @@
+executable-without-english-manpage (binary): no-english-manual-page [usr/bin/from-abroad]
diff --git a/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/debian/install
new file mode 100644
index 0000000..8a96cea
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/debian/install
@@ -0,0 +1,2 @@
+telepathic /usr/bin
+telekinetic /usr/libexec
diff --git a/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/fill-values
new file mode 100644
index 0000000..eeabd4b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: executable-without-manpage
+Description: Executable file without manpage
diff --git a/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telekinetic b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telekinetic
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telekinetic
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telepathic b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telepathic
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-manpage/build-spec/orig/telepathic
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/executable-without-manpage/eval/desc b/t/recipes/checks/documentation/manual/executable-without-manpage/eval/desc
new file mode 100644
index 0000000..d5783c9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-manpage/eval/desc
@@ -0,0 +1,3 @@
+Testname: executable-without-manpage
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/executable-without-manpage/eval/hints b/t/recipes/checks/documentation/manual/executable-without-manpage/eval/hints
new file mode 100644
index 0000000..561b600
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/executable-without-manpage/eval/hints
@@ -0,0 +1 @@
+executable-without-manpage (binary): no-manual-page [usr/bin/telepathic]
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/clean b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/dirs b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/examples b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/install b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/links b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/debian/rules b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/fill-values b/t/recipes/checks/documentation/manual/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/--lzma b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/dir b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.5 b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/sudotest b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/documentation/manual/files-general/build-spec/orig/types b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/documentation/manual/files-general/eval/desc b/t/recipes/checks/documentation/manual/files-general/eval/desc
new file mode 100644
index 0000000..f5160dc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: documentation/manual
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/documentation/manual/files-general/eval/hints b/t/recipes/checks/documentation/manual/files-general/eval/hints
new file mode 100644
index 0000000..8c0379f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/files-general/eval/hints
@@ -0,0 +1,2 @@
+files-general (binary): stray-folder-in-manual [usr/share/man/man1/random/]
+files-general (binary): executable-manual-page [usr/share/man/man5/foo.5.gz]
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/install b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/manpages
new file mode 100644
index 0000000..fa89b0d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/debian/manpages
@@ -0,0 +1 @@
+mentions-other-standard.1p
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/fill-values b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/fill-values
new file mode 100644
index 0000000..aa55411
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fsstnd-dir-in-manual-page
+Description: Manual page references a directory specified in the FSSTND
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/bin/mentions-other-standard b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/bin/mentions-other-standard
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/bin/mentions-other-standard
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/mentions-other-standard.1p b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/mentions-other-standard.1p
new file mode 100644
index 0000000..e0563f5
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/build-spec/orig/mentions-other-standard.1p
@@ -0,0 +1,17 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux manual"
+.SH "NAME"
+\&\fBTEST\fR \- A test manpage with a .1P extension.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Use more up-level tools like human brains to understand lintian.
+Here's a bad undefined macro.
+Here's a serious syntax error.
+.SH "FILES"
+This program does not use /var/catman/do or any other FSSTND location.
+.PP
+.nh
+http://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man
+.\" Copied from caff(1)
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/desc b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/desc
new file mode 100644
index 0000000..4e8169a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/desc
@@ -0,0 +1,3 @@
+Testname: fsstnd-dir-in-manual-page
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/hints b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/hints
new file mode 100644
index 0000000..4835078
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/fsstnd-dir-in-manual-page/eval/hints
@@ -0,0 +1 @@
+fsstnd-dir-in-manual-page (binary): FSSTND-dir-in-manual-page /var/catman/ [usr/share/man/man1/mentions-other-standard.1P.gz:13]
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/control b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/install b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/rules b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/templates b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/fill-values b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/bin/bad-so b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/bin/bad-so
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/bin/bad-so
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/eval/desc b/t/recipes/checks/documentation/manual/legacy-binary/eval/desc
new file mode 100644
index 0000000..631d4ea
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/eval/hints b/t/recipes/checks/documentation/manual/legacy-binary/eval/hints
new file mode 100644
index 0000000..5e77703
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/eval/hints
@@ -0,0 +1,5 @@
+binary (binary): no-manual-page [usr/bin/static-hello]
+binary (binary): no-manual-page [usr/bin/iminusrbin]
+binary (binary): no-manual-page [usr/bin/hello]
+binary (binary): no-manual-page [usr/bin/hello.static]
+binary (binary): no-manual-page [usr/bin/hello-static]
diff --git a/t/recipes/checks/documentation/manual/legacy-binary/eval/post-test b/t/recipes/checks/documentation/manual/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/control b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/fill-values b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/eval/desc b/t/recipes/checks/documentation/manual/legacy-filenames/eval/desc
new file mode 100644
index 0000000..60db428
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/eval/hints b/t/recipes/checks/documentation/manual/legacy-filenames/eval/hints
new file mode 100644
index 0000000..00742ee
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/eval/hints
@@ -0,0 +1,5 @@
+more-filename-games (binary): no-manual-page [usr/games/yet-another-test-game]
+more-filename-games (binary): no-manual-page [usr/bin/another-test-game]
+filenames (binary): no-manual-page [usr/bin/mh/read]
+filenames (binary): no-manual-page [usr/bin/X11/testxbin]
+filename-games (binary): no-manual-page [usr/bin/test-game]
diff --git a/t/recipes/checks/documentation/manual/legacy-filenames/eval/post-test b/t/recipes/checks/documentation/manual/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/fill-values b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/pre-build b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/eval/desc b/t/recipes/checks/documentation/manual/legacy-scripts/eval/desc
new file mode 100644
index 0000000..e82184c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/eval/hints b/t/recipes/checks/documentation/manual/legacy-scripts/eval/hints
new file mode 100644
index 0000000..72af48c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/eval/hints
@@ -0,0 +1,16 @@
+scripts (binary): no-manual-page [usr/bin/wishfoo]
+scripts (binary): no-manual-page [usr/bin/tkfoo]
+scripts (binary): no-manual-page [usr/bin/test.sh]
+scripts (binary): no-manual-page [usr/bin/suidperlfoo]
+scripts (binary): no-manual-page [usr/bin/suidperlfoo2]
+scripts (binary): no-manual-page [usr/bin/sh-broken]
+scripts (binary): no-manual-page [usr/bin/rubyfoo]
+scripts (binary): no-manual-page [usr/bin/perlfoo]
+scripts (binary): no-manual-page [usr/bin/perl-bizarre-3]
+scripts (binary): no-manual-page [usr/bin/perl-bizarre-2]
+scripts (binary): no-manual-page [usr/bin/perl-bizarre-1]
+scripts (binary): no-manual-page [usr/bin/make-foo]
+scripts (binary): no-manual-page [usr/bin/lefty-foo]
+scripts (binary): no-manual-page [usr/bin/jruby-broken]
+scripts (binary): no-manual-page [usr/bin/guile-bizarre]
+scripts (binary): no-manual-page [usr/bin/envfoo]
diff --git a/t/recipes/checks/documentation/manual/legacy-scripts/eval/post-test b/t/recipes/checks/documentation/manual/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/debian/links b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/debian/links
new file mode 100644
index 0000000..8c5865f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/man/man3/undocumented.3.gz /usr/share/man/man3/function.3.gz
diff --git a/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/fill-values
new file mode 100644
index 0000000..52b8587
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: link-to-undocumented-manpage
+Description: Manual page is a link to the undocumented man page
diff --git a/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/desc b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/desc
new file mode 100644
index 0000000..db79e60
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/desc
@@ -0,0 +1,3 @@
+Testname: link-to-undocumented-manpage
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/hints b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/hints
new file mode 100644
index 0000000..d03536d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/link-to-undocumented-manpage/eval/hints
@@ -0,0 +1 @@
+link-to-undocumented-manpage (binary): undocumented-manual-page [usr/share/man/man3/function.3.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/manpages
new file mode 100644
index 0000000..fca1fb7
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/debian/manpages
@@ -0,0 +1 @@
+bad-whatis.1
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/fill-values
new file mode 100644
index 0000000..08c8b69
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-bad-whatis
+Skeleton: upload-native
+Description: Man page with bad whatis entry
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bad-whatis.1 b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bad-whatis.1
new file mode 100644
index 0000000..c024876
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bad-whatis.1
@@ -0,0 +1,3 @@
+.TH PROGRAM 1 "2013-07-22"
+.SH NAME
+bad-whatis
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bin/bad-whatis b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bin/bad-whatis
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/build-spec/orig/bin/bad-whatis
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/desc b/t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/desc
new file mode 100644
index 0000000..90de93e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-bad-whatis
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/hints b/t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/hints
new file mode 100644
index 0000000..ba8b084
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-bad-whatis/eval/hints
@@ -0,0 +1 @@
+manpage-bad-whatis (binary): bad-whatis-entry [usr/share/man/man1/bad-whatis.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/manpages
new file mode 100644
index 0000000..2a22ffc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/debian/manpages
@@ -0,0 +1 @@
+program.1
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/fill-values
new file mode 100644
index 0000000..06481d2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-dh-make-template
+Description: Manpage that is an unadapted dh_make template
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/bin/program b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/bin/program
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/bin/program
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/program.1 b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/program.1
new file mode 100644
index 0000000..3f06c04
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/build-spec/orig/program.1
@@ -0,0 +1,62 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH PROGRAM 1 "2007-06-18"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+program \- program to do something
+.SH SYNOPSIS
+.B program
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B program
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBprogram\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+This is not a spelling mistake.
+This is the false-positive spelling mistake for the proper noun German.
+This is the false-positive spelling mistake for the quasi-plural directory(S).
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+program was written by <upstream author>.
+.PP
+This manual page was written by #USERNAME# <#EMAIL#>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/desc b/t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/desc
new file mode 100644
index 0000000..e5af412
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-dh-make-template
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/hints b/t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/hints
new file mode 100644
index 0000000..de23424
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-dh-make-template/eval/hints
@@ -0,0 +1 @@
+manpage-dh-make-template (binary): manual-page-from-template [usr/share/man/man1/program.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/manpages
new file mode 100644
index 0000000..7b480d1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/debian/manpages
@@ -0,0 +1 @@
+empty-manpage.1
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/fill-values
new file mode 100644
index 0000000..5a7f44b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-empty
+Skeleton: upload-native
+Description: Detect empty man page
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/bin/empty-manpage b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/bin/empty-manpage
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/bin/empty-manpage
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/empty-manpage.1 b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/empty-manpage.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/build-spec/orig/empty-manpage.1
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/eval/desc b/t/recipes/checks/documentation/manual/manpage-empty/eval/desc
new file mode 100644
index 0000000..02cdb7d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: manpage-empty
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-empty/eval/hints b/t/recipes/checks/documentation/manual/manpage-empty/eval/hints
new file mode 100644
index 0000000..68bb74f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-empty/eval/hints
@@ -0,0 +1 @@
+manpage-empty (binary): empty-manual-page [usr/share/man/man1/empty-manpage.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/manpages
new file mode 100644
index 0000000..f2bdea2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/debian/manpages
@@ -0,0 +1 @@
+errors-from-man.1p
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/fill-values
new file mode 100644
index 0000000..8063cd1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-errors-from-man
+Description: Manual page that has errors from man
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/bin/errors-from-man b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/bin/errors-from-man
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/bin/errors-from-man
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/errors-from-man.1p b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/errors-from-man.1p
new file mode 100644
index 0000000..00ec282
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/build-spec/orig/errors-from-man.1p
@@ -0,0 +1,18 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux manual"
+.SH "NAME"
+\&\fBTEST\fR \- A test manpage with a .1P extension.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Use more up-level tools like human brains to understand lintian.
+Here's a bad undefined macro.
+Here's a serious syntax error.
+.SH "FILES"
+This program does not use any FSSTND location.
+.dep
+.PP
+.nh
+http://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man
+.\" Copied from caff(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/desc b/t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/desc
new file mode 100644
index 0000000..c642a03
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-errors-from-man
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/hints b/t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/hints
new file mode 100644
index 0000000..e7fb5e4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-man/eval/hints
@@ -0,0 +1 @@
+manpage-errors-from-man (binary): groff-message troff:<standard input>:14: warning: macro 'dep' not defined (possibly missing space after 'de') [usr/share/man/man1/errors-from-man.1P.gz:2]
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/manpages
new file mode 100644
index 0000000..4645ec2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/debian/manpages
@@ -0,0 +1 @@
+errors-from-pod2man.1p
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/fill-values
new file mode 100644
index 0000000..99bee2e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-errors-from-pod2man
+Description: Manual page that has errors from pod2man
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/bin/errors-from-pod2man b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/bin/errors-from-pod2man
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/bin/errors-from-pod2man
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/errors-from-pod2man.1p b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/errors-from-pod2man.1p
new file mode 100644
index 0000000..8f39a90
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/build-spec/orig/errors-from-pod2man.1p
@@ -0,0 +1,24 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux manual"
+.SH "NAME"
+\&\fBTEST\fR \- A test manpage with a .1P extension.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Use more up-level tools like human brains to understand lintian.
+Here's a bad undefined macro.
+Here's a serious syntax error.
+.SH "FILES"
+This program does not use any FSSTND location.
+
+.PP
+.nh
+http://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man
+.\" Copied from caff(1)
+.SH "POD ERRORS"
+.IX Header "POD ERRORS"
+Hey! \fBThe above document had some coding errors, which are explained below:\fR
+.IP "Around line 138:" 4
+.IX Item "Around line 138:"
+You forgot a '=back' before '=head2'
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/desc b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/desc
new file mode 100644
index 0000000..849a33d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-errors-from-pod2man
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/hints b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/hints
new file mode 100644
index 0000000..ff7f0ec
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-errors-from-pod2man/eval/hints
@@ -0,0 +1 @@
+manpage-errors-from-pod2man (binary): pod-conversion-message [usr/share/man/man1/errors-from-pod2man.1P.gz:19]
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/manpages
new file mode 100644
index 0000000..2198bc4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/debian/manpages
@@ -0,0 +1 @@
+README.1
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/fill-values
new file mode 100644
index 0000000..f89d594
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-generic-name
+Description: Manpage with an overly generic name
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/README.1 b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/README.1
new file mode 100644
index 0000000..d884f62
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/README.1
@@ -0,0 +1,3 @@
+.TH PROGRAM 1 "2013-07-22"
+.SH NAME
+README \- dummy manual page
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/bin/README b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/bin/README
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/build-spec/orig/bin/README
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/eval/desc b/t/recipes/checks/documentation/manual/manpage-generic-name/eval/desc
new file mode 100644
index 0000000..2824e7d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-generic-name
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-generic-name/eval/hints b/t/recipes/checks/documentation/manual/manpage-generic-name/eval/hints
new file mode 100644
index 0000000..184429d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-generic-name/eval/hints
@@ -0,0 +1 @@
+manpage-generic-name (binary): manual-page-with-generic-name [usr/share/man/man1/README.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/install
new file mode 100644
index 0000000..40faada
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/install
@@ -0,0 +1,2 @@
+test-utf8-chars.1p /usr/share/man/de_DE/man1
+bin/* usr/bin
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/fill-values
new file mode 100644
index 0000000..4d9843a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-locale-dir-country-specific
+Description: Manual page in a locale directory that includes the country name
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/bin/test-utf8-chars b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/bin/test-utf8-chars
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/bin/test-utf8-chars
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/man/test-utf8-chars.1p b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/man/test-utf8-chars.1p
new file mode 100644
index 0000000..2479d3e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/man/test-utf8-chars.1p
@@ -0,0 +1,9 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux Handbook"
+.SH "NAME"
+\&\fBTEST\fR \- A test manpage with .1P extension.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+This is a dummy manpage for a Lintian test.
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/test-utf8-chars.1p b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/test-utf8-chars.1p
new file mode 100644
index 0000000..1b409c7
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/build-spec/orig/test-utf8-chars.1p
@@ -0,0 +1,10 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux Handbuch"
+.SH "NAME"
+\&\fBTEST\fR \- Eine Test-Manpage mit .1P Erweiterung.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Diese Seite dient hauptsächlich dem Testen von latin1-Buchstaben, wie äöüß
+in Manpages.
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/desc b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/desc
new file mode 100644
index 0000000..b12dd47
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-locale-dir-country-specific
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/hints b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/hints
new file mode 100644
index 0000000..7048e4a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-locale-dir-country-specific/eval/hints
@@ -0,0 +1 @@
+manpage-locale-dir-country-specific (binary): country-in-manual [usr/share/man/de_DE/man1/test-utf8-chars.1p.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/manpages
new file mode 100644
index 0000000..6ea61ff
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/debian/manpages
@@ -0,0 +1 @@
+_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.1
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/fill-values
new file mode 100644
index 0000000..2d2f133
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-named-after-build-path
+Description: Manual page that is named after a build path
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.1 b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.1
new file mode 100644
index 0000000..ebb8b53
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.1
@@ -0,0 +1,11 @@
+.TH fixcr 1
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/bin/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/bin/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/build-spec/orig/bin/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/desc b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/desc
new file mode 100644
index 0000000..c040eb2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-named-after-build-path
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/hints b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/hints
new file mode 100644
index 0000000..2ea31c9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-named-after-build-path/eval/hints
@@ -0,0 +1 @@
+manpage-named-after-build-path (binary): build-path-in-manual [usr/share/man/man1/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/manpages
new file mode 100644
index 0000000..667475f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/manpages
@@ -0,0 +1 @@
+pretend-compress.1
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/rules b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/rules
new file mode 100755
index 0000000..cf58556
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_compress:
+ dh_compress --exclude=pretend-compress.1
+ mv $(tmp)/usr/share/man/man1/pretend-compress.1 $(tmp)/usr/share/man/man1/pretend-compress.1.gz
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/fill-values
new file mode 100644
index 0000000..a000b73
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-not-compressed-with-gzip
+Skeleton: upload-native
+Description: Man page compressed with algorithm other than gzip
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/bin/pretend-compress b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/bin/pretend-compress
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/bin/pretend-compress
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/pretend-compress.1 b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/pretend-compress.1
new file mode 100644
index 0000000..ebb8b53
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/build-spec/orig/pretend-compress.1
@@ -0,0 +1,11 @@
+.TH fixcr 1
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/desc b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/desc
new file mode 100644
index 0000000..f6630d0
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/desc
@@ -0,0 +1,2 @@
+Testname: manpage-not-compressed-with-gzip
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/hints b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/hints
new file mode 100644
index 0000000..8c59957
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed-with-gzip/eval/hints
@@ -0,0 +1 @@
+manpage-not-compressed-with-gzip (binary): wrong-compression-in-manual-page [usr/share/man/man1/pretend-compress.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/manpages
new file mode 100644
index 0000000..ed17bd3
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/manpages
@@ -0,0 +1 @@
+not-compressed.1
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/rules b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/rules
new file mode 100755
index 0000000..6573377
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_compress:
+ dh_compress --exclude=not-compressed.1
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/fill-values
new file mode 100644
index 0000000..d0c3f00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-not-compressed
+Skeleton: upload-native
+Description: Man page is not compressed
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/bin/not-compressed b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/bin/not-compressed
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/bin/not-compressed
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/not-compressed.1 b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/not-compressed.1
new file mode 100644
index 0000000..ebb8b53
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/build-spec/orig/not-compressed.1
@@ -0,0 +1,11 @@
+.TH fixcr 1
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/eval/desc b/t/recipes/checks/documentation/manual/manpage-not-compressed/eval/desc
new file mode 100644
index 0000000..8df7c1a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/eval/desc
@@ -0,0 +1,2 @@
+Testname: manpage-not-compressed
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-not-compressed/eval/hints b/t/recipes/checks/documentation/manual/manpage-not-compressed/eval/hints
new file mode 100644
index 0000000..8b43079
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-compressed/eval/hints
@@ -0,0 +1 @@
+manpage-not-compressed (binary): uncompressed-manual-page [usr/share/man/man1/not-compressed.1]
diff --git a/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/manpages
new file mode 100644
index 0000000..b7a9b4f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/manpages
@@ -0,0 +1 @@
+not-max-compress.6
diff --git a/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/rules b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/rules
new file mode 100755
index 0000000..99d294d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_compress:
+ dh_compress \
+ --exclude=not-max-compress.6
+
+ gzip -n -1 $(tmp)/usr/share/man/man6/not-max-compress.6
diff --git a/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/fill-values
new file mode 100644
index 0000000..967686d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-not-max-compression
+Skeleton: upload-native
+Description: Manpage not compressed with maximum gzip level
diff --git a/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/orig/not-max-compress.6 b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/orig/not-max-compress.6
new file mode 100644
index 0000000..2c32259
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-max-compression/build-spec/orig/not-max-compress.6
@@ -0,0 +1,11 @@
+.TH fixcr 6
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/desc b/t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/desc
new file mode 100644
index 0000000..2b10662
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-not-max-compression
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/hints b/t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/hints
new file mode 100644
index 0000000..d137ad4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-not-max-compression/eval/hints
@@ -0,0 +1 @@
+manpage-not-max-compression (binary): poor-compression-in-manual-page [usr/share/man/man6/not-max-compress.6.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/debian/manpages
new file mode 100644
index 0000000..1fa1ffd
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/debian/manpages
@@ -0,0 +1 @@
+python-traceback.5
diff --git a/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/fill-values
new file mode 100644
index 0000000..c762af5
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-python-traceback
+Description: Manual page has a Python traceback
diff --git a/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/orig/python-traceback.5 b/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/orig/python-traceback.5
new file mode 100644
index 0000000..f337caf
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-python-traceback/build-spec/orig/python-traceback.5
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1.
+.TH TRACEBACK "5" "February 2021" "Traceback (most recent call last):" "User Commands"
+.SH NAME
+Traceback \- DICOM converter for organizing brain imaging data into structured directory layouts
+.SH DESCRIPTION
+.SS "Traceback (most recent call last):"
+.IP
+File "/build/heudiconv\-19IoDl/heudiconv\-0.9.0/./debian/heudiconv/usr/bin/heudiconv", line 33, in <module>
+.IP
+sys.exit(load_entry_point('heudiconv==0.9.0', 'console_scripts', 'heudiconv')())
+.IP
+File "/build/heudiconv\-19IoDl/heudiconv\-0.9.0/./debian/heudiconv/usr/bin/heudiconv", line 22, in importlib_load_entry_point
+.IP
+for entry_point in distribution(dist_name).entry_points
+.IP
+File "/usr/lib/python3.9/importlib/metadata.py", line 524, in distribution
+.IP
+return Distribution.from_name(distribution_name)
+.IP
+File "/usr/lib/python3.9/importlib/metadata.py", line 187, in from_name
+.IP
+raise PackageNotFoundError(name)
+.PP
+importlib.metadata.PackageNotFoundError: heudiconv
+.IP
+File "/build/heudiconv\-19IoDl/heudiconv\-0.9.0/./debian/heudiconv/usr/bin/heudiconv", line 33, in <module>
+.IP
+sys.exit(load_entry_point('heudiconv==0.9.0', 'console_scripts', 'heudiconv')())
+.IP
+File "/build/heudiconv\-19IoDl/heudiconv\-0.9.0/./debian/heudiconv/usr/bin/heudiconv", line 22, in importlib_load_entry_point
+.IP
+for entry_point in distribution(dist_name).entry_points
+.IP
+File "/usr/lib/python3.9/importlib/metadata.py", line 524, in distribution
+.IP
+return Distribution.from_name(distribution_name)
+.IP
+File "/usr/lib/python3.9/importlib/metadata.py", line 187, in from_name
+.IP
+raise PackageNotFoundError(name)
+.PP
+importlib.metadata.PackageNotFoundError: heudiconv
diff --git a/t/recipes/checks/documentation/manual/manpage-python-traceback/eval/desc b/t/recipes/checks/documentation/manual/manpage-python-traceback/eval/desc
new file mode 100644
index 0000000..1b355b9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-python-traceback/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-python-traceback
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-python-traceback/eval/hints b/t/recipes/checks/documentation/manual/manpage-python-traceback/eval/hints
new file mode 100644
index 0000000..48dbebb
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-python-traceback/eval/hints
@@ -0,0 +1 @@
+manpage-python-traceback (binary): python-traceback-in-manpage [usr/share/man/man5/python-traceback.5.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/debian/install
new file mode 100644
index 0000000..30a1a5f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/debian/install
@@ -0,0 +1 @@
+section.3 /usr/share/man/man3/
diff --git a/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..58051f4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-section-mismatch
+Description: Manual page for which the file extension does not match the section
diff --git a/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/orig/section.3 b/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/orig/section.3
new file mode 100644
index 0000000..a72dfb9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-section-mismatch/build-spec/orig/section.3
@@ -0,0 +1,11 @@
+.TH fixcr 7
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/desc b/t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/desc
new file mode 100644
index 0000000..4f2b5bd
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-section-mismatch
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/hints b/t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/hints
new file mode 100644
index 0000000..7f0d9e1
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-section-mismatch/eval/hints
@@ -0,0 +1 @@
+manpage-section-mismatch (binary): wrong-manual-section 3 != 7 [usr/share/man/man3/section.3.gz:1]
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/manpages
new file mode 100644
index 0000000..2badb00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/debian/manpages
@@ -0,0 +1 @@
+useless-whatis.1
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/fill-values
new file mode 100644
index 0000000..80a02ff
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manpage-useless-whatis
+Skeleton: upload-native
+Description: Manpage with useless whatis entry
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/bin/useless-whatis b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/bin/useless-whatis
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/bin/useless-whatis
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/useless-whatis.1 b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/useless-whatis.1
new file mode 100644
index 0000000..bcb13cd
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/build-spec/orig/useless-whatis.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH TRUE "1" "July 2006" "true 5.96" "User Commands"
+.SH NAME
+true \- manual page for true 5.96
+.SH SYNOPSIS
+.B true
+[\fIignored command line arguments\fR]
+.br
+.B true
+\fIOPTION\fR
+.SH DESCRIPTION
+Exit with a status code indicating success.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of true, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2006 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B true
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B true
+programs are properly installed at your site, the command
+.IP
+.B info true
+.PP
+should give you access to the complete manual.
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/desc b/t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/desc
new file mode 100644
index 0000000..5ef3e38
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-useless-whatis
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/hints b/t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/hints
new file mode 100644
index 0000000..445db1f
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-useless-whatis/eval/hints
@@ -0,0 +1 @@
+manpage-useless-whatis (binary): useless-whatis-entry [usr/share/man/man1/useless-whatis.1.gz]
diff --git a/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/debian/install
new file mode 100644
index 0000000..eefd4b2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/debian/install
@@ -0,0 +1 @@
+example.man /usr/share/man/man1/
diff --git a/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/fill-values
new file mode 100644
index 0000000..d1a916c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpage-wrong-extension
+Description: Manual page that has an incorrect extension
diff --git a/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/orig/example.man b/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/orig/example.man
new file mode 100644
index 0000000..a5ff3cc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-wrong-extension/build-spec/orig/example.man
@@ -0,0 +1,11 @@
+.TH fixcr man
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/desc b/t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/desc
new file mode 100644
index 0000000..ad429e6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpage-wrong-extension
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/hints b/t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/hints
new file mode 100644
index 0000000..b7c2659
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpage-wrong-extension/eval/hints
@@ -0,0 +1 @@
+manpage-wrong-extension (binary): wrong-name-for-manual-page [usr/share/man/man1/example.man.gz]
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/control.in b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/control.in
new file mode 100644
index 0000000..41498d2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: pecho
+Architecture: all
+Depends: ${misc:Depends}, pecho-data
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: pecho-data
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Data package.
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho-data.manpages b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho-data.manpages
new file mode 100644
index 0000000..129103b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho-data.manpages
@@ -0,0 +1 @@
+pecho.1
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho.install b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho.install
new file mode 100644
index 0000000..93025b8
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/debian/pecho.install
@@ -0,0 +1 @@
+pecho usr/bin
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/fill-values
new file mode 100644
index 0000000..02174a9
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpages-dependencies
+Description: Test for manpages in dependencies
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/Makefile b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/Makefile
new file mode 100644
index 0000000..9b54f07
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+all: pecho.1
+
+pecho.1: pecho
+ pod2man --section 1 $< $@
+
+clean:
+ rm -f pecho.1
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/pecho b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/pecho
new file mode 100644
index 0000000..d982088
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/build-spec/orig/pecho
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print join(' ', @ARGV), "\n";
+
+=head1 NAME
+
+pecho - POSIX compliant Perl implementation of echo
+
+=head1 SYNOPSIS
+
+pecho [args ...]
+
+=head1 DESCRIPTION
+
+Prints arguments to stdout.
+
+=head1 AUTHORS
+
+Niels Thykier <niels@thykier.net>
+
+=cut
+
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/eval/desc b/t/recipes/checks/documentation/manual/manpages-dependencies/eval/desc
new file mode 100644
index 0000000..46ebdad
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpages-dependencies
+Test-Against: no-manual-page
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpages-dependencies/eval/hints b/t/recipes/checks/documentation/manual/manpages-dependencies/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-dependencies/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/install
new file mode 100644
index 0000000..b9b899b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/install
@@ -0,0 +1,7 @@
+bin/* /usr/bin
+sbin/* /usr/sbin
+bin-x/* /usr/X11R6/bin
+man-x/* /usr/X11R6/man/man1
+man-de/* /usr/share/man/de/man1
+man/test-latin1-chars.1p /usr/share/man/de/man1
+man/test-utf8-chars.1p /usr/share/man/de_DE/man1
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/links b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/links
new file mode 100644
index 0000000..a0fa20a
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/links
@@ -0,0 +1,12 @@
+usr/X11R6/bin/rstartd /usr/bin/rstartd
+usr/share/man/man7/undocumented.7.gz /usr/share/man/man1/bin-binary.1.gz
+usr/share/man/man3/undocumented.3.gz /usr/share/man/man3/function.3.gz
+usr/bin/usr-bin-binary usr/bin/sbin-binary
+usr/bin/usr-bin-binary usr/bin/test
+usr/bin/usr-bin-binary usr/bin/true
+usr/bin/usr-bin-binary usr/bin/program
+usr/bin/usr-bin-binary usr/bin/bin-binary
+usr/bin/usr-bin-binary usr/bin/bad-so
+usr/bin/usr-bin-binary usr/bin/README
+usr/bin/usr-bin-binary usr/bin/test-utf8-chars
+usr/bin/usr-bin-binary usr/bin/test-latin1-chars
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/rules b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/rules
new file mode 100755
index 0000000..648f144
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/debian/rules
@@ -0,0 +1,37 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_installman:
+ dh_installman
+
+ install -d $(tmp)/usr/share/man/man1 \
+ $(tmp)/usr/share/man/man6
+
+ touch $(tmp)/usr/share/man/man1/usr-sbin-binary.1.gz
+
+ pod2man --section 6 pod/simple.pod > \
+ $(tmp)/usr/share/man/man6/simple.pod
+
+ pod2man --section 6 pod/simple.pod > \
+ $(tmp)/usr/share/man/man6/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.6
+
+override_dh_link:
+ dh_link
+
+ ln -s undocumented.7.gz $(tmp)/usr/share/man/man1/sbin-binary.1.gz
+
+ cd $(tmp)/usr/share/man/man1 \
+ && ln usr-sbin-binary.1.gz usr-bin-binary-alt.1.gz
+
+override_dh_compress:
+ dh_compress \
+ --exclude=usr-bin-binary.1 \
+ --exclude=binary-without-english-manpage.1 \
+ --exclude=usr-games-binary.6 \
+ --exclude=usr-sbin-binary.1.gz
+
+ gzip -n -1 $(tmp)/usr/share/man/man6/usr-games-binary.6
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpages-general/build-spec/fill-values
new file mode 100644
index 0000000..156ec44
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpages-general
+Description: General tests for manpage checks
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin-x/rstartd b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin-x/rstartd
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin-x/rstartd
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/binary-without-english-manpage b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/binary-without-english-manpage
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/binary-without-english-manpage
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary-alt b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary-alt
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/bin/usr-bin-binary-alt
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-de/binary-without-english-manpage.1 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-de/binary-without-english-manpage.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-de/binary-without-english-manpage.1
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-x/rstartd.1x b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-x/rstartd.1x
new file mode 100644
index 0000000..8d8da5d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man-x/rstartd.1x
@@ -0,0 +1,62 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH PROGRAM 1 "2007-06-18"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+program \- program to do something
+.SH SYNOPSIS
+.B program
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B program
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBprogram\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+This is a speling mistake.
+This is the false-positive spelling mistake for the proper noun German.
+This is the false-positive spelling mistake for the quasi-plural directory(S).
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+program was written by <upstream author>.
+.PP
+This manual page was written by #USERNAME# <#EMAIL#>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/README.1 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/README.1
new file mode 100644
index 0000000..d884f62
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/README.1
@@ -0,0 +1,3 @@
+.TH PROGRAM 1 "2013-07-22"
+.SH NAME
+README \- dummy manual page
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/bad-so.1 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/bad-so.1
new file mode 100644
index 0000000..8e50cfc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/bad-so.1
@@ -0,0 +1 @@
+.so ../somewhere/invalid/manpage.1
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/include.3 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/include.3
new file mode 100644
index 0000000..9cc411e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/include.3
@@ -0,0 +1,30 @@
+.TH INCLUDE 3
+.SH NAME
+include \- include another chunk of a man page
+.SH INCLUDED BIT
+.nr zY 1
+.so man3/included.3
+.SH HYPHENS
+This isn't a hyphen\*(--just a long dash\*(--and \h'-1' also isn't, nor
+should we warn about `\-' or \-a, but -a
+and `-' (nope, that's fine) are bad news. So is
+--foo and
+(--bar)
+"--baz"
+and '--foo'.
+So is \f[C]--foo\f[P].
+.\" Draft Mode example from sinfo man page from slurm-llnl. Draft mode
+.\" disables the normal operation of the backslash character, so we can't
+.\" tell users to use \- inside draft mode. These hyphens should
+.\" therefore not warn.
+.eo
+.nf
+> sinfo
+PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
+batch up infinite 2 alloc adev[8-9]
+batch up infinite 6 idle adev[10-15]
+debug* up 30:00 8 idle adev[0-7]
+.fi
+.ec
+.SH SEE ALSO
+included(3)
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/included.3 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/included.3
new file mode 100644
index 0000000..c0379db
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/included.3
@@ -0,0 +1,10 @@
+.if \n(zY=1 .ig zY
+.TH INCLUDED 3
+.SH NAME
+included \- both a man page and a dessert topping
+.SH INCLUDED BIT
+.zY
+This stuff ends up in both man pages. Isn't it neat?
+.if \n(zY=1 .ig zY
+.SH SEE ALSO
+include(3)
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/program.1 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/program.1
new file mode 100644
index 0000000..8d8da5d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/program.1
@@ -0,0 +1,62 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH PROGRAM 1 "2007-06-18"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+program \- program to do something
+.SH SYNOPSIS
+.B program
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B program
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBprogram\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+This is a speling mistake.
+This is the false-positive spelling mistake for the proper noun German.
+This is the false-positive spelling mistake for the quasi-plural directory(S).
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+program was written by <upstream author>.
+.PP
+This manual page was written by #USERNAME# <#EMAIL#>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-latin1-chars.1p b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-latin1-chars.1p
new file mode 100644
index 0000000..8891e8c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-latin1-chars.1p
@@ -0,0 +1,10 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux Handbuch"
+.SH "NAME"
+\&\fBTEST\fR \- Eine Test-Manpage mit .1P Erweiterung.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Diese Seite dient hauptsächlich dem Testen von latin1-Buchstaben, wie äöüß
+in Manpages.
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-utf8-chars.1p b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-utf8-chars.1p
new file mode 100644
index 0000000..1b409c7
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test-utf8-chars.1p
@@ -0,0 +1,10 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux Handbuch"
+.SH "NAME"
+\&\fBTEST\fR \- Eine Test-Manpage mit .1P Erweiterung.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Diese Seite dient hauptsächlich dem Testen von latin1-Buchstaben, wie äöüß
+in Manpages.
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.1p b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.1p
new file mode 100644
index 0000000..3e02c04
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.1p
@@ -0,0 +1,24 @@
+.IX Title "TEST 1"
+.TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux manual"
+.SH "NAME"
+\&\fBTEST\fR \- A test manpage with a .1P extension.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBTEST\fR tests lintian.
+.PP
+Use more up-level tools like human brains to understand lintian.
+Here's a bad undefined macro.
+Here's a serious syntax error.
+.SH "FILES"
+This program does not use /var/catman/do or any other FSSTND location.
+.dep
+.PP
+.nh
+http://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man
+.\" Copied from caff(1)
+.SH "POD ERRORS"
+.IX Header "POD ERRORS"
+Hey! \fBThe above document had some coding errors, which are explained below:\fR
+.IP "Around line 138:" 4
+.IX Item "Around line 138:"
+You forgot a '=back' before '=head2'
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.3p b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.3p
new file mode 100644
index 0000000..c8a8680
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/test.3p
@@ -0,0 +1,16 @@
+.IX Title "TEST 3"
+.TH TEST 3P "2009-08-26" "Debian Project" "Debian GNU/Linux manual"
+.SH "NAME"
+\&\fBTEST\fR \- A test manpage with a .3P extension.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+.PP
+Use more up-level tools like human brains to understand lintian.
+.PP
+.nh
+https://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man
+.\" URL extension, copied from wmweather+. Should not be tagged as too
+.\" long of a line.
+.UR http://weather.noaa.gov/pub/data/observations/metar/stations/
+http://weather.noaa.gov/pub/data/observations/metar/stations/
+.UE
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/true.1 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/true.1
new file mode 100644
index 0000000..bcb13cd
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/true.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH TRUE "1" "July 2006" "true 5.96" "User Commands"
+.SH NAME
+true \- manual page for true 5.96
+.SH SYNOPSIS
+.B true
+[\fIignored command line arguments\fR]
+.br
+.B true
+\fIOPTION\fR
+.SH DESCRIPTION
+Exit with a status code indicating success.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of true, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2006 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B true
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B true
+programs are properly installed at your site, the command
+.IP
+.B info true
+.PP
+should give you access to the complete manual.
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-bin-binary.1 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-bin-binary.1
new file mode 100644
index 0000000..dc553f4
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-bin-binary.1
@@ -0,0 +1,3 @@
+.TH PROGRAM 1 "2013-07-22"
+.SH NAME
+usr-bin-binary
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-games-binary.6 b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-games-binary.6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/man/usr-games-binary.6
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/pod/simple.pod b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/pod/simple.pod
new file mode 100644
index 0000000..822815b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/pod/simple.pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+simple - some interesting manpage
+
+=head1 SYNOPSIS
+
+Explains something interesting
+
+=head1 DESCRIPTION
+
+A very long description of something very interesting. Really!
+
+=head1 AUTHORS
+
+Niels Thykier <niels@thykier.net>
+
+=cut
+
diff --git a/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/sbin/usr-sbin-binary b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/sbin/usr-sbin-binary
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/build-spec/orig/sbin/usr-sbin-binary
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/manpages-general/eval/desc b/t/recipes/checks/documentation/manual/manpages-general/eval/desc
new file mode 100644
index 0000000..64846c0
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: manpages-general
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpages-general/eval/hints b/t/recipes/checks/documentation/manual/manpages-general/eval/hints
new file mode 100644
index 0000000..7aa0713
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/eval/hints
@@ -0,0 +1,32 @@
+manpages-general (binary): wrong-name-for-manual-page [usr/share/man/man6/simple.pod.gz]
+manpages-general (binary): wrong-manual-section pod != 6 [usr/share/man/man6/simple.pod.gz:LINE]
+manpages-general (binary): wrong-compression-in-manual-page [usr/share/man/man1/usr-sbin-binary.1.gz]
+manpages-general (binary): wrong-compression-in-manual-page [usr/share/man/man1/usr-bin-binary-alt.1.gz]
+manpages-general (binary): useless-whatis-entry [usr/share/man/man1/true.1.gz]
+manpages-general (binary): undocumented-manual-page [usr/share/man/man3/function.3.gz]
+manpages-general (binary): undocumented-manual-page [usr/share/man/man1/bin-binary.1.gz]
+manpages-general (binary): uncompressed-manual-page [usr/share/man/man1/usr-bin-binary.1]
+manpages-general (binary): uncompressed-manual-page [usr/share/man/de/man1/binary-without-english-manpage.1]
+manpages-general (binary): typo-in-manual-page speling spelling [usr/share/man/man1/program.1.gz:42]
+manpages-general (binary): poor-compression-in-manual-page [usr/share/man/man6/usr-games-binary.6.gz]
+manpages-general (binary): pod-conversion-message [usr/share/man/man1/test.1P.gz:19]
+manpages-general (binary): no-manual-page [usr/bin/rstartd]
+manpages-general (binary): no-english-manual-page [usr/bin/binary-without-english-manpage]
+manpages-general (binary): manual-page-with-generic-name [usr/share/man/man1/README.1.gz]
+manpages-general (binary): manual-page-from-template [usr/share/man/man1/program.1.gz]
+manpages-general (binary): manual-page-for-system-command [usr/sbin/usr-sbin-binary]
+manpages-general (binary): groff-message troff:man3/included.3:8: error: end of file while ignoring input lines [usr/share/man/man3/include.3.gz:3]
+manpages-general (binary): groff-message troff:man3/included.3:6: warning: macro 'zY' not defined [usr/share/man/man3/include.3.gz:1]
+manpages-general (binary): groff-message troff:man3/included.3:13: warning: macro '--' not defined [usr/share/man/man3/include.3.gz:2]
+manpages-general (binary): groff-message troff:<standard input>:6: warning: macro 'zY' not defined [usr/share/man/man3/included.3.gz:1]
+manpages-general (binary): groff-message troff:<standard input>:14: warning: macro 'dep' not defined (possibly missing space after 'de') [usr/share/man/man1/test.1P.gz:2]
+manpages-general (binary): empty-manual-page [usr/share/man/man6/usr-games-binary.6.gz]
+manpages-general (binary): empty-manual-page [usr/share/man/man1/usr-sbin-binary.1.gz]
+manpages-general (binary): empty-manual-page [usr/share/man/man1/usr-bin-binary-alt.1.gz]
+manpages-general (binary): empty-manual-page [usr/share/man/de/man1/binary-without-english-manpage.1]
+manpages-general (binary): country-in-manual [usr/share/man/de_DE/man1/test-utf8-chars.1p.gz]
+manpages-general (binary): build-path-in-manual [usr/share/man/man6/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.6.gz]
+manpages-general (binary): broken-link-to-undocumented [usr/share/man/man1/sbin-binary.1.gz]
+manpages-general (binary): bad-whatis-entry [usr/share/man/man1/usr-bin-binary.1]
+manpages-general (binary): bad-so-link-within-manual-page [usr/share/man/man1/bad-so.1.gz]
+manpages-general (binary): FSSTND-dir-in-manual-page /var/catman/ [usr/share/man/man1/test.1P.gz:13]
diff --git a/t/recipes/checks/documentation/manual/manpages-general/eval/post-test b/t/recipes/checks/documentation/manual/manpages-general/eval/post-test
new file mode 100644
index 0000000..982bf36
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-general/eval/post-test
@@ -0,0 +1,3 @@
+# pod2man from perl 5.14 and 5.18 add different amounts of "groff
+# boilerplate", so the line number differs.
+s/simple\.pod\.gz:[0-9][0-9]*/simple.pod.gz:LINE/
diff --git a/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/debian/install b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/debian/install
new file mode 100644
index 0000000..ad89b63
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/debian/install
@@ -0,0 +1,2 @@
+zecho.1.gz usr/share/man
+zecho.1.gz usr/share/man/man-lintian
diff --git a/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/fill-values b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/fill-values
new file mode 100644
index 0000000..35e0a12
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: manpages-wrong-dir
+Description: Test for manpages in wrong dirs
diff --git a/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/Makefile b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/Makefile
new file mode 100644
index 0000000..cff6c32
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/Makefile
@@ -0,0 +1,14 @@
+all: pecho.1.gz zecho.1.gz
+
+%.gz: %
+ gzip --best $<
+
+%.1: %
+ pod2man --section 1 $< > $@
+
+zecho: pecho
+ sed s/$</$@/g $< > $@
+ chmod 0755 $@
+
+clean:
+ rm -f pecho.1.gz zecho*
diff --git a/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/pecho b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/pecho
new file mode 100644
index 0000000..d982088
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-wrong-dir/build-spec/orig/pecho
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print join(' ', @ARGV), "\n";
+
+=head1 NAME
+
+pecho - POSIX compliant Perl implementation of echo
+
+=head1 SYNOPSIS
+
+pecho [args ...]
+
+=head1 DESCRIPTION
+
+Prints arguments to stdout.
+
+=head1 AUTHORS
+
+Niels Thykier <niels@thykier.net>
+
+=cut
+
diff --git a/t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/desc b/t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/desc
new file mode 100644
index 0000000..0ca852b
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/desc
@@ -0,0 +1,2 @@
+Testname: manpages-wrong-dir
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/hints b/t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/hints
new file mode 100644
index 0000000..869084d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/manpages-wrong-dir/eval/hints
@@ -0,0 +1,2 @@
+manpages-wrong-dir (binary): odd-place-for-manual-page [usr/share/man/zecho.1.gz]
+manpages-wrong-dir (binary): odd-place-for-manual-page [usr/share/man/man-lintian/zecho.1.gz]
diff --git a/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/debian/control.in b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/debian/control.in
new file mode 100644
index 0000000..d2ec26d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ocaml-nox-3.10.2, ${shlib:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/fill-values b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/fill-values
new file mode 100644
index 0000000..5e05c96
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-ocamlrun
+Description: Test correct handling of ocamlrun scripts
diff --git a/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/Makefile b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/Makefile
new file mode 100644
index 0000000..54fa3ef
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/Makefile
@@ -0,0 +1,8 @@
+default:
+ :
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -m755 script1 $(DESTDIR)/usr/bin/
+
+.PHONY: distclean realclean clean install test check
diff --git a/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/script1 b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/script1
new file mode 100644
index 0000000..49c50f2
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/scripts-ocamlrun/build-spec/orig/script1
@@ -0,0 +1 @@
+#!/usr/bin/ocamlrun
diff --git a/t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/desc b/t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/desc
new file mode 100644
index 0000000..c905c12
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/desc
@@ -0,0 +1,3 @@
+Testname: scripts-ocamlrun
+See-Also: Debian Bug#495431
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/hints b/t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/hints
new file mode 100644
index 0000000..1e26850
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/scripts-ocamlrun/eval/hints
@@ -0,0 +1 @@
+scripts-ocamlrun (binary): no-manual-page [usr/bin/script1]
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/install
new file mode 100644
index 0000000..0fba49e
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* usr/bin/
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/manpages
new file mode 100644
index 0000000..9a545cc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/debian/manpages
@@ -0,0 +1 @@
+bad-spelling.1
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/fill-values
new file mode 100644
index 0000000..c0ab786
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: spelling-error-in-manpage
+Description: Manpage with spelling error
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bad-spelling.1 b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bad-spelling.1
new file mode 100644
index 0000000..98154fc
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bad-spelling.1
@@ -0,0 +1,16 @@
+.TH fixcr 1
+.SH NAME
+fixcr \- make sure that there is a CR before each LF
+.SH SYNOPSIS
+.B fixcr
+.SH DESCRIPTION
+.B fixcr
+inserts CR at the end of each line of input where a CR is not already present.
+It does not insert CR at the end of a partial final line.
+
+This is a speling mistake.
+This is the false-positive spelling mistake for the proper noun German.
+This is the false-positive spelling mistake for the quasi-plural directory(S).
+
+.SH "SEE ALSO"
+addcr(1)
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bin/bad-spelling b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bin/bad-spelling
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/build-spec/orig/bin/bad-spelling
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/desc b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/desc
new file mode 100644
index 0000000..3e0a42c
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/desc
@@ -0,0 +1,3 @@
+Testname: spelling-error-in-manpage
+Test-Depends: groff-base (>= 1.22.4)
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/hints b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/hints
new file mode 100644
index 0000000..76a2084
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/spelling-error-in-manpage/eval/hints
@@ -0,0 +1 @@
+spelling-error-in-manpage (binary): typo-in-manual-page speling spelling [usr/share/man/man1/bad-spelling.1.gz:11]
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/install b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/install
new file mode 100644
index 0000000..ab00658
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/install
@@ -0,0 +1,3 @@
+bin/* usr/bin/
+libexec/* usr/libexec/
+sbin/* usr/sbin/
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/manpages b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/fill-values b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/fill-values
new file mode 100644
index 0000000..b9a50a8
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: surplus-manpage
+Description: Manual page without executable
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/bin/pwd b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/bin/pwd
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/bin/pwd
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/libexec/private-executable b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/libexec/private-executable
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/libexec/private-executable
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/addpart.8 b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/addpart.8
new file mode 100644
index 0000000..97d11ad
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/addpart.8
@@ -0,0 +1,40 @@
+.\" addpart.8 -- man page for addpart
+.\" Copyright 2007 Karel Zak <kzak@redhat.com>
+.\" Copyright 2007 Red Hat, Inc.
+.\" May be distributed under the GNU General Public License
+.TH ADDPART 8 "January 2015" "util-linux" "System Administration"
+.SH NAME
+addpart \- tell the kernel about the existence of a partition
+.SH SYNOPSIS
+.B addpart
+.I device partition start length
+.SH DESCRIPTION
+.B addpart
+tells the Linux kernel about the existence of the specified partition.
+The command is a simple wrapper around the "add partition" ioctl.
+
+This command doesn't manipulate partitions on a block device.
+
+.SH PARAMETERS
+.TP
+.I device
+The disk device.
+.TP
+.I partition
+The partition number.
+.TP
+.I start
+The beginning of the partition (in 512-byte sectors).
+.TP
+.I length
+The length of the partition (in 512-byte sectors).
+
+.SH SEE ALSO
+.BR delpart (8),
+.BR fdisk (8),
+.BR parted (8),
+.BR partprobe (8),
+.BR partx (8)
+.SH AVAILABILITY
+The addpart command is part of the util-linux package and is available from
+https://www.kernel.org/pub/linux/utils/util-linux/.
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/lsmod.8 b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/lsmod.8
new file mode 100644
index 0000000..e323bd6
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/lsmod.8
@@ -0,0 +1,59 @@
+'\" t
+.\" Title: lsmod
+.\" Author: Jon Masters <jcm@jonmasters.org>
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 02/09/2019
+.\" Manual: lsmod
+.\" Source: kmod
+.\" Language: English
+.\"
+.TH "LSMOD" "8" "02/09/2019" "kmod" "lsmod"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+lsmod \- Show the status of modules in the Linux Kernel
+.SH "SYNOPSIS"
+.HP \w'\fBlsmod\fR\ 'u
+\fBlsmod\fR
+.SH "DESCRIPTION"
+.PP
+\fBlsmod\fR
+is a trivial program which nicely formats the contents of the
+/proc/modules, showing what kernel modules are currently loaded\&.
+.SH "COPYRIGHT"
+.PP
+This manual page originally Copyright 2002, Rusty Russell, IBM Corporation\&. Maintained by Jon Masters and others\&.
+.SH "SEE ALSO"
+.PP
+\fBinsmod\fR(8),
+\fBmodprobe\fR(8),
+\fBmodinfo\fR(8)
+\fBdepmod\fR(8)
+.SH "AUTHORS"
+.PP
+\fBJon Masters\fR <\&jcm@jonmasters\&.org\&>
+.RS 4
+Developer
+.RE
+.PP
+\fBLucas De Marchi\fR <\&lucas\&.de\&.marchi@gmail\&.com\&>
+.RS 4
+Developer
+.RE
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/private-executable.8 b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/private-executable.8
new file mode 100644
index 0000000..3045c50
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/private-executable.8
@@ -0,0 +1,10 @@
+.\" Based on addpart.8 -- man page for addpart
+.\" Copyright 2007 Karel Zak <kzak@redhat.com>
+.\" Copyright 2007 Red Hat, Inc.
+.\" May be distributed under the GNU General Public License
+.TH PRIVATE-EXECUTABLE 8 "January 2015" "util-linux" "System Administration"
+.SH NAME
+private-executable \- part of the Lintian test suite
+.SH DESCRIPTION
+.B private-executable
+is used internally and should not be invoked directly.
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/pwd.1 b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/pwd.1
new file mode 100644
index 0000000..8312339
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/pwd.1
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
+.TH PWD "1" "February 2019" "GNU coreutils 8.30" "User Commands"
+.SH NAME
+pwd \- print name of current/working directory
+.SH SYNOPSIS
+.B pwd
+[\fI\,OPTION\/\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the full filename of the current working directory.
+.TP
+\fB\-L\fR, \fB\-\-logical\fR
+use PWD from environment, even if it contains symlinks
+.TP
+\fB\-P\fR, \fB\-\-physical\fR
+avoid all symlinks
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If no option is specified, \fB\-P\fR is assumed.
+.PP
+NOTE: your shell may have its own version of pwd, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
+.br
+Report pwd translation bugs to <https://translationproject.org/team/>
+.SH COPYRIGHT
+Copyright \(co 2018 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
+.br
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+getcwd(3)
+.PP
+.br
+Full documentation at: <https://www.gnu.org/software/coreutils/pwd>
+.br
+or available locally via: info \(aq(coreutils) pwd invocation\(aq
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/statfs.1 b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/statfs.1
new file mode 100644
index 0000000..cbf3d0d
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/man/statfs.1
@@ -0,0 +1,28 @@
+.\" Automatically generated by Pandoc 2.5
+.\"
+.TH "STATFS" "1" "Sep 2019" "" ""
+.hy
+.SH NAME
+.PP
+statfs \- dump the statfs information for PATH to console in JSON format
+.SH SYNOPSIS
+.SS Examine encrypted file/directory
+.PP
+statfs PATH
+.SH DESCRIPTION
+.PP
+There are no options to this command.
+.SH EXAMPLES
+.PP
+Examine a directory entry:
+.IP
+.nf
+\f[R]
+statfs myfs/mCXnISiv7nEmyc0glGuhTQ
+\f[R]
+.fi
+.SH SEE ALSO
+.PP
+gocryptfs(1) gocryptfs\-xray(1)
+.SH AUTHORS
+github.com/rfjakob.
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/sbin/addpart b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/sbin/addpart
new file mode 100755
index 0000000..296ef78
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/build-spec/orig/sbin/addpart
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+true
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/eval/desc b/t/recipes/checks/documentation/manual/surplus-manpage/eval/desc
new file mode 100644
index 0000000..ae69245
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/eval/desc
@@ -0,0 +1,2 @@
+Testname: surplus-manpage
+Check: documentation/manual
diff --git a/t/recipes/checks/documentation/manual/surplus-manpage/eval/hints b/t/recipes/checks/documentation/manual/surplus-manpage/eval/hints
new file mode 100644
index 0000000..3608237
--- /dev/null
+++ b/t/recipes/checks/documentation/manual/surplus-manpage/eval/hints
@@ -0,0 +1,2 @@
+surplus-manpage (binary): spare-manual-page [usr/share/man/man8/lsmod.8.gz]
+surplus-manpage (binary): spare-manual-page [usr/share/man/man1/statfs.1.gz]
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/debian/rules b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/debian/rules
new file mode 100755
index 0000000..6b18e3f
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/debian/rules
@@ -0,0 +1,27 @@
+#!/usr/bin/make -f
+
+tmp = $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ install -d $(tmp)/usr/share/info
+ install -m 644 foo.info $(tmp)/usr/share/info/foo.info
+ gzip -n -9 $(tmp)/usr/share/info/foo.info
+ install -m 644 foo.info $(tmp)/usr/share/info/foo
+ install -m 644 foo.info $(tmp)/usr/share/info/foo-nogz.gz
+ install -m 644 foo.info $(tmp)/usr/share/info/foo-nomax
+ gzip -n -1 $(tmp)/usr/share/info/foo-nomax
+ install -m 644 bar.info $(tmp)/usr/share/info/bar.info
+ gzip -n -9 $(tmp)/usr/share/info/bar.info
+ install -m 644 bar.info $(tmp)/usr/share/info/bar.newinfo
+ gzip -n -9 $(tmp)/usr/share/info/bar.newinfo
+
+ install -m 644 w-image.info $(tmp)/usr/share/info/w-image.info
+ gzip -n -9 $(tmp)/usr/share/info/w-image.info
+
+override_dh_installinfo:
+
+override_dh_compress:
+ gzip -n -9 $(tmp)/usr/share/doc/infofiles-general/changelog
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/fill-values b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/fill-values
new file mode 100644
index 0000000..992f967
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: infofiles-general
+Description: Checks of info files
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/bar.info b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/bar.info
new file mode 100644
index 0000000..ed0919c
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/bar.info
@@ -0,0 +1,2 @@
+This is bar.info, produced by hand from thin air, without the required
+directory bits.
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/foo.info b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/foo.info
new file mode 100644
index 0000000..165c919
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/foo.info
@@ -0,0 +1,6 @@
+This is foo.info, produced by hand from thin air.
+
+INFO-DIR-SECTION Lintian
+START-INFO-DIR-ENTRY
+* foo: (foo). A miracle occurs.
+END-INFO-DIR-ENTRY
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/w-image.info b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/w-image.info
new file mode 100644
index 0000000..6d610a5
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/build-spec/orig/w-image.info
Binary files differ
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/eval/desc b/t/recipes/checks/documentation/texinfo/infofiles-general/eval/desc
new file mode 100644
index 0000000..8bf8d8f
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: infofiles-general
+See-Also: Bug#534640
+Check: documentation/texinfo
diff --git a/t/recipes/checks/documentation/texinfo/infofiles-general/eval/hints b/t/recipes/checks/documentation/texinfo/infofiles-general/eval/hints
new file mode 100644
index 0000000..fd71d06
--- /dev/null
+++ b/t/recipes/checks/documentation/texinfo/infofiles-general/eval/hints
@@ -0,0 +1,9 @@
+infofiles-general (binary): info-document-not-compressed-with-max-compression [usr/share/info/foo-nomax.gz]
+infofiles-general (binary): info-document-not-compressed-with-gzip [usr/share/info/foo-nogz.gz]
+infofiles-general (binary): info-document-not-compressed [usr/share/info/foo]
+infofiles-general (binary): info-document-missing-image-file some-image.png [usr/share/info/w-image.info.gz:7]
+infofiles-general (binary): info-document-missing-dir-section [usr/share/info/bar.newinfo.gz]
+infofiles-general (binary): info-document-missing-dir-section [usr/share/info/bar.info.gz]
+infofiles-general (binary): info-document-missing-dir-entry [usr/share/info/bar.newinfo.gz]
+infofiles-general (binary): info-document-missing-dir-entry [usr/share/info/bar.info.gz]
+infofiles-general (binary): info-document-has-wrong-extension [usr/share/info/bar.newinfo.gz]
diff --git a/t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/control.in b/t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/control.in
new file mode 100644
index 0000000..9c969e7
--- /dev/null
+++ b/t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+XC-Package-Type: udeb
+
+Package: [% $source %]
+Package-Type: udeb
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/install b/t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/install
new file mode 100644
index 0000000..3485be8
--- /dev/null
+++ b/t/recipes/checks/documentation/udeb-with-doc/build-spec/debian/install
@@ -0,0 +1 @@
+some-doc /usr/share/doc/
diff --git a/t/recipes/checks/documentation/udeb-with-doc/build-spec/fill-values b/t/recipes/checks/documentation/udeb-with-doc/build-spec/fill-values
new file mode 100644
index 0000000..0305856
--- /dev/null
+++ b/t/recipes/checks/documentation/udeb-with-doc/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: udeb-with-doc
+Skeleton: upload-native
+Section: debian-installer
+Description: Test for files called "-"
diff --git a/t/recipes/checks/documentation/udeb-with-doc/build-spec/orig/some-doc b/t/recipes/checks/documentation/udeb-with-doc/build-spec/orig/some-doc
new file mode 100644
index 0000000..30c993f
--- /dev/null
+++ b/t/recipes/checks/documentation/udeb-with-doc/build-spec/orig/some-doc
@@ -0,0 +1 @@
+EMPTY FILE
diff --git a/t/recipes/checks/documentation/udeb-with-doc/eval/desc b/t/recipes/checks/documentation/udeb-with-doc/eval/desc
new file mode 100644
index 0000000..c53df9e
--- /dev/null
+++ b/t/recipes/checks/documentation/udeb-with-doc/eval/desc
@@ -0,0 +1,2 @@
+Testname: udeb-with-doc
+Check: documentation
diff --git a/t/recipes/checks/documentation/udeb-with-doc/eval/hints b/t/recipes/checks/documentation/udeb-with-doc/eval/hints
new file mode 100644
index 0000000..75da327
--- /dev/null
+++ b/t/recipes/checks/documentation/udeb-with-doc/eval/hints
@@ -0,0 +1 @@
+udeb-with-doc (udeb): udeb-contains-documentation-file [usr/share/doc/some-doc]
diff --git a/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/fill-values b/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/fill-values
new file mode 100644
index 0000000..1197f5c
--- /dev/null
+++ b/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: unpack-numerical-owner
+Description: Test for tarballs with numerical owner only
diff --git a/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-control b/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-control
new file mode 100755
index 0000000..19b6369
--- /dev/null
+++ b/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+controlmembers="$2"
+
+tar --create --file members/control.tar.gz --gzip --numeric-owner --directory "$debiandir" $controlmembers
diff --git a/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-data b/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-data
new file mode 100755
index 0000000..5659822
--- /dev/null
+++ b/t/recipes/checks/documentation/unpack-numerical-owner/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.gz --gzip --numeric-owner --directory "$rootdir" .
diff --git a/t/recipes/checks/documentation/unpack-numerical-owner/eval/desc b/t/recipes/checks/documentation/unpack-numerical-owner/eval/desc
new file mode 100644
index 0000000..7435a5d
--- /dev/null
+++ b/t/recipes/checks/documentation/unpack-numerical-owner/eval/desc
@@ -0,0 +1,3 @@
+Testname: unpack-numerical-owner
+Test-Against: bad-owner-for-doc-file
+Check: documentation
diff --git a/t/recipes/checks/documentation/unpack-numerical-owner/eval/hints b/t/recipes/checks/documentation/unpack-numerical-owner/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/documentation/unpack-numerical-owner/eval/hints
diff --git a/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/control.in b/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/control.in
new file mode 100644
index 0000000..0fb6a67
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dh-elpa
+Homepage: https://lintian.debian.org/
+# dh-elpa in stretch chokes on unknown fields T_T
+#Rules-Requires-Root: no
+
+Package: elpa-foo
+Section: lisp
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${elpa:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/elpa-foo.elpa b/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/elpa-foo.elpa
new file mode 100644
index 0000000..63163f5
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/elpa-foo.elpa
@@ -0,0 +1 @@
+foo.el
diff --git a/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/rules b/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/rules
new file mode 100755
index 0000000..e8e22ba
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with elpa
diff --git a/t/recipes/checks/emacs/elpa/elpa/build-spec/fill-values b/t/recipes/checks/emacs/elpa/elpa/build-spec/fill-values
new file mode 100644
index 0000000..e80a217
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: elpa
+Skeleton: upload-non-native
+Description: Tests for emacsen-common packages using dh-elpa
+Extra-Build-Depends: dh-elpa
diff --git a/t/recipes/checks/emacs/elpa/elpa/build-spec/orig/foo.el b/t/recipes/checks/emacs/elpa/elpa/build-spec/orig/foo.el
new file mode 100644
index 0000000..6234f9d
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/build-spec/orig/foo.el
@@ -0,0 +1,16 @@
+;;; foo.el --- foo
+
+;; Copyright (C) 2017 Sean Whitton
+
+;; Author: Sean Whitton <spwhitton@spwhitton.name>
+;; Version: 1.0
+;; Keywords: strings
+
+;;; Commentary:
+
+;;; Code:
+
+(message "Hello, world")
+
+(provide 'foo)
+;;; foo.el ends here
diff --git a/t/recipes/checks/emacs/elpa/elpa/eval/desc b/t/recipes/checks/emacs/elpa/elpa/eval/desc
new file mode 100644
index 0000000..bbc2b36
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/eval/desc
@@ -0,0 +1,4 @@
+Testname: elpa
+Check: emacs/elpa
+Test-Against:
+ emacsen-common-without-dh-elpa
diff --git a/t/recipes/checks/emacs/elpa/elpa/eval/hints b/t/recipes/checks/emacs/elpa/elpa/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/elpa/eval/hints
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-compat b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-compat
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-compat
@@ -0,0 +1 @@
+0
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-install b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-install
new file mode 100755
index 0000000..32dd6a5
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-install
@@ -0,0 +1,44 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/muse
+
+# Written by Jim Van Zandt <jrv@vanzandt.mv.com>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=foo-el
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+FLAVORTEST=`echo $FLAVOR | cut -c-6`
+if [ ${FLAVORTEST} = xemacs ] ; then
+ SITEFLAG="-no-site-file"
+else
+ SITEFLAG="--no-site-file"
+fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+ELPREFIX=/usr/share/emacs/site-lisp/${PACKAGE}
+
+for i in ${PACKAGE} ${PACKAGE}/contrib; do
+
+ ELDIR=/usr/share/emacs/site-lisp/$i
+ ELCDIR=/usr/share/${FLAVOR}/site-lisp/$i
+
+ install -m 755 -d ${ELCDIR}
+ cd ${ELDIR}
+ FILES=`ls -1 *.el | grep -v autoloads`
+ rm -f ${ELCDIR}/*.el
+ cd ${ELCDIR}
+ ln -sf ${ELDIR}/*.el .
+
+ cat << EOF > path.el
+(setq load-path (cons "${ELPREFIX}" (cons "${ELPREFIX}/contrib" load-path))
+ byte-compile-warnings nil)
+EOF
+ ${FLAVOR} ${FLAGS} ${FILES} 2>&1 | gzip -9qf > CompilationLog.gz
+ rm -f path.el
+done
+
+exit 0
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-remove b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-remove
new file mode 100755
index 0000000..9bc1fb3
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-remove
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/muse
+
+FLAVOR=$1
+PACKAGE=foo-el
+
+if [ ${FLAVOR} != emacs ]; then
+ # if test -x /usr/sbin/install-info-altdir; then
+ # echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ # install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/emacs-wiki.info.gz
+ # fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-startup b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-startup
new file mode 100644
index 0000000..3a059c3
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/emacsen-startup
@@ -0,0 +1,24 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file for the Debian GNU/Linux muse package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@vanzandt.mv.com>
+;; Adapted for Muse by Michael Olson <mwolson@gnu.org>
+
+;; The muse package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+
+(if (not (file-exists-p "/usr/share/emacs/site-lisp/foo-el"))
+ (message "Package foo-el removed but not purged. Skipping setup.")
+ (let ((prefix (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/foo-el")))
+ (debian-pkg-add-load-path-item prefix)
+ (debian-pkg-add-load-path-item (concat prefix "/contrib")))
+
+ (load "foo-autoloads.el"))
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/install b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/install
new file mode 100644
index 0000000..a2af265
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/debian/install
@@ -0,0 +1 @@
+foo.el /usr/share/emacs/site-lisp/foo-el
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/fill-values b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/fill-values
new file mode 100644
index 0000000..f0df98f
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: emacsen-common
+Skeleton: upload-non-native
+Description: Tests for emacsen-common packages not using dh-elpa
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/orig/foo.el b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/orig/foo.el
new file mode 100644
index 0000000..414739b
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/build-spec/orig/foo.el
@@ -0,0 +1 @@
+(message "Hello, world")
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/eval/desc b/t/recipes/checks/emacs/elpa/emacsen-common/eval/desc
new file mode 100644
index 0000000..093a753
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/eval/desc
@@ -0,0 +1,2 @@
+Testname: emacsen-common
+Check: emacs/elpa
diff --git a/t/recipes/checks/emacs/elpa/emacsen-common/eval/hints b/t/recipes/checks/emacs/elpa/emacsen-common/eval/hints
new file mode 100644
index 0000000..8cf5a53
--- /dev/null
+++ b/t/recipes/checks/emacs/elpa/emacsen-common/eval/hints
@@ -0,0 +1 @@
+emacsen-common (binary): emacsen-common-without-dh-elpa
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.docs b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.docs
new file mode 100644
index 0000000..42f92ea
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.docs
@@ -0,0 +1,3 @@
+read-only
+README
+some-file
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.init b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.init
new file mode 100644
index 0000000..4ebbdf5
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: binary
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Useless
+# Description: Does nothing
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.install b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.install
new file mode 100644
index 0000000..c759290
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.install
@@ -0,0 +1,9 @@
+sample.ali usr/lib/some-where/
+script-uid usr/bin/
+script-ugid usr/bin/
+script-gid usr/bin/
+script-wexec usr/bin/
+script-wuid usr/bin/
+script-ro usr/bin/
+script etc/cron.d/
+script etc/emacs.d/
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.manpages b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.manpages
new file mode 100644
index 0000000..ad3e735
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/binary.manpages
@@ -0,0 +1 @@
+script-*.1
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/clean b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/clean
new file mode 100644
index 0000000..1e7cec6
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/clean
@@ -0,0 +1 @@
+script*.1
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/control.in b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/control.in
new file mode 100644
index 0000000..5c8703f
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: binary
+Architecture: all
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: game
+Architecture: all
+Section: games
+Depends: ${misc:Depends}
+Description: [% $description %] - game
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Game package.
+
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.install b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.install
new file mode 100644
index 0000000..f708f99
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.install
@@ -0,0 +1 @@
+script usr/games/
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.manpages b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.manpages
new file mode 100644
index 0000000..8d16fb4
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/game.manpages
@@ -0,0 +1 @@
+script.1
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/rules b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/rules
new file mode 100644
index 0000000..951f84c
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/debian/rules
@@ -0,0 +1,31 @@
+#!/usr/bin/make -f
+
+GPKG:=game
+PKG:=binary
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ for N in uid gid ugid wexec wuid ro; do \
+ sed s/script/script-$$N/ < script > script-$$N ; \
+ pod2man --section 1 script-$$N > script-$$N.1 ; \
+ done
+ pod2man --section 1 script > script.1
+
+override_dh_fixperms:
+ dh_fixperms
+
+ chmod 0444 debian/$(PKG)/usr/share/doc/$(PKG)/read-only
+ chmod 4755 debian/$(PKG)/usr/bin/script-uid
+ chmod 2755 debian/$(PKG)/usr/bin/script-gid
+ chmod 6755 debian/$(PKG)/usr/bin/script-ugid
+ chmod 0775 debian/$(PKG)/usr/bin/script-wexec
+ chmod 4744 debian/$(PKG)/usr/bin/script-wuid
+ chmod 0751 debian/$(PKG)/usr/bin/script-ro
+ chmod 0644 debian/$(PKG)/usr/lib/some-where/sample.ali
+ chmod 0744 debian/$(PKG)/usr/share/doc/$(PKG)
+ chmod 0755 debian/$(PKG)/usr/share/doc/$(PKG)/some-file
+ chmod 0755 debian/$(PKG)/etc/cron.d/script
+ chmod 0755 debian/$(PKG)/etc/emacs.d/script
+ chmod 0765 debian/$(PKG)/etc/init.d/binary
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/fill-values b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/fill-values
new file mode 100644
index 0000000..c914891
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-bad-perm-owner
+Description: General permissions and owner tests
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/README b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/read-only b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/read-only
new file mode 100644
index 0000000..1a3fca1
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/read-only
@@ -0,0 +1 @@
+Fadango on the core
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/sample.ali b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/sample.ali
new file mode 100644
index 0000000..fec3fc8
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/sample.ali
@@ -0,0 +1 @@
+This is not a valid ali file
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/script b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/script
new file mode 100755
index 0000000..8521013
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/script
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+echo "Aloha"
+
+exit 0
+
+=head1 NAME
+
+script -- prints Aloha to stdout
+
+=head1 SYNOPSIS
+
+ script
+
+=head1 DESCRIPTION
+
+Prints Aloha to stdout and that is it.
+
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/some-file b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/some-file
new file mode 100644
index 0000000..0dfa8ff
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This is executable and should not be. :)
+ - Unfortunately it triggers an extra tag... oh well.
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/eval/desc b/t/recipes/checks/emacs/files-bad-perm-owner/eval/desc
new file mode 100644
index 0000000..d6f6fcc
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-bad-perm-owner
+Check: emacs
diff --git a/t/recipes/checks/emacs/files-bad-perm-owner/eval/hints b/t/recipes/checks/emacs/files-bad-perm-owner/eval/hints
new file mode 100644
index 0000000..e9bbc5f
--- /dev/null
+++ b/t/recipes/checks/emacs/files-bad-perm-owner/eval/hints
@@ -0,0 +1 @@
+binary (binary): bad-permissions-for-etc-emacs-script 0755 != 0644 [etc/emacs.d/script]
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/control.in b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..cf3511a
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: Has a symlink to examples
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a symlink to examples.
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/rules b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/rules
new file mode 100644
index 0000000..f5ec31b
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+PKG = $(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_link:
+ dh_link /etc /usr/share/doc/$(PKG)/examples
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/fill-values b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/fill-values
new file mode 100644
index 0000000..4d5c224
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-package-does-not-install-examples-symlink
+Description: Detect installed examples (symlink)
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/orig/examples/testsuite b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/orig/examples/testsuite
new file mode 100644
index 0000000..345e6ae
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/build-spec/orig/examples/testsuite
@@ -0,0 +1 @@
+Test
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/desc b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/desc
new file mode 100644
index 0000000..6ca663c
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-package-does-not-install-examples-symlink
+Test-Against:
+ package-does-not-install-examples
+Check: examples
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/hints b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-symlink/eval/hints
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/debian/examples b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/debian/examples
new file mode 100644
index 0000000..e39721e
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/debian/examples
@@ -0,0 +1 @@
+examples/*
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/fill-values b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/fill-values
new file mode 100644
index 0000000..35e3774
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-package-does-not-install-examples-unrel
+Description: Detect uninstalled examples (false positive)
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/orig/examples/testsuite b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/orig/examples/testsuite
new file mode 100644
index 0000000..345e6ae
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/build-spec/orig/examples/testsuite
@@ -0,0 +1 @@
+Test
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/desc b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/desc
new file mode 100644
index 0000000..24b695f
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-package-does-not-install-examples-unrel
+Test-Against:
+ package-does-not-install-examples
+Check: examples
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/hints b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples-unrel/eval/hints
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/fill-values b/t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/fill-values
new file mode 100644
index 0000000..0005654
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-package-does-not-install-examples
+Source: foo
+Description: Detect uninstalled examples
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/orig/examples/testsuite b/t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/orig/examples/testsuite
new file mode 100644
index 0000000..345e6ae
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples/build-spec/orig/examples/testsuite
@@ -0,0 +1 @@
+Test
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/desc b/t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/desc
new file mode 100644
index 0000000..f36b71f
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-package-does-not-install-examples
+Check: examples
diff --git a/t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/hints b/t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/hints
new file mode 100644
index 0000000..7b9a3b8
--- /dev/null
+++ b/t/recipes/checks/examples/cruft-package-does-not-install-examples/eval/hints
@@ -0,0 +1 @@
+foo (source): package-does-not-install-examples [examples/]
diff --git a/t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/debian/rules b/t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/debian/rules
new file mode 100644
index 0000000..ed45d82
--- /dev/null
+++ b/t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+DIR := debian/$(shell dh_listpackages)/usr/bin
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ mkdir -p $(DIR)
+ touch $(DIR)/empty-executable
diff --git a/t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/fill-values b/t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/fill-values
new file mode 100644
index 0000000..ec19fe1
--- /dev/null
+++ b/t/recipes/checks/executable/files-zero-byte-executable-in-path/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: files-zero-byte-executable-in-path
+Skeleton: upload-native
+Description: Check detection of zero-byte executables in PATH
diff --git a/t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/desc b/t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/desc
new file mode 100644
index 0000000..36ce5b3
--- /dev/null
+++ b/t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-zero-byte-executable-in-path
+Check: executable
diff --git a/t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/hints b/t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/hints
new file mode 100644
index 0000000..70e3345
--- /dev/null
+++ b/t/recipes/checks/executable/files-zero-byte-executable-in-path/eval/hints
@@ -0,0 +1 @@
+files-zero-byte-executable-in-path (binary): executable-not-elf-or-script [usr/bin/empty-executable]
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/executable/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/executable/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/executable/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/executable/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/control b/t/recipes/checks/executable/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/executable/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/executable/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/executable/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/executable/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/menu b/t/recipes/checks/executable/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/executable/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/executable/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/rules b/t/recipes/checks/executable/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/debian/templates b/t/recipes/checks/executable/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/fill-values b/t/recipes/checks/executable/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/executable/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/executable/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/executable/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/executable/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/executable/legacy-binary/eval/desc b/t/recipes/checks/executable/legacy-binary/eval/desc
new file mode 100644
index 0000000..b217970
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: executable
diff --git a/t/recipes/checks/executable/legacy-binary/eval/hints b/t/recipes/checks/executable/legacy-binary/eval/hints
new file mode 100644
index 0000000..daf2f5b
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (binary): executable-not-elf-or-script [usr/share/applications/goodbye.desktop]
+binary (binary): executable-not-elf-or-script [usr/bin/iminusrbin]
diff --git a/t/recipes/checks/executable/legacy-binary/eval/post-test b/t/recipes/checks/executable/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/debian/control b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/fill-values b/t/recipes/checks/executable/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/executable/legacy-filenames/eval/desc b/t/recipes/checks/executable/legacy-filenames/eval/desc
new file mode 100644
index 0000000..0dc532f
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: executable
diff --git a/t/recipes/checks/executable/legacy-filenames/eval/hints b/t/recipes/checks/executable/legacy-filenames/eval/hints
new file mode 100644
index 0000000..0ffbb36
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/eval/hints
@@ -0,0 +1,2 @@
+filenames (binary): executable-not-elf-or-script [usr/bin/mh/read]
+filenames (binary): executable-not-elf-or-script [usr/bin/bin/bad]
diff --git a/t/recipes/checks/executable/legacy-filenames/eval/post-test b/t/recipes/checks/executable/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..ef39375
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: python3 (>= 3.1), python3 (<< 3.2), dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..dc6b7d5
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,111 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 py3.Xfoo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3.Xfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 py3foo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3foo $(tmp)/usr/share/doc/scripts/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/fill-values b/t/recipes/checks/executable/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/py3.Xfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/py3.Xfoo
new file mode 100755
index 0000000..7f105e6
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/py3.Xfoo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3.7
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/py3foo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/py3foo
new file mode 100755
index 0000000..02b0444
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/py3foo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/executable/legacy-scripts/build-spec/pre-build b/t/recipes/checks/executable/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/executable/legacy-scripts/eval/desc b/t/recipes/checks/executable/legacy-scripts/eval/desc
new file mode 100644
index 0000000..5f6b4ba
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: executable
diff --git a/t/recipes/checks/executable/legacy-scripts/eval/hints b/t/recipes/checks/executable/legacy-scripts/eval/hints
new file mode 100644
index 0000000..b9a8db9
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): executable-not-elf-or-script [usr/bin/perl-bizarre-3]
diff --git a/t/recipes/checks/executable/legacy-scripts/eval/post-test b/t/recipes/checks/executable/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/executable/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/debian/clean b/t/recipes/checks/executable/scripts-exec/build-spec/debian/clean
new file mode 100644
index 0000000..8f76e67
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/debian/clean
@@ -0,0 +1 @@
+man/
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/debian/install b/t/recipes/checks/executable/scripts-exec/build-spec/debian/install
new file mode 100644
index 0000000..0486c9a
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/debian/install
@@ -0,0 +1 @@
+*-script usr/bin/
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/debian/manpages b/t/recipes/checks/executable/scripts-exec/build-spec/debian/manpages
new file mode 100644
index 0000000..bf519d7
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*.1
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/debian/rules b/t/recipes/checks/executable/scripts-exec/build-spec/debian/rules
new file mode 100755
index 0000000..ef51115
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+TMP:=debian/$(shell dh_listpackages)/
+%:
+ dh $@
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 0755 $(TMP)/usr/bin/01-normal-script
+ chmod 0644 $(TMP)/usr/bin/02-no-exec-script
+ rm -f $(TMP)/usr/bin/03-hardlink-script
+ ln $(TMP)/usr/bin/01-normal-script $(TMP)/usr/bin/03-hardlink-script
+ chmod 0755 $(TMP)/usr/bin/04-not-a-script
+
+override_dh_auto_build:
+ mkdir man
+ for FILE in *-script ; do \
+ sed s/@SCRIPT@/$$FILE/g script.pod | \
+ pod2man --name="$$(echo "$$FILE" | tr a-z A-Z )" \
+ --section=1 > man/$$FILE.1 ; \
+ done
+
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/fill-values b/t/recipes/checks/executable/scripts-exec/build-spec/fill-values
new file mode 100644
index 0000000..f442e51
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-exec
+Description: Check for exec bit related issues for scripts
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/orig/01-normal-script b/t/recipes/checks/executable/scripts-exec/build-spec/orig/01-normal-script
new file mode 100644
index 0000000..97fd3b7
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/orig/01-normal-script
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo "Hallo world"
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/orig/02-no-exec-script b/t/recipes/checks/executable/scripts-exec/build-spec/orig/02-no-exec-script
new file mode 100644
index 0000000..98b699f
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/orig/02-no-exec-script
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo "Goodbye world"
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/orig/03-hardlink-script b/t/recipes/checks/executable/scripts-exec/build-spec/orig/03-hardlink-script
new file mode 100644
index 0000000..e7959bb
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/orig/03-hardlink-script
@@ -0,0 +1 @@
+Not actually installed/tested; just here to ensure manpage is generated.
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/orig/04-not-a-script b/t/recipes/checks/executable/scripts-exec/build-spec/orig/04-not-a-script
new file mode 100644
index 0000000..84cf6d3
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/orig/04-not-a-script
@@ -0,0 +1,2 @@
+# This is not a script nor an ELF executable, but yet it will be marked
+# executable. Tsk tsk tsk.
diff --git a/t/recipes/checks/executable/scripts-exec/build-spec/orig/script.pod b/t/recipes/checks/executable/scripts-exec/build-spec/orig/script.pod
new file mode 100644
index 0000000..8ffa2d0
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/build-spec/orig/script.pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+@SCRIPT@ - Cool script to do stuff written in some script language.
+
+=head1 SYNOPSIS
+
+@SCRIPT@ --cool-argument
+
+=head1 DESCRIPTION
+
+This script is very awesome and does something you do not even know
+you need.
+
+=head1 AUTHOR
+
+I made this
+
+
diff --git a/t/recipes/checks/executable/scripts-exec/eval/desc b/t/recipes/checks/executable/scripts-exec/eval/desc
new file mode 100644
index 0000000..0873bfc
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-exec
+Check: executable
diff --git a/t/recipes/checks/executable/scripts-exec/eval/hints b/t/recipes/checks/executable/scripts-exec/eval/hints
new file mode 100644
index 0000000..c3cf6a8
--- /dev/null
+++ b/t/recipes/checks/executable/scripts-exec/eval/hints
@@ -0,0 +1 @@
+scripts-exec (binary): executable-not-elf-or-script [usr/bin/04-not-a-script]
diff --git a/t/recipes/checks/fields/architecture/fields-architecture/build-spec/fill-values b/t/recipes/checks/fields/architecture/fields-architecture/build-spec/fill-values
new file mode 100644
index 0000000..4b08188
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-architecture/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-architecture
+Description: Tests for the Architecture field
diff --git a/t/recipes/checks/fields/architecture/fields-architecture/build-spec/orig/Makefile b/t/recipes/checks/fields/architecture/fields-architecture/build-spec/orig/Makefile
new file mode 100644
index 0000000..6df56c1
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-architecture/build-spec/orig/Makefile
@@ -0,0 +1,5 @@
+all:
+
+install:
+ install -d -m 0755 "$(DESTDIR)/usr/lib/package"
+ echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file"
diff --git a/t/recipes/checks/fields/architecture/fields-architecture/eval/desc b/t/recipes/checks/fields/architecture/fields-architecture/eval/desc
new file mode 100644
index 0000000..30c6300
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-architecture/eval/desc
@@ -0,0 +1,4 @@
+Testname: fields-architecture
+Test-Architectures: linux-any any-i386 kfreebsd-any hurd-any
+Test-Against: unknown-architecture
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/fields-architecture/eval/hints b/t/recipes/checks/fields/architecture/fields-architecture/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-architecture/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/fields/architecture/fields-aspell/build-spec/debian/control.in b/t/recipes/checks/fields/architecture/fields-aspell/build-spec/debian/control.in
new file mode 100644
index 0000000..8e5563d
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-aspell/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: localization
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: aspell-en
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/architecture/fields-aspell/build-spec/fill-values b/t/recipes/checks/fields/architecture/fields-aspell/build-spec/fill-values
new file mode 100644
index 0000000..7407fff
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-aspell/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-aspell
+Description: Tests for Architecture of an aspell package
+Package-Architecture: any
diff --git a/t/recipes/checks/fields/architecture/fields-aspell/eval/desc b/t/recipes/checks/fields/architecture/fields-aspell/eval/desc
new file mode 100644
index 0000000..d00e972
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-aspell/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-aspell
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/fields-aspell/eval/hints b/t/recipes/checks/fields/architecture/fields-aspell/eval/hints
new file mode 100644
index 0000000..e8ebf8c
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-aspell/eval/hints
@@ -0,0 +1 @@
+aspell-en (binary): aspell-package-not-arch-all
diff --git a/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/debian/control.in b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/debian/control.in
new file mode 100644
index 0000000..f6880a6
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: doc
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-doc
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/fill-values b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/fill-values
new file mode 100644
index 0000000..50380b3
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-doc-pkg-wrong-arch
+Package-Architecture: any
+Description: Check for doc pkg not being arch all
diff --git a/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/orig/Makefile b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/orig/Makefile
new file mode 100644
index 0000000..6df56c1
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/build-spec/orig/Makefile
@@ -0,0 +1,5 @@
+all:
+
+install:
+ install -d -m 0755 "$(DESTDIR)/usr/lib/package"
+ echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file"
diff --git a/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/desc b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/desc
new file mode 100644
index 0000000..180288a
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-doc-pkg-wrong-arch
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/hints b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/hints
new file mode 100644
index 0000000..27f1abf
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-doc-pkg-wrong-arch/eval/hints
@@ -0,0 +1 @@
+fields-doc-pkg-wrong-arch-doc (binary): documentation-package-not-architecture-independent
diff --git a/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/architecture/fields-general-bad/eval/desc b/t/recipes/checks/fields/architecture/fields-general-bad/eval/desc
new file mode 100644
index 0000000..92e877b
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/fields-general-bad/eval/hints b/t/recipes/checks/fields/architecture/fields-general-bad/eval/hints
new file mode 100644
index 0000000..b15762b
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-general-bad/eval/hints
@@ -0,0 +1,2 @@
+fields-general-BAD? (binary): unknown-architecture weird
+fields-general-BAD? (binary): too-many-architectures amd64 i386 weird
diff --git a/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..f0ca8ee
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/DEBIAN/control.in
@@ -0,0 +1,11 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: any-i386
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/fill-values b/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/fill-values
new file mode 100644
index 0000000..9c29949
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: fields-wildcard-binary
+Description: Test for architecture wildcard in binary package
diff --git a/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-wildcard-binary/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/desc b/t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/desc
new file mode 100644
index 0000000..75284d5
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-wildcard-binary
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/hints b/t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/hints
new file mode 100644
index 0000000..ec598d5
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/fields-wildcard-binary/eval/hints
@@ -0,0 +1 @@
+fields-wildcard-binary (binary): arch-wildcard-in-binary-package any-i386
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/control.in b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/control.in
new file mode 100644
index 0000000..1c7406a
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/control.in
@@ -0,0 +1,24 @@
+Source: [% $source %]
+Section: [% $section %]
+Priority: optional
+Maintainer: [% $author %]
+Build-Depends: [% $build_depends %]
+Standards-Version: [% $standards_version %]
+
+Package: magic-architecture-srcpkg-ok-data
+Architecture: all
+Depends: ${misc:Depends}
+Description: Test package for "all" plus specific arch in .dscs
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: magic-architecture-srcpkg-ok
+Architecture: amd64
+Depends: ${misc:Depends}
+Description: Test package for "all" plus specific arch in .dscs (a)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Architecture specific package.
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/watch b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/watch
new file mode 100644
index 0000000..c2a8392
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/debian/watch
@@ -0,0 +1 @@
+# foo
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/fill-values b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/fill-values
new file mode 100644
index 0000000..fed5016
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: magic-architecture-srcpkg-ok
+Description: Test package for "all" plus specific arch in .dscs
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/orig/README b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/orig/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/build-spec/orig/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/desc b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/desc
new file mode 100644
index 0000000..308f0c2
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/desc
@@ -0,0 +1,3 @@
+Testname: magic-architecture-srcpkg-ok
+Test-Against: magic-arch-in-arch-list
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/hints b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-ok/eval/hints
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/debian/watch b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/debian/watch
new file mode 100644
index 0000000..c2a8392
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/debian/watch
@@ -0,0 +1 @@
+# foo
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/dpkg-overrides b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/dpkg-overrides
new file mode 100644
index 0000000..95b9f1f
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/dpkg-overrides
@@ -0,0 +1 @@
+-DArchitecture="amd64 any"
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/fill-values b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/fill-values
new file mode 100644
index 0000000..3ecd9a3
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: magic-architecture-srcpkg-wrong
+Description: Test package for "any" plus specific arch in .dscs
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/orig/README b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/orig/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/build-spec/orig/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/desc b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/desc
new file mode 100644
index 0000000..1ca7ed1
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/desc
@@ -0,0 +1,2 @@
+Testname: magic-architecture-srcpkg-wrong
+Check: fields/architecture
diff --git a/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/hints b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/hints
new file mode 100644
index 0000000..3a58cd8
--- /dev/null
+++ b/t/recipes/checks/fields/architecture/magic-architecture-srcpkg-wrong/eval/hints
@@ -0,0 +1 @@
+magic-architecture-srcpkg-wrong (source): magic-arch-in-arch-list
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/debian/control.in b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..aae8958
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Bugs: mailto:debian-backports@lists.debian.org
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/fill-values b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/fill-values
new file mode 100644
index 0000000..bf3f573
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel
+Package-Architecture: all
+Description: Check for Bugs: field parsing false positive
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/desc b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/desc
new file mode 100644
index 0000000..965ab24
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel
+Test-Against:
+ bugs-field-does-not-refer-to-debian-infrastructure
+Check: fields/bugs
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/hints b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure-unrel/eval/hints
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/debian/control.in b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/debian/control.in
new file mode 100644
index 0000000..196abcc
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Bugs: https://upstream.org/
+
+Package: [% $source %]
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Architecture: all
+Section: debug
+Depends: ${misc:Depends}
+Description: [% $description %] (fake dbgsym package)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package. s
+ .
+ This is fake dbgsym package.
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/fill-values b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/fill-values
new file mode 100644
index 0000000..828e66a
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-bugs-field-does-not-refer-to-debian-infrastructure
+Description: Check for packages with invalid Bugs fields
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/desc b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/desc
new file mode 100644
index 0000000..6ae27e5
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-bugs-field-does-not-refer-to-debian-infrastructure
+Check: fields/bugs
diff --git a/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/hints b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/hints
new file mode 100644
index 0000000..fe3d38c
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-bugs-field-does-not-refer-to-debian-infrastructure/eval/hints
@@ -0,0 +1 @@
+fields-bugs-field-does-not-refer-to-debian-infrastructure (binary): bugs-field-does-not-refer-to-debian-infrastructure https://upstream.org/
diff --git a/t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/control.in b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/control.in
new file mode 100644
index 0000000..fac3281
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Bugs: debbugs://bugs.debian.org/
+Origin: debian
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/install b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/fields/bugs/fields-redundant/build-spec/fill-values b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/fill-values
new file mode 100644
index 0000000..f5e21a7
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-redundant
+Description: General tests redundant fields
diff --git a/t/recipes/checks/fields/bugs/fields-redundant/build-spec/orig/some-file b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-redundant/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/fields/bugs/fields-redundant/eval/desc b/t/recipes/checks/fields/bugs/fields-redundant/eval/desc
new file mode 100644
index 0000000..2876da5
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-redundant/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-redundant
+Check: fields/bugs
diff --git a/t/recipes/checks/fields/bugs/fields-redundant/eval/hints b/t/recipes/checks/fields/bugs/fields-redundant/eval/hints
new file mode 100644
index 0000000..8c1a019
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/fields-redundant/eval/hints
@@ -0,0 +1 @@
+fields-redundant (binary): redundant-bugs-field
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/control b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/rules b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/build-spec/fill-values b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/eval/desc b/t/recipes/checks/fields/bugs/legacy-relations/eval/desc
new file mode 100644
index 0000000..0391208
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: fields/bugs
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/eval/hints b/t/recipes/checks/fields/bugs/legacy-relations/eval/hints
new file mode 100644
index 0000000..68147f0
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/eval/hints
@@ -0,0 +1,2 @@
+relations-multiple-libs (binary): redundant-bugs-field
+relations (binary): redundant-bugs-field
diff --git a/t/recipes/checks/fields/bugs/legacy-relations/eval/post-test b/t/recipes/checks/fields/bugs/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/bugs/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/built-using/fields-built-using/build-spec/debian/control.in b/t/recipes/checks/fields/built-using/fields-built-using/build-spec/debian/control.in
new file mode 100644
index 0000000..962d380
--- /dev/null
+++ b/t/recipes/checks/fields/built-using/fields-built-using/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Built-Using: foo (>= 1.0)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/built-using/fields-built-using/build-spec/fill-values b/t/recipes/checks/fields/built-using/fields-built-using/build-spec/fill-values
new file mode 100644
index 0000000..a339ea9
--- /dev/null
+++ b/t/recipes/checks/fields/built-using/fields-built-using/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-built-using
+Description: Test for built-using field
diff --git a/t/recipes/checks/fields/built-using/fields-built-using/eval/desc b/t/recipes/checks/fields/built-using/fields-built-using/eval/desc
new file mode 100644
index 0000000..6ef2ce3
--- /dev/null
+++ b/t/recipes/checks/fields/built-using/fields-built-using/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-built-using
+Check: fields/built-using
diff --git a/t/recipes/checks/fields/built-using/fields-built-using/eval/hints b/t/recipes/checks/fields/built-using/fields-built-using/eval/hints
new file mode 100644
index 0000000..4e968e0
--- /dev/null
+++ b/t/recipes/checks/fields/built-using/fields-built-using/eval/hints
@@ -0,0 +1 @@
+fields-built-using (binary): invalid-value-in-built-using-field foo (>= 1.0)
diff --git a/t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/fill-values b/t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/fill-values
new file mode 100644
index 0000000..fff5dc3
--- /dev/null
+++ b/t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: source-native
+Testname: no-sha256-checksum
+Version: 1
+Source-Format: 3.0 (native)
+Dh-Compat-Level: 9
+Description: Test for missing Checksums-Sha256 field
diff --git a/t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/post-build b/t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/post-build
new file mode 100755
index 0000000..48e9641
--- /dev/null
+++ b/t/recipes/checks/fields/checksums/no-sha256-checksum/build-spec/post-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="$1"
+
+perl -pi -0777 -e 's/\nChecksums-Sha256:[^\n]*(\n [^\n]*)*//' "$product"
diff --git a/t/recipes/checks/fields/checksums/no-sha256-checksum/eval/desc b/t/recipes/checks/fields/checksums/no-sha256-checksum/eval/desc
new file mode 100644
index 0000000..ae11874
--- /dev/null
+++ b/t/recipes/checks/fields/checksums/no-sha256-checksum/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-sha256-checksum
+Check: fields/checksums
diff --git a/t/recipes/checks/fields/checksums/no-sha256-checksum/eval/hints b/t/recipes/checks/fields/checksums/no-sha256-checksum/eval/hints
new file mode 100644
index 0000000..98eabda
--- /dev/null
+++ b/t/recipes/checks/fields/checksums/no-sha256-checksum/eval/hints
@@ -0,0 +1 @@
+no-sha256-checksum (source): no-strong-digests-in-dsc
diff --git a/t/recipes/checks/fields/deb822/native-source/build-spec/fill-values b/t/recipes/checks/fields/deb822/native-source/build-spec/fill-values
new file mode 100644
index 0000000..bfd6582
--- /dev/null
+++ b/t/recipes/checks/fields/deb822/native-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: native-source
+Description: Plain native source package for deb822 field classification tags.
diff --git a/t/recipes/checks/fields/deb822/native-source/eval/desc b/t/recipes/checks/fields/deb822/native-source/eval/desc
new file mode 100644
index 0000000..66a4f14
--- /dev/null
+++ b/t/recipes/checks/fields/deb822/native-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: native-source
+Check: fields/deb822
diff --git a/t/recipes/checks/fields/deb822/native-source/eval/hints b/t/recipes/checks/fields/deb822/native-source/eval/hints
new file mode 100644
index 0000000..482dd95
--- /dev/null
+++ b/t/recipes/checks/fields/deb822/native-source/eval/hints
@@ -0,0 +1 @@
+native-source (source): trimmed-deb822-field §1 Maintainer Debian Lintian Maintainers <lintian-maint@debian.org> [debian/control:4]
diff --git a/t/recipes/checks/fields/deb822/native-source/eval/post-test b/t/recipes/checks/fields/deb822/native-source/eval/post-test
new file mode 100644
index 0000000..0eb67e8
--- /dev/null
+++ b/t/recipes/checks/fields/deb822/native-source/eval/post-test
@@ -0,0 +1,2 @@
+# retain one field for illustration; many are too volatile for a test
+/[^ ]* \([^)]*\): trimmed-deb822-field §[0-9]+ Maintainer .*/!d
diff --git a/t/recipes/checks/fields/description/description-empty-paragraph/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-empty-paragraph/build-spec/debian/control.in
new file mode 100644
index 0000000..dce8164
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-empty-paragraph/build-spec/debian/control.in
@@ -0,0 +1,41 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: package to test empty first paragraph
+ .
+ The first paragraph
+ of this description
+ is empty. It is also an empty package.
+
+Package: [% $source %]-2
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: package to test empty last paragraph
+ The last paragraph
+ of this description
+ is empty. It is also an empty package.
+ .
+ Unfortunately this doesn't trigger the warning, an empty last paragraph
+ seems to get stripped out already before it is handed over.
+ .
+
+Package: [% $source %]-3
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: package to test empty paragraph in the middle
+ There is an
+ empty paragraph
+ in between. It is also an empty package.
+ .
+ .
+ There is an
+ empty paragraph
+ in between. It is also an empty package.
diff --git a/t/recipes/checks/fields/description/description-empty-paragraph/build-spec/fill-values b/t/recipes/checks/fields/description/description-empty-paragraph/build-spec/fill-values
new file mode 100644
index 0000000..a469492
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-empty-paragraph/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-empty-paragraph
+Description: Tests of empty paragraphs in descriptions
diff --git a/t/recipes/checks/fields/description/description-empty-paragraph/eval/desc b/t/recipes/checks/fields/description/description-empty-paragraph/eval/desc
new file mode 100644
index 0000000..ec9d013
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-empty-paragraph/eval/desc
@@ -0,0 +1,2 @@
+Testname: description-empty-paragraph
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-empty-paragraph/eval/hints b/t/recipes/checks/fields/description/description-empty-paragraph/eval/hints
new file mode 100644
index 0000000..e501c2b
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-empty-paragraph/eval/hints
@@ -0,0 +1,2 @@
+description-empty-paragraph-3 (binary): extended-description-contains-empty-paragraph
+description-empty-paragraph (binary): extended-description-contains-empty-paragraph
diff --git a/t/recipes/checks/fields/description/description-general/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-general/build-spec/debian/control.in
new file mode 100644
index 0000000..1fffbc6
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-general/build-spec/debian/control.in
@@ -0,0 +1,155 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $source %] is a package which tests lintian's description checks
+ missing
+ The the synopsis should not start with the package's name. Moreover,
+ the long description
+ should
+ not
+ contain tabs.
+ .control statements are not allowed as well.
+ .
+ All all all of of these these should be matched matched matched
+ .
+ This description was automagically extracted from the module by dh-make-perl
+ .
+ No, not really... (dummy)
+
+Package: [% $source %]-2
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Don't use tabs in the synopsis and restrict yourself to less than 80 characters, otherwise Lintian will complain
+ Oh, and don't start the long description with spaces.
+ Now here comes a list:
+ - which is
+ - unfortunately
+ - not correctly indented. (dummy)
+
+Package: [% $source %]-3
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description:
+ There should really be a synopsis.
+ The line in an extended description should be less than 80 characters, otherwise you'll get
+ a Lintian warning.
+ .
+ And the old man said "he he is the one!"
+ "No, I am am not", he replied (dummy)
+
+Package: [% $source %]-4
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: some Lintian test package
+ some Lintian test package
+ .
+ Some mroe stuff about this debian test package. (dummy)
+ .
+ Homepage: <http://lintian.debian.org/>
+
+Package: [% $source %]-short
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Short
+ The description is too short. One word is not enough.
+ Second line to avoid the warning.
+ .
+ And a third. (dummy)
+
+Package: foo-duplicate
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: foo duplicate
+ The description is the same as the package name.
+ A real description would be appreciated
+ .
+ And a third. (dummy)
+
+Package: foo-bar-duplicate
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: foo bar duplicate
+ The description is the same as the package name.
+ A real description would be appreciated
+ .
+ And a third. (dummy)
+
+Package: [% $source %]-dummy
+Section: oldlibs
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: test package (transitional package)
+ Transitional packages can have short long descriptions.
+
+Package: [% $source %]-empty
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: test package with empty extended description (dummy)
+
+Package: [% $source %]-utf8-long
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: test package with UTF-8 description (“héhéâ€â€œhéhéâ€â€œhéhéâ€â€œhéhéâ€)
+ Not really too long: “héhéâ€â€œhéhéâ€â€œhéhéâ€â€œhéhéâ€â€œhéhéâ€â€œhéhéâ€
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-not-dup
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: test package with duplicated words that aren't
+ Lossless JPEG is defined in ITU-T T.81, ISO/IEC IS 10918-1.
+ Contain the strings " link to ", " -> ", or ": ".
+ This is train A, a particularly fast train.
+ .
+ "hallo" or "evening" or "farewell" should not trigger a duplicate
+ "or or" warning. Also "or" "or" does not trigger the warning
+ either.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-syn-article
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: the synopsis starts with an article
+ A good synopsis should start not start with "a", "an" and "the"
+ according to developer-reference 6.2.2.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-syn-spelling
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: test for spelling - debian developement
+ Some Lintian test package.
+ .
+ Some more stuff about this Debian test package. (dummy)
+ .
+ Duplicate: Duplicate (false positive due to colon)
+ .
+ FOO (FOO Owsome Object) is a recursive acronym.
+
+Package: [% $source %]-control-statements
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: test for overly-indented control statements
+ Some Lintian test package.
+ .
+ Some more stuff about this Debian test package. (dummy)
diff --git a/t/recipes/checks/fields/description/description-general/build-spec/fill-values b/t/recipes/checks/fields/description/description-general/build-spec/fill-values
new file mode 100644
index 0000000..e3f3295
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-general
+Description: Tests of various description tags
diff --git a/t/recipes/checks/fields/description/description-general/eval/desc b/t/recipes/checks/fields/description/description-general/eval/desc
new file mode 100644
index 0000000..96d4df7
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: description-general
+Test-Against:
+ synopsis-is-a-sentence
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-general/eval/hints b/t/recipes/checks/fields/description/description-general/eval/hints
new file mode 100644
index 0000000..b5cafb3
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-general/eval/hints
@@ -0,0 +1,28 @@
+foo-duplicate (binary): description-is-pkg-name foo duplicate
+foo-bar-duplicate (binary): description-is-pkg-name foo bar duplicate
+description-general-syn-spelling (binary): spelling-error-in-description-synopsis developement development
+description-general-syn-spelling (binary): capitalization-error-in-description-synopsis debian Debian
+description-general-syn-article (binary): description-synopsis-starts-with-article
+description-general-short (binary): description-too-short Short
+description-general-empty (binary): extended-description-is-empty
+description-general-control-statements (binary): description-contains-invalid-control-statement line 2
+description-general-4 (binary): spelling-error-in-description mroe more
+description-general-4 (binary): description-synopsis-is-duplicated line 1
+description-general-4 (binary): description-contains-homepage line 5
+description-general-4 (binary): capitalization-error-in-description debian Debian
+description-general-3 (binary): using-first-person-in-description line 6: I
+description-general-3 (binary): extended-description-line-too-long line 2
+description-general-3 (binary): description-synopsis-is-empty
+description-general-2 (binary): synopsis-too-long
+description-general-2 (binary): possible-unindented-list-in-extended-description line 5
+description-general-2 (binary): description-starts-with-leading-spaces line 1
+description-general-2 (binary): description-contains-tabs
+description-general (binary): spelling-error-in-description these these (duplicate word) these
+description-general (binary): spelling-error-in-description of of (duplicate word) of
+description-general (binary): spelling-error-in-description matched matched (duplicate word) matched
+description-general (binary): spelling-error-in-description all all (duplicate word) all
+description-general (binary): description-starts-with-package-name
+description-general (binary): description-is-debmake-template line 1
+description-general (binary): description-contains-tabs line 3
+description-general (binary): description-contains-invalid-control-statement line 7
+description-general (binary): description-contains-dh-make-perl-template line 11
diff --git a/t/recipes/checks/fields/description/description-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..9cd042a
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-homepage/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ See the package web site at <http://lintian.debian.org/>.
diff --git a/t/recipes/checks/fields/description/description-homepage/build-spec/fill-values b/t/recipes/checks/fields/description/description-homepage/build-spec/fill-values
new file mode 100644
index 0000000..e1e9ee6
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-homepage
+Description: Test for a homepage reference in the description
diff --git a/t/recipes/checks/fields/description/description-homepage/eval/desc b/t/recipes/checks/fields/description/description-homepage/eval/desc
new file mode 100644
index 0000000..5debe32
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: description-homepage
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-homepage/eval/hints b/t/recipes/checks/fields/description/description-homepage/eval/hints
new file mode 100644
index 0000000..49fd6e2
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-homepage/eval/hints
@@ -0,0 +1 @@
+description-homepage (binary): description-possibly-contains-homepage http://lintian.debian.org/
diff --git a/t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/debian/control.in
new file mode 100644
index 0000000..51cdeb2
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/debian/control.in
@@ -0,0 +1,25 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Foo will soon allow something.
+ Foo soon will allow something.
+ Foo soon will be able something.
+ Foo will soon be able something.
+ Foo will soon support something.
+ Foo SOON WILL SUPPORT something.
+ Support for foo is planned.
+ Support is also planned for foo.
diff --git a/t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/fill-values b/t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/fill-values
new file mode 100644
index 0000000..1bdede6
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-mentions-planned-features/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-mentions-planned-features
+Description: Test for a packages mentioning upcoming features
diff --git a/t/recipes/checks/fields/description/description-mentions-planned-features/eval/desc b/t/recipes/checks/fields/description/description-mentions-planned-features/eval/desc
new file mode 100644
index 0000000..38ffdd7
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-mentions-planned-features/eval/desc
@@ -0,0 +1,2 @@
+Testname: description-mentions-planned-features
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-mentions-planned-features/eval/hints b/t/recipes/checks/fields/description/description-mentions-planned-features/eval/hints
new file mode 100644
index 0000000..5552914
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-mentions-planned-features/eval/hints
@@ -0,0 +1,8 @@
+description-mentions-planned-features (binary): description-mentions-planned-features (line 9)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 8)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 7)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 6)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 13)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 12)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 11)
+description-mentions-planned-features (binary): description-mentions-planned-features (line 10)
diff --git a/t/recipes/checks/fields/description/description-perl/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-perl/build-spec/debian/control.in
new file mode 100644
index 0000000..ac66abe
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: perl
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libdeb-long-description-perl
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: lintian dummy package to test a module name related check
+ This package is solely meant for testing a lintian check to argue
+ about not mentioning the contained perl module.
+ .
+ For testing and length-ish purposes, with Long::Description a similar
+ name is mentioned though.
+
+Package: libdeb-long-description-proper-perl
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: lintian dummy package to test a module name related false positive
+ This package is solely meant for testing a lintian check to argue
+ about not mentioning the contained perl module.
+ .
+ This is a package which checks the test for false positives, so it
+ actually mentions Deb::Long::Description::Proper.
diff --git a/t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-perl.install b/t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-perl.install
new file mode 100644
index 0000000..306e16a
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-perl.install
@@ -0,0 +1 @@
+lib/Deb/Long/Description.pm usr/share/perl5/Deb/Long
diff --git a/t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-proper-perl.install b/t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-proper-perl.install
new file mode 100644
index 0000000..5c2f399
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/build-spec/debian/libdeb-long-description-proper-perl.install
@@ -0,0 +1 @@
+lib/Deb/Long/Description/Proper.pm usr/share/perl5/Deb/Long/Description
diff --git a/t/recipes/checks/fields/description/description-perl/build-spec/fill-values b/t/recipes/checks/fields/description/description-perl/build-spec/fill-values
new file mode 100644
index 0000000..f3c08da
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-perl
+Description: Tests of perl-related description tags
diff --git a/t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description.pm b/t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description.pm
new file mode 100644
index 0000000..e86bca4
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description.pm
@@ -0,0 +1,5 @@
+# Dummy Perl module for lintian testing purposes.
+
+package Deb::Long::Description;
+
+return 1;
diff --git a/t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description/Proper.pm b/t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description/Proper.pm
new file mode 100644
index 0000000..67230b9
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/build-spec/orig/lib/Deb/Long/Description/Proper.pm
@@ -0,0 +1,5 @@
+# Dummy Perl module for lintian testing purposes.
+
+package Deb::Long::Description::Proper;
+
+return 1;
diff --git a/t/recipes/checks/fields/description/description-perl/eval/desc b/t/recipes/checks/fields/description/description-perl/eval/desc
new file mode 100644
index 0000000..9c7aaa4
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/eval/desc
@@ -0,0 +1,2 @@
+Testname: description-perl
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-perl/eval/hints b/t/recipes/checks/fields/description/description-perl/eval/hints
new file mode 100644
index 0000000..f9566f4
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-perl/eval/hints
@@ -0,0 +1 @@
+libdeb-long-description-perl (binary): perl-module-name-not-mentioned-in-description Deb::Long::Description
diff --git a/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/debian/control.in
new file mode 100644
index 0000000..ae4bdbd
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/debian/control.in
@@ -0,0 +1,117 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-full-stop
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis ends with a full-stop.
+ This description ends with a full-stop.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-no-full-stop
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis does not end with a full stop
+ This description does not end with a full stop
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-two-sentences
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis starts a sentence. Then starts another.
+ This description starts a sentence. Then starts another.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-etc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis ends with, etc.
+ This description ends with, etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-eg
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis contains, e.g. /foo/bar/baz.conf
+ This description contains, e.g. /foo/bar/baz.conf
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-eg-variant
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis contains, eg. /foo/bar/baz.conf
+ This description contains, eg. /foo/bar/baz.conf
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2-ellipsis
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis contains a 2-ellipsis .. and other words
+ This description contains a 2-ellipsis .. and other words
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3-ellipsis
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis contains a 3-ellipsis ... and other words
+ This description contains a 3-ellipsis ... and other words
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4-ellipsis
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis contains a 4-ellipsis .... and other words
+ This description contains a 4-ellipsis .... and other words
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-misspelt
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: This synopsis ends with mispelling of stretc.
+ This description ends with mispelling of stretc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/fill-values b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/fill-values
new file mode 100644
index 0000000..0daadc2
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-synopsis-might-not-be-phrased-properly
+Description: Tests for fullstop detection
diff --git a/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/desc b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/desc
new file mode 100644
index 0000000..cc9e633
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/desc
@@ -0,0 +1,2 @@
+Testname: description-synopsis-might-not-be-phrased-properly
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/hints b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/hints
new file mode 100644
index 0000000..d6611a9
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-synopsis-might-not-be-phrased-properly/eval/hints
@@ -0,0 +1,5 @@
+description-synopsis-might-not-be-phrased-properly-two-sentences (binary): synopsis-is-a-sentence "This synopsis starts a sentence. Then starts another."
+description-synopsis-might-not-be-phrased-properly-misspelt (binary): synopsis-is-a-sentence "This synopsis ends with mispelling of stretc."
+description-synopsis-might-not-be-phrased-properly-full-stop (binary): synopsis-is-a-sentence "This synopsis ends with a full-stop."
+description-synopsis-might-not-be-phrased-properly-4-ellipsis (binary): synopsis-is-a-sentence "This synopsis contains a 4-ellipsis .... and other words"
+description-synopsis-might-not-be-phrased-properly-2-ellipsis (binary): synopsis-is-a-sentence "This synopsis contains a 2-ellipsis .. and other words"
diff --git a/t/recipes/checks/fields/description/description-wording/build-spec/debian/control.in b/t/recipes/checks/fields/description/description-wording/build-spec/debian/control.in
new file mode 100644
index 0000000..3f6fb5b
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-wording/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. You should not install it like a regular package, we can guarantee
+ you that. This is a test package. This package does nothing useful at all.
+ It may be an empty package.
diff --git a/t/recipes/checks/fields/description/description-wording/build-spec/fill-values b/t/recipes/checks/fields/description/description-wording/build-spec/fill-values
new file mode 100644
index 0000000..85f0d6a
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-wording/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: description-wording
+Description: Tests for description wording
diff --git a/t/recipes/checks/fields/description/description-wording/eval/desc b/t/recipes/checks/fields/description/description-wording/eval/desc
new file mode 100644
index 0000000..a047232
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-wording/eval/desc
@@ -0,0 +1,2 @@
+Testname: description-wording
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/description-wording/eval/hints b/t/recipes/checks/fields/description/description-wording/eval/hints
new file mode 100644
index 0000000..412e2a7
--- /dev/null
+++ b/t/recipes/checks/fields/description/description-wording/eval/hints
@@ -0,0 +1 @@
+description-wording (binary): using-first-person-in-description line 3: we
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/eval/desc b/t/recipes/checks/fields/description/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..adbc1d9
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: fields/description
+See-Also:
+ Bug#497347
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/eval/hints b/t/recipes/checks/fields/description/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..193183c
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/eval/hints
@@ -0,0 +1,2 @@
+generic-dh-make-2008 (binary): extended-description-is-probably-too-short
+generic-dh-make-2008 (binary): description-is-dh_make-template
diff --git a/t/recipes/checks/fields/description/generic-dh-make-2008/eval/post-test b/t/recipes/checks/fields/description/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/description/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/control b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/rules b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/templates b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/fill-values b/t/recipes/checks/fields/description/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/fields/description/legacy-binary/eval/desc b/t/recipes/checks/fields/description/legacy-binary/eval/desc
new file mode 100644
index 0000000..cdb33ca
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/legacy-binary/eval/hints b/t/recipes/checks/fields/description/legacy-binary/eval/hints
new file mode 100644
index 0000000..fe61ed8
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/eval/hints
@@ -0,0 +1,4 @@
+binary-data (binary): capitalization-error-in-description subversion Subversion
+binary (binary): spelling-error-in-description dont don't
+binary (binary): description-contains-homepage line 7
+binary (binary): capitalization-error-in-description debian Debian
diff --git a/t/recipes/checks/fields/description/legacy-binary/eval/post-test b/t/recipes/checks/fields/description/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/control b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/fields/description/legacy-debconf/build-spec/fill-values b/t/recipes/checks/fields/description/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/fields/description/legacy-debconf/eval/desc b/t/recipes/checks/fields/description/legacy-debconf/eval/desc
new file mode 100644
index 0000000..905640f
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/legacy-debconf/eval/hints b/t/recipes/checks/fields/description/legacy-debconf/eval/hints
new file mode 100644
index 0000000..54027ec
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/eval/hints
@@ -0,0 +1 @@
+debconf-test (binary): extended-description-is-empty
diff --git a/t/recipes/checks/fields/description/legacy-debconf/eval/post-test b/t/recipes/checks/fields/description/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/eval/desc b/t/recipes/checks/fields/description/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..9c4c8ec
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/eval/hints b/t/recipes/checks/fields/description/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..376f471
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+only-etcfiles (binary): extended-description-is-empty
diff --git a/t/recipes/checks/fields/description/legacy-etcfiles/eval/post-test b/t/recipes/checks/fields/description/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/control b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/fill-values b/t/recipes/checks/fields/description/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/fields/description/legacy-filenames/eval/desc b/t/recipes/checks/fields/description/legacy-filenames/eval/desc
new file mode 100644
index 0000000..995240c
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/legacy-filenames/eval/hints b/t/recipes/checks/fields/description/legacy-filenames/eval/hints
new file mode 100644
index 0000000..3553bda
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): using-first-person-in-description line 1: I
diff --git a/t/recipes/checks/fields/description/legacy-filenames/eval/post-test b/t/recipes/checks/fields/description/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/control b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/rules b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/fields/description/legacy-relations/build-spec/fill-values b/t/recipes/checks/fields/description/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/fields/description/legacy-relations/eval/desc b/t/recipes/checks/fields/description/legacy-relations/eval/desc
new file mode 100644
index 0000000..d7b5846
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/legacy-relations/eval/hints b/t/recipes/checks/fields/description/legacy-relations/eval/hints
new file mode 100644
index 0000000..e509d1c
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/eval/hints
@@ -0,0 +1,2 @@
+relations-multiple-libs (binary): synopsis-is-a-sentence "Duplicate library dependency relationships."
+relations-multiple-libs (binary): description-synopsis-is-duplicated line 1
diff --git a/t/recipes/checks/fields/description/legacy-relations/eval/post-test b/t/recipes/checks/fields/description/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/description/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/description/spelling-multiword/build-spec/debian/control.in b/t/recipes/checks/fields/description/spelling-multiword/build-spec/debian/control.in
new file mode 100644
index 0000000..2826a24
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-multiword/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Spelling errors:
+ * Allows to
+ * An other error
+ * Debian/GNU Linux
+ * Permits to
+ * This packages
+ * This packages (again, but only tagged once)
+ .
+ Not errors:
+ * These packages
diff --git a/t/recipes/checks/fields/description/spelling-multiword/build-spec/fill-values b/t/recipes/checks/fields/description/spelling-multiword/build-spec/fill-values
new file mode 100644
index 0000000..edba989
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-multiword/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: spelling-multiword
+Description: Multi-word spelling errors detection
diff --git a/t/recipes/checks/fields/description/spelling-multiword/eval/desc b/t/recipes/checks/fields/description/spelling-multiword/eval/desc
new file mode 100644
index 0000000..7339c3b
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-multiword/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-multiword
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/spelling-multiword/eval/hints b/t/recipes/checks/fields/description/spelling-multiword/eval/hints
new file mode 100644
index 0000000..aa17173
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-multiword/eval/hints
@@ -0,0 +1,5 @@
+spelling-multiword (binary): spelling-error-in-description "This packages" "These packages"
+spelling-multiword (binary): spelling-error-in-description "Permits to" "Permits one to"
+spelling-multiword (binary): spelling-error-in-description "Debian/GNU Linux" "Debian GNU/Linux"
+spelling-multiword (binary): spelling-error-in-description "An other" "Another"
+spelling-multiword (binary): spelling-error-in-description "Allows to" "Allows one to"
diff --git a/t/recipes/checks/fields/description/spelling-package-name/build-spec/debian/control.in b/t/recipes/checks/fields/description/spelling-package-name/build-spec/debian/control.in
new file mode 100644
index 0000000..f032563
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-package-name/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: nam
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test to see if the spell checker realizes that nam is
+ not a spelling mistake, but the name of the package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/description/spelling-package-name/build-spec/fill-values b/t/recipes/checks/fields/description/spelling-package-name/build-spec/fill-values
new file mode 100644
index 0000000..2047e0d
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-package-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: spelling-package-name
+Description: Spell check test for excluding package name
diff --git a/t/recipes/checks/fields/description/spelling-package-name/eval/desc b/t/recipes/checks/fields/description/spelling-package-name/eval/desc
new file mode 100644
index 0000000..f1922f7
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-package-name/eval/desc
@@ -0,0 +1,4 @@
+Testname: spelling-package-name
+Test-Against:
+ spelling-error-in-description
+Check: fields/description
diff --git a/t/recipes/checks/fields/description/spelling-package-name/eval/hints b/t/recipes/checks/fields/description/spelling-package-name/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/description/spelling-package-name/eval/hints
diff --git a/t/recipes/checks/fields/description/squeezed-comma/build-spec/fill-values b/t/recipes/checks/fields/description/squeezed-comma/build-spec/fill-values
new file mode 100644
index 0000000..d4d5fcb
--- /dev/null
+++ b/t/recipes/checks/fields/description/squeezed-comma/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: squeezed-comma
+Description: Squeezed comma illustration ,without whitespace
diff --git a/t/recipes/checks/fields/description/squeezed-comma/eval/desc b/t/recipes/checks/fields/description/squeezed-comma/eval/desc
new file mode 100644
index 0000000..bea355f
--- /dev/null
+++ b/t/recipes/checks/fields/description/squeezed-comma/eval/desc
@@ -0,0 +1,3 @@
+Testname: squeezed-comma
+Check: fields/description
+See-Also: Bug#591665, Bug#591664
diff --git a/t/recipes/checks/fields/description/squeezed-comma/eval/hints b/t/recipes/checks/fields/description/squeezed-comma/eval/hints
new file mode 100644
index 0000000..bad9e41
--- /dev/null
+++ b/t/recipes/checks/fields/description/squeezed-comma/eval/hints
@@ -0,0 +1 @@
+squeezed-comma (binary): odd-mark-in-description comma not followed by whitespace (synopsis)
diff --git a/t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/debian/changelog.in b/t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/debian/changelog.in
new file mode 100644
index 0000000..227f65f
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) squeeze-backports; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.1) experimental; urgency=low
+
+ * First upload to experimental.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/fill-values b/t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/fill-values
new file mode 100644
index 0000000..486ac79
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-backport/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: changelog-file-backport
+Description: Check backport
+# Overrides the "data/changes-file/known-dists"
+# data file to avoid updating the test every release
diff --git a/t/recipes/checks/fields/distribution/changelog-file-backport/eval/desc b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/desc
new file mode 100644
index 0000000..6da32fd
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/desc
@@ -0,0 +1,8 @@
+Testname: changelog-file-backport
+Options: --include-dir ./lintian-include-dir
+Profile: lintian-test
+Test-Against:
+ upload-has-backports-version-number
+Check: fields/distribution
+# Overrides the "data/changes-file/known-dists"
+# data file to avoid updating the test every release
diff --git a/t/recipes/checks/fields/distribution/changelog-file-backport/eval/hints b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/hints
new file mode 100644
index 0000000..6e7a287
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/hints
@@ -0,0 +1,2 @@
+changelog-file-backport (changes): backports-upload-has-incorrect-version-number 1.0 squeeze-backports
+changelog-file-backport (changes): backports-changes-missing
diff --git a/t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists
new file mode 100644
index 0000000..ebbedbd
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists
@@ -0,0 +1,23 @@
+# A list of Debian distributions, both code names and their aliases
+# - Note that common "extensions"[1] are stripped before checking for the
+# distribution name (except for "sid", "unstable" and "experimental").
+#
+# [1] -backports, -security, -proposed-updates etc. See checks/changes-file
+# for the complete list.
+
+
+# Codenames
+squeeze
+wheezy
+jessie
+stretch
+buster
+sid
+
+# Aliases
+oldstable
+stable
+testing
+unstable
+experimental
+
diff --git a/t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/debian/changelog.in b/t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/debian/changelog.in
new file mode 100644
index 0000000..83189f2
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) stable-proposed-updates; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/fill-values b/t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/fill-values
new file mode 100644
index 0000000..e460a9c
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-stable/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: changelog-file-stable
+Skeleton: upload-non-native
+Version: 1.0-1etch1
+Description: Test a stable-proposed-updates package
diff --git a/t/recipes/checks/fields/distribution/changelog-file-stable/eval/desc b/t/recipes/checks/fields/distribution/changelog-file-stable/eval/desc
new file mode 100644
index 0000000..4d8a610
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-stable/eval/desc
@@ -0,0 +1,3 @@
+Testname: changelog-file-stable
+Test-Against: bad-distribution-in-changes-file
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/changelog-file-stable/eval/hints b/t/recipes/checks/fields/distribution/changelog-file-stable/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changelog-file-stable/eval/hints
diff --git a/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/fill-values b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/fill-values
new file mode 100644
index 0000000..0783088
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: changes
+Testname: changes-bad-ubuntu-distribution
+Version: 1.0+ubuntu2
+Description: Test for invalid Ubuntu distribution
diff --git a/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/test.changes.in b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/test.changes.in
new file mode 100644
index 0000000..e3f1128
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: wispy
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/desc b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/desc
new file mode 100644
index 0000000..b018846
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/desc
@@ -0,0 +1,3 @@
+Testname: changes-bad-ubuntu-distribution
+Profile: ubuntu/main
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/hints b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/hints
new file mode 100644
index 0000000..9703828
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-bad-ubuntu-distribution/eval/hints
@@ -0,0 +1 @@
+changes-bad-ubuntu-distribution (changes): bad-distribution-in-changes-file wispy
diff --git a/t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/fill-values b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..7263201
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-distribution-mismatch
+Description: Test for unstable package to be installed in stable
diff --git a/t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/test.changes.in b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/test.changes.in
new file mode 100644
index 0000000..6801232
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/build-spec/test.changes.in
@@ -0,0 +1,16 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: stable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
+Changes:
+ [% $source %] ([% $version %]) unstable; urgency=low
+ .
+ * I used the wrong argument to `sbuild -d`.
diff --git a/t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/desc b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/desc
new file mode 100644
index 0000000..6dc5d59
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-distribution-mismatch
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/hints b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/hints
new file mode 100644
index 0000000..4bd5c58
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-distribution-mismatch/eval/hints
@@ -0,0 +1 @@
+changes-distribution-mismatch (changes): distribution-and-changes-mismatch stable unstable
diff --git a/t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/fill-values b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..d4d4d3d
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-experimental-mismatch
+Description: Test for experimental package to be installed in unstable
diff --git a/t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/test.changes.in b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/test.changes.in
new file mode 100644
index 0000000..1476333
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/build-spec/test.changes.in
@@ -0,0 +1,16 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
+Changes:
+ [% $source %] ([% $version %]) experimental; urgency=low
+ .
+ * I used the wrong argument to `sbuild -d`.
diff --git a/t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/desc b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/desc
new file mode 100644
index 0000000..5c94d81
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-experimental-mismatch
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/hints b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/hints
new file mode 100644
index 0000000..3a32b36
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-experimental-mismatch/eval/hints
@@ -0,0 +1 @@
+changes-experimental-mismatch (changes): distribution-and-experimental-mismatch
diff --git a/t/recipes/checks/fields/distribution/changes-unreleased/build-spec/fill-values b/t/recipes/checks/fields/distribution/changes-unreleased/build-spec/fill-values
new file mode 100644
index 0000000..4359e34
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-unreleased/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-unreleased
+Description: Test for UNRELEASED package uploaded to unstable
diff --git a/t/recipes/checks/fields/distribution/changes-unreleased/build-spec/test.changes.in b/t/recipes/checks/fields/distribution/changes-unreleased/build-spec/test.changes.in
new file mode 100644
index 0000000..4a2eb46
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-unreleased/build-spec/test.changes.in
@@ -0,0 +1,16 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
+Changes:
+ [% $source %] ([% $version %]) UNRELEASED; urgency=low
+ .
+ * I'm still working on this package, do not upload.
diff --git a/t/recipes/checks/fields/distribution/changes-unreleased/eval/desc b/t/recipes/checks/fields/distribution/changes-unreleased/eval/desc
new file mode 100644
index 0000000..f4cab4a
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-unreleased/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-unreleased
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/changes-unreleased/eval/hints b/t/recipes/checks/fields/distribution/changes-unreleased/eval/hints
new file mode 100644
index 0000000..4f4f4f9
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-unreleased/eval/hints
@@ -0,0 +1 @@
+changes-unreleased (changes): unreleased-changes
diff --git a/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/build-spec/fill-values b/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/build-spec/fill-values
new file mode 100644
index 0000000..cf7513a
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changes-upload-has-backports-version-number
+Version: 1.0~bpo9+1
+Description: Check for backports that have an incorrect Distribution
diff --git a/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/desc b/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/desc
new file mode 100644
index 0000000..fd61006
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-upload-has-backports-version-number
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/hints b/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/hints
new file mode 100644
index 0000000..467b083
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/changes-upload-has-backports-version-number/eval/hints
@@ -0,0 +1 @@
+changes-upload-has-backports-version-number (changes): upload-has-backports-version-number 1.0~bpo9+1 unstable
diff --git a/t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/debian/changelog.in b/t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/debian/changelog.in
new file mode 100644
index 0000000..c862408
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) stable foo-backportss bar foo; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/fill-values b/t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/fill-values
new file mode 100644
index 0000000..4671982
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-multiple-bad/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: distribution-multiple-bad
+Description: Multiple distributions with at least one bad one
diff --git a/t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/desc b/t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/desc
new file mode 100644
index 0000000..0ca1362
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/desc
@@ -0,0 +1,3 @@
+Testname: distribution-multiple-bad
+See-Also: Debian Bug#514853
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/hints b/t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/hints
new file mode 100644
index 0000000..84c8480
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-multiple-bad/eval/hints
@@ -0,0 +1,6 @@
+distribution-multiple-bad (changes): multiple-distributions-in-changes-file stable foo-backportss bar foo
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo-backportss
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo
+distribution-multiple-bad (changes): bad-distribution-in-changes-file bar
+distribution-multiple-bad (changes): backports-upload-has-incorrect-version-number 1.0 foo-backportss
+distribution-multiple-bad (changes): backports-changes-missing
diff --git a/t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/debian/changelog.in b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/debian/changelog.in
new file mode 100644
index 0000000..0f4a7b6
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) lucid; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/fill-values b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/fill-values
new file mode 100644
index 0000000..47644cb
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: distribution-ubuntu-native
+Description: Check *.changes distribution checking for Ubuntu
diff --git a/t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/desc b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/desc
new file mode 100644
index 0000000..50ff62b
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/desc
@@ -0,0 +1,5 @@
+Testname: distribution-ubuntu-native
+Test-Against: bad-distribution-in-changes-file
+Profile: ubuntu/main
+See-Also: Debian Bug#507740
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/hints b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/distribution-ubuntu-native/eval/hints
diff --git a/t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/debian/changelog.in b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b673fbc
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) lucid; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/fill-values b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/fill-values
new file mode 100644
index 0000000..3803ec6
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nmu-ubuntu-native
+Description: Test NMU tag suppression for Ubuntu native packages
diff --git a/t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/desc b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/desc
new file mode 100644
index 0000000..2c7f7b7
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/desc
@@ -0,0 +1,5 @@
+Testname: nmu-ubuntu-native
+Profile: ubuntu/main
+Test-Against: bad-distribution-in-changes-file
+See-Also: Debian Bug #507740
+Check: fields/distribution
diff --git a/t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/hints b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/distribution/nmu-ubuntu-native/eval/hints
diff --git a/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/debian/control.in b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/debian/control.in
new file mode 100644
index 0000000..a11db87
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+XS-DM-Upload-Allowed: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/fill-values b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/fill-values
new file mode 100644
index 0000000..041f85b
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-dmua
+Description: Test for invalid DMUA field
diff --git a/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/desc b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/desc
new file mode 100644
index 0000000..9fb5923
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-dmua
+Check: fields/dm-upload-allowed
diff --git a/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/hints b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/hints
new file mode 100644
index 0000000..48b5990
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/fields-dmua/eval/hints
@@ -0,0 +1,2 @@
+fields-dmua (source): malformed-dm-upload-allowed no
+fields-dmua (source): dm-upload-allowed-is-obsolete
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/control b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/rules b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/templates b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/fill-values b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/desc b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/desc
new file mode 100644
index 0000000..61595b9
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: fields/dm-upload-allowed
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/hints b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/hints
new file mode 100644
index 0000000..077d63f
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (source): dm-upload-allowed-is-obsolete
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/post-test b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/control b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..57a489c
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description uses only UTF-8 high bytes chars.
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/fill-values b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/desc b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/desc
new file mode 100644
index 0000000..332cbb6
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: fields/dm-upload-allowed
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/hints b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/hints
new file mode 100644
index 0000000..48399b5
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/hints
@@ -0,0 +1,2 @@
+foo++ (source): malformed-dm-upload-allowed no
+foo++ (source): dm-upload-allowed-is-obsolete
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/post-test b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..0496acb
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: fields/dm-upload-allowed
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..e7d48a3
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,2 @@
+maintainer-scripts (source): malformed-dm-upload-allowed Yes
+maintainer-scripts (source): dm-upload-allowed-is-obsolete
diff --git a/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/dm-upload-allowed/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/empty/empty-section/build-spec/fill-values b/t/recipes/checks/fields/empty/empty-section/build-spec/fill-values
new file mode 100644
index 0000000..3581ea6
--- /dev/null
+++ b/t/recipes/checks/fields/empty/empty-section/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: empty-section
+Section:
+Description: Test for package with empty section field
diff --git a/t/recipes/checks/fields/empty/empty-section/eval/desc b/t/recipes/checks/fields/empty/empty-section/eval/desc
new file mode 100644
index 0000000..e2d053a
--- /dev/null
+++ b/t/recipes/checks/fields/empty/empty-section/eval/desc
@@ -0,0 +1,2 @@
+Testname: empty-section
+Check: fields/empty
diff --git a/t/recipes/checks/fields/empty/empty-section/eval/hints b/t/recipes/checks/fields/empty/empty-section/eval/hints
new file mode 100644
index 0000000..f813c2f
--- /dev/null
+++ b/t/recipes/checks/fields/empty/empty-section/eval/hints
@@ -0,0 +1 @@
+empty-section (binary): empty-field Section
diff --git a/t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/debian/control.in b/t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/debian/control.in
new file mode 100644
index 0000000..1dffa2a
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/debian/control.in
@@ -0,0 +1,21 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Essential: yes
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ In the, unlikely, event that dpkg-gencontrol starts considering the
+ source-level Essential field this test should break so that lintian is
+ fixed accordingly.
diff --git a/t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/fill-values b/t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/fill-values
new file mode 100644
index 0000000..eb113c6
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential-yes-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-essential-yes-source
+Description: Canary test for Essential field-related checks and assumptions
diff --git a/t/recipes/checks/fields/essential/fields-essential-yes-source/eval/desc b/t/recipes/checks/fields/essential/fields-essential-yes-source/eval/desc
new file mode 100644
index 0000000..c7a7d6b
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential-yes-source/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-essential-yes-source
+Test-Against:
+ new-essential-package
+ essential-in-source-package
+Check: fields/essential
diff --git a/t/recipes/checks/fields/essential/fields-essential-yes-source/eval/hints b/t/recipes/checks/fields/essential/fields-essential-yes-source/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential-yes-source/eval/hints
diff --git a/t/recipes/checks/fields/essential/fields-essential/build-spec/debian/control.in b/t/recipes/checks/fields/essential/fields-essential/build-spec/debian/control.in
new file mode 100644
index 0000000..185ef5f
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+XS-Essential: no
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: [% $source %]
+Essential: yes
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]2
+Essential: maybe
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- maybe
+ This is another test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/essential/fields-essential/build-spec/debian/rules b/t/recipes/checks/fields/essential/fields-essential/build-spec/debian/rules
new file mode 100755
index 0000000..41937bf
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+pkg=fields-essential
+export DH_VERBOSE=1
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb --package=$(pkg)
+ dpkg-deb --nocheck --build debian/$(pkg)2 ../$(pkg)2_1.0_all.deb
diff --git a/t/recipes/checks/fields/essential/fields-essential/build-spec/fill-values b/t/recipes/checks/fields/essential/fields-essential/build-spec/fill-values
new file mode 100644
index 0000000..ca276e8
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-essential
+Description: Test for Essential field-related errors
diff --git a/t/recipes/checks/fields/essential/fields-essential/eval/desc b/t/recipes/checks/fields/essential/fields-essential/eval/desc
new file mode 100644
index 0000000..c67c837
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-essential
+Check: fields/essential
diff --git a/t/recipes/checks/fields/essential/fields-essential/eval/hints b/t/recipes/checks/fields/essential/fields-essential/eval/hints
new file mode 100644
index 0000000..7b55a71
--- /dev/null
+++ b/t/recipes/checks/fields/essential/fields-essential/eval/hints
@@ -0,0 +1,4 @@
+fields-essential (source): essential-no-not-needed
+fields-essential (source): essential-in-source-package
+fields-essential2 (binary): unknown-essential-value
+fields-essential (binary): new-essential-package
diff --git a/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/control b/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/rules b/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/essential/legacy-fields/build-spec/fill-values b/t/recipes/checks/fields/essential/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/fields/essential/legacy-fields/eval/desc b/t/recipes/checks/fields/essential/legacy-fields/eval/desc
new file mode 100644
index 0000000..6e64c32
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: fields/essential
diff --git a/t/recipes/checks/fields/essential/legacy-fields/eval/hints b/t/recipes/checks/fields/essential/legacy-fields/eval/hints
new file mode 100644
index 0000000..dd84e23
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/eval/hints
@@ -0,0 +1,2 @@
+fields (binary): essential-no-not-needed
+another-version (binary): new-essential-package
diff --git a/t/recipes/checks/fields/essential/legacy-fields/eval/post-test b/t/recipes/checks/fields/essential/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/essential/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/format/changes-missing-format/build-spec/fill-values b/t/recipes/checks/fields/format/changes-missing-format/build-spec/fill-values
new file mode 100644
index 0000000..b6a6f14
--- /dev/null
+++ b/t/recipes/checks/fields/format/changes-missing-format/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-missing-format
+Description: Test for missing format field
diff --git a/t/recipes/checks/fields/format/changes-missing-format/build-spec/test.changes.in b/t/recipes/checks/fields/format/changes-missing-format/build-spec/test.changes.in
new file mode 100644
index 0000000..e571bbc
--- /dev/null
+++ b/t/recipes/checks/fields/format/changes-missing-format/build-spec/test.changes.in
@@ -0,0 +1,11 @@
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/format/changes-missing-format/eval/desc b/t/recipes/checks/fields/format/changes-missing-format/eval/desc
new file mode 100644
index 0000000..3a7d96a
--- /dev/null
+++ b/t/recipes/checks/fields/format/changes-missing-format/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-missing-format
+Check: fields/format
diff --git a/t/recipes/checks/fields/format/changes-missing-format/eval/hints b/t/recipes/checks/fields/format/changes-missing-format/eval/hints
new file mode 100644
index 0000000..77b46fc
--- /dev/null
+++ b/t/recipes/checks/fields/format/changes-missing-format/eval/hints
@@ -0,0 +1 @@
+changes-missing-format (changes): malformed-changes-file
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/patches/wig-pen b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
new file mode 100644
index 0000000..a452b53
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
@@ -0,0 +1,5 @@
+--- upstream/README
++++ debian/README
+@@ -1 +1 @@
+-README
++README for wig&pen
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/rules b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/substvars b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/fill-values b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/fill-values
new file mode 100644
index 0000000..edb39d9
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-wig-pen
+Skeleton: upload-non-native
+Source-Format: 2.0
+Description: Check for cruft added in a 2.0 package
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/orig/README b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/pre-build b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/pre-build
new file mode 100755
index 0000000..78f359c
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/eval/desc b/t/recipes/checks/fields/format/cruft-general-wig-pen/eval/desc
new file mode 100644
index 0000000..62bec19
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-wig-pen
+Check: fields/format
diff --git a/t/recipes/checks/fields/format/cruft-general-wig-pen/eval/hints b/t/recipes/checks/fields/format/cruft-general-wig-pen/eval/hints
new file mode 100644
index 0000000..42893ac
--- /dev/null
+++ b/t/recipes/checks/fields/format/cruft-general-wig-pen/eval/hints
@@ -0,0 +1 @@
+cruft-general-wig-pen (source): unsupported-source-format 2.0
diff --git a/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..021d60a
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Homepage: https://www.bioconductor.org/packages/release/bioc/html/foo.html
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/fill-values
new file mode 100644
index 0000000..1163b6c
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-bioconductor-homepage
+Description: Bioconductor Homepage URLs should be canonical
diff --git a/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/desc
new file mode 100644
index 0000000..1fb9c13
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-bioconductor-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/hints
new file mode 100644
index 0000000..a4360c3
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-bioconductor-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-bioconductor-homepage (source): homepage-for-bioconductor-package-not-canonical https://www.bioconductor.org/packages/release/bioc/html/foo.html
+fields-bioconductor-homepage (binary): homepage-for-bioconductor-package-not-canonical https://www.bioconductor.org/packages/release/bioc/html/foo.html
diff --git a/t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..5ddc664
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://search.cpan.org/Foo-Bar-9.0_01/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/fill-values
new file mode 100644
index 0000000..11db86e
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cpan-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-cpan-homepage
+Description: CPAN Homepage URLs shouldn't have versions
diff --git a/t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/desc
new file mode 100644
index 0000000..4a54895
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-cpan-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/hints
new file mode 100644
index 0000000..5bf09e5
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cpan-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-cpan-homepage (source): homepage-for-cpan-package-contains-version http://search.cpan.org/Foo-Bar-9.0_01/
+fields-cpan-homepage (binary): homepage-for-cpan-package-contains-version http://search.cpan.org/Foo-Bar-9.0_01/
diff --git a/t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..56d9fdc
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://cran.r-project.org/web/packages/foo/index.html
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/fill-values
new file mode 100644
index 0000000..7e4e067
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cran-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-cran-homepage
+Description: CRAN Homepage URLs should be canonical
diff --git a/t/recipes/checks/fields/homepage/fields-cran-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-cran-homepage/eval/desc
new file mode 100644
index 0000000..d4e9502
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cran-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-cran-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-cran-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-cran-homepage/eval/hints
new file mode 100644
index 0000000..39c4d54
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-cran-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-cran-homepage (source): homepage-for-cran-package-not-canonical https://cran.r-project.org/web/packages/foo/index.html
+fields-cran-homepage (binary): homepage-for-cran-package-not-canonical https://cran.r-project.org/web/packages/foo/index.html
diff --git a/t/recipes/checks/fields/homepage/fields-general/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-general/build-spec/debian/control.in
new file mode 100644
index 0000000..f5aa07a
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-general/build-spec/debian/control.in
@@ -0,0 +1,46 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+# Whoops, typo
+Homepage: ttp://lintian.debian.org/
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dbg)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (dbg)g.
+# ... and some unneeded <>
+Homepage: <http://lintian.debian.org/>
+
+Package: [% $source %]-debug
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (debug)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (debug).
+
diff --git a/t/recipes/checks/fields/homepage/fields-general/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-general/build-spec/fill-values
new file mode 100644
index 0000000..11b0c69
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-general
+Description: Test for tags related to minor field issues
diff --git a/t/recipes/checks/fields/homepage/fields-general/eval/desc b/t/recipes/checks/fields/homepage/fields-general/eval/desc
new file mode 100644
index 0000000..4aa98da
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-general/eval/hints b/t/recipes/checks/fields/homepage/fields-general/eval/hints
new file mode 100644
index 0000000..49d8cba
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-general/eval/hints
@@ -0,0 +1,5 @@
+fields-general (source): homepage-field-uses-insecure-uri http://lintian.debian.org/
+fields-general-debug (binary): homepage-field-uses-insecure-uri http://lintian.debian.org/
+fields-general-dbg (binary): superfluous-clutter-in-homepage <http://lintian.debian.org/>
+fields-general-dbg (binary): homepage-field-uses-insecure-uri <http://lintian.debian.org/>
+fields-general (binary): bad-homepage ttp://lintian.debian.org/
diff --git a/t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..f6ac160
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://github.com/foo/bar.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/fill-values
new file mode 100644
index 0000000..e4c5602
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-github-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-github-homepage
+Description: GitHub homepage URL should't end with .git
diff --git a/t/recipes/checks/fields/homepage/fields-github-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-github-homepage/eval/desc
new file mode 100644
index 0000000..a1c96fa
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-github-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-github-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-github-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-github-homepage/eval/hints
new file mode 100644
index 0000000..e4dd4ef
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-github-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-github-homepage (source): homepage-github-url-ends-with-dot-git https://github.com/foo/bar.git
+fields-github-homepage (binary): homepage-github-url-ends-with-dot-git https://github.com/foo/bar.git
diff --git a/t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..9912e11
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://gitlab.com/foo/bar.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/fill-values
new file mode 100644
index 0000000..5e923ca
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-gitlab-homepage
+Description: GitLab homepage URL should't end with .git
diff --git a/t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/desc
new file mode 100644
index 0000000..cbef9c8
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-gitlab-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/hints
new file mode 100644
index 0000000..e1bc8b1
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-gitlab-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-gitlab-homepage (source): homepage-gitlab-url-ends-with-dot-git https://gitlab.com/foo/bar.git
+fields-gitlab-homepage (binary): homepage-gitlab-url-ends-with-dot-git https://gitlab.com/foo/bar.git
diff --git a/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/debian/control.in
new file mode 100644
index 0000000..4b9a679
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://github.com/insecure/uri
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/fill-values
new file mode 100644
index 0000000..f9c6f34
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-homepage-field-uses-insecure-uri
+Description: Test for Homepage fields using insecure URIs
diff --git a/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/desc b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/desc
new file mode 100644
index 0000000..0670f2a
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-homepage-field-uses-insecure-uri
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/hints b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/hints
new file mode 100644
index 0000000..ac8a0d2
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-homepage-field-uses-insecure-uri/eval/hints
@@ -0,0 +1,2 @@
+fields-homepage-field-uses-insecure-uri (source): homepage-field-uses-insecure-uri http://github.com/insecure/uri
+fields-homepage-field-uses-insecure-uri (binary): homepage-field-uses-insecure-uri http://github.com/insecure/uri
diff --git a/t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..62f3235
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/fill-values
new file mode 100644
index 0000000..f185ac4
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: fields-no-homepage
+Skeleton: upload-non-native
+Description: Test pedantic check for no Homepage field
diff --git a/t/recipes/checks/fields/homepage/fields-no-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-no-homepage/eval/desc
new file mode 100644
index 0000000..b98608e
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-homepage/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-no-homepage
+Test-Against: homepage-field-uses-insecure-uri
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-no-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-no-homepage/eval/hints
new file mode 100644
index 0000000..a70760a
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-homepage/eval/hints
@@ -0,0 +1 @@
+fields-no-homepage (source): no-homepage-field
diff --git a/t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..a29351f
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+Homepage: http://lintian.debian.org
diff --git a/t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/fill-values
new file mode 100644
index 0000000..7324214
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-source-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: fields-no-source-homepage
+Skeleton: upload-non-native
+Description: Test check for no Homepage field in source
diff --git a/t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/desc
new file mode 100644
index 0000000..fe34e9c
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-no-source-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/hints
new file mode 100644
index 0000000..a2cf9f3
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-no-source-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-no-source-homepage (source): homepage-in-binary-package fields-no-source-homepage
+fields-no-source-homepage (binary): homepage-field-uses-insecure-uri http://lintian.debian.org
diff --git a/t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..3f0a4ac
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://salsa.debian.org/foo/bar.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/fill-values b/t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/fill-values
new file mode 100644
index 0000000..a0f671f
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-salsa-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-salsa-homepage
+Description: Salsa homepage URL should't end with .git
diff --git a/t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/desc b/t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/desc
new file mode 100644
index 0000000..514eb62
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-salsa-homepage
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/hints b/t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/hints
new file mode 100644
index 0000000..b87b338
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/fields-salsa-homepage/eval/hints
@@ -0,0 +1,2 @@
+fields-salsa-homepage (source): homepage-salsa-url-ends-with-dot-git https://salsa.debian.org/foo/bar.git
+fields-salsa-homepage (binary): homepage-salsa-url-ends-with-dot-git https://salsa.debian.org/foo/bar.git
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/debian/control.in
new file mode 100644
index 0000000..d6ef053
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://ftp.gnu.org/gnu/aspell/dict/ar/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/fill-values b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/fill-values
new file mode 100644
index 0000000..5f2cfed
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: homepage-refers-to-filesystem-listing
+Description: Check for packages pointing to a directory listing
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/desc b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/desc
new file mode 100644
index 0000000..193e661
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/desc
@@ -0,0 +1,2 @@
+Testname: homepage-refers-to-filesystem-listing
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/hints b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/hints
new file mode 100644
index 0000000..5648438
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-filesystem-listing/eval/hints
@@ -0,0 +1,2 @@
+homepage-refers-to-filesystem-listing (source): homepage-refers-to-filesystem-listing http://ftp.gnu.org/gnu/aspell/dict/ar/
+homepage-refers-to-filesystem-listing (binary): homepage-refers-to-filesystem-listing http://ftp.gnu.org/gnu/aspell/dict/ar/
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/debian/control.in b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/debian/control.in
new file mode 100644
index 0000000..0427236
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://alioth.debian.org/foo/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/fill-values b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/fill-values
new file mode 100644
index 0000000..9380c53
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: homepage-refers-to-obsolete-debian-infrastructure
+Description: Check for packages with deprecated Homepage fields
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/desc b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/desc
new file mode 100644
index 0000000..ebf256d
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/desc
@@ -0,0 +1,2 @@
+Testname: homepage-refers-to-obsolete-debian-infrastructure
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/hints b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/hints
new file mode 100644
index 0000000..137fec4
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/homepage-refers-to-obsolete-debian-infrastructure/eval/hints
@@ -0,0 +1,2 @@
+homepage-refers-to-obsolete-debian-infrastructure (source): homepage-refers-to-obsolete-debian-infrastructure https://alioth.debian.org/foo/
+homepage-refers-to-obsolete-debian-infrastructure (binary): homepage-refers-to-obsolete-debian-infrastructure https://alioth.debian.org/foo/
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/control b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/rules b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/templates b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/fill-values b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/eval/desc b/t/recipes/checks/fields/homepage/legacy-binary/eval/desc
new file mode 100644
index 0000000..6c379cc
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/eval/hints b/t/recipes/checks/fields/homepage/legacy-binary/eval/hints
new file mode 100644
index 0000000..2d1d7a5
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/eval/hints
@@ -0,0 +1,4 @@
+binary (source): homepage-field-uses-insecure-uri http://lintian.debian.org/
+binary-data (binary): homepage-field-uses-insecure-uri http://lintian.debian.org/
+binary (binary): superfluous-clutter-in-homepage <http://lintian.debian.org/>
+binary (binary): homepage-field-uses-insecure-uri <http://lintian.debian.org/>
diff --git a/t/recipes/checks/fields/homepage/legacy-binary/eval/post-test b/t/recipes/checks/fields/homepage/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/control b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/rules b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/build-spec/fill-values b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/eval/desc b/t/recipes/checks/fields/homepage/legacy-relations/eval/desc
new file mode 100644
index 0000000..e6c2700
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: fields/homepage
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/eval/hints b/t/recipes/checks/fields/homepage/legacy-relations/eval/hints
new file mode 100644
index 0000000..c25ed8d
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/eval/hints
@@ -0,0 +1,3 @@
+relations (source): bad-homepage lintian.debian.org
+relations-multiple-libs (binary): bad-homepage lintian.debian.org
+relations (binary): bad-homepage lintian.debian.org
diff --git a/t/recipes/checks/fields/homepage/legacy-relations/eval/post-test b/t/recipes/checks/fields/homepage/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/homepage/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/debian/control.in b/t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/debian/control.in
new file mode 100644
index 0000000..e7475d5
--- /dev/null
+++ b/t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Package-Type: udeb
+Depends: ${misc:Depends},
+Installer-Menu-Item: network
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/fill-values b/t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/fill-values
new file mode 100644
index 0000000..62f644c
--- /dev/null
+++ b/t/recipes/checks/fields/installer-menu-item/fields-udeb/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-udeb
+Description: Test for various udeb field issues
diff --git a/t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/desc b/t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/desc
new file mode 100644
index 0000000..e739da0
--- /dev/null
+++ b/t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-udeb
+Check: fields/installer-menu-item
diff --git a/t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/hints b/t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/hints
new file mode 100644
index 0000000..19c8f88
--- /dev/null
+++ b/t/recipes/checks/fields/installer-menu-item/fields-udeb/eval/hints
@@ -0,0 +1 @@
+fields-udeb (udeb): bad-menu-item network
diff --git a/t/recipes/checks/fields/length/depends-field-too-long/build-spec/debian/control.in b/t/recipes/checks/fields/length/depends-field-too-long/build-spec/debian/control.in
new file mode 100644
index 0000000..9f339c0
--- /dev/null
+++ b/t/recipes/checks/fields/length/depends-field-too-long/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, parl-desktop, aspell-en, aspell-eo, firefox-esr-l10n-ach, firefox-esr-l10n-af, firefox-esr-l10n-an, firefox-esr-l10n-ar, firefox-esr-l10n-ast, firefox-esr-l10n-az, firefox-esr-l10n-be, firefox-esr-l10n-bg, firefox-esr-l10n-bn, firefox-esr-l10n-br, firefox-esr-l10n-bs, firefox-esr-l10n-ca, firefox-esr-l10n-cak, firefox-esr-l10n-cs, firefox-esr-l10n-cy, firefox-esr-l10n-da, firefox-esr-l10n-de, firefox-esr-l10n-dsb, firefox-esr-l10n-el, firefox-esr-l10n-en-ca, firefox-esr-l10n-en-gb, firefox-esr-l10n-eo, firefox-esr-l10n-es-ar, firefox-esr-l10n-es-cl, firefox-esr-l10n-es-es, firefox-esr-l10n-es-mx, firefox-esr-l10n-et, firefox-esr-l10n-eu, firefox-esr-l10n-fa, firefox-esr-l10n-ff, firefox-esr-l10n-fi, firefox-esr-l10n-fr, firefox-esr-l10n-fy-nl, firefox-esr-l10n-ga-ie, firefox-esr-l10n-gd, firefox-esr-l10n-gl, firefox-esr-l10n-gn, firefox-esr-l10n-gu-in, firefox-esr-l10n-he, firefox-esr-l10n-hi-in, firefox-esr-l10n-hr, firefox-esr-l10n-hsb, firefox-esr-l10n-hu, firefox-esr-l10n-hy-am, firefox-esr-l10n-ia, firefox-esr-l10n-id, firefox-esr-l10n-is, firefox-esr-l10n-it, firefox-esr-l10n-ja, firefox-esr-l10n-ka, firefox-esr-l10n-kab, firefox-esr-l10n-kk, firefox-esr-l10n-km, firefox-esr-l10n-kn, firefox-esr-l10n-ko, firefox-esr-l10n-lij, firefox-esr-l10n-lt, firefox-esr-l10n-lv, firefox-esr-l10n-mk, firefox-esr-l10n-mr, firefox-esr-l10n-ms, firefox-esr-l10n-my, firefox-esr-l10n-nb-no, firefox-esr-l10n-ne-np, firefox-esr-l10n-nl, firefox-esr-l10n-nn-no, firefox-esr-l10n-oc, firefox-esr-l10n-pa-in, firefox-esr-l10n-pl, firefox-esr-l10n-pt-br, firefox-esr-l10n-pt-pt, firefox-esr-l10n-rm, firefox-esr-l10n-ro, firefox-esr-l10n-ru, firefox-esr-l10n-si, firefox-esr-l10n-sk, firefox-esr-l10n-sl, firefox-esr-l10n-son, firefox-esr-l10n-sq, firefox-esr-l10n-sr, firefox-esr-l10n-sv-se, firefox-esr-l10n-ta, firefox-esr-l10n-te, firefox-esr-l10n-th, firefox-esr-l10n-tr, firefox-esr-l10n-uk, firefox-esr-l10n-ur, firefox-esr-l10n-uz, firefox-esr-l10n-vi, firefox-esr-l10n-xh, firefox-esr-l10n-zh-cn, firefox-esr-l10n-zh-tw, hunspell-af, hunspell-an, hunspell-ar, hunspell-be, hunspell-bg, hunspell-bn, hunspell-bo, hunspell-br, hunspell-bs, hunspell-ca, hunspell-cs, hunspell-de-at, hunspell-de-ch, hunspell-de-de, hunspell-dz, hunspell-el, hunspell-en-au, hunspell-en-ca, hunspell-en-gb, hunspell-en-us, hunspell-en-za, hunspell-es, hunspell-eu, hunspell-fr-classical, hunspell-gd, hunspell-gl-es, hunspell-gu, hunspell-gug, hunspell-he, hunspell-hi, hunspell-hr, hunspell-hu, hunspell-id, hunspell-is, hunspell-it, hunspell-kk, hunspell-kmr, hunspell-ko, hunspell-lo, hunspell-lt, hunspell-lv, hunspell-ml, hunspell-ne, hunspell-nl, hunspell-no, hunspell-oc, hunspell-pl, hunspell-pt-br, hunspell-pt-pt, hunspell-ro, hunspell-ru, hunspell-se, hunspell-si, hunspell-sk, hunspell-sl, hunspell-sr, hunspell-sv, hunspell-sw, hunspell-te, hunspell-th, hunspell-uk, hunspell-uz, hunspell-vi, hyphen-af, hyphen-as, hyphen-bn, hyphen-da, hyphen-de, hyphen-en-gb, hyphen-en-us, hyphen-kn, hyphen-mr, hyphen-pa, hyphen-ta, hyphen-zu, iamerican, ibritish, ibulgarian, icatalan, iczech, idanish, idutch, iesperanto, iestonian, ifaroese, ifrench, igaelic, igalician-minimos, ihungarian, iirish, iitalian, ilithuanian, imanx, ingerman, inorwegian, iogerman, ipolish, iportuguese, irussian, ispanish, iswedish, iswiss, itagalog, iukrainian, libreoffice-l10n-af, libreoffice-l10n-am, libreoffice-l10n-ar, libreoffice-l10n-as, libreoffice-l10n-ast, libreoffice-l10n-be, libreoffice-l10n-bg, libreoffice-l10n-bn, libreoffice-l10n-br, libreoffice-l10n-bs, libreoffice-l10n-ca, libreoffice-l10n-cs, libreoffice-l10n-cy, libreoffice-l10n-da, libreoffice-l10n-de, libreoffice-l10n-dz, libreoffice-l10n-el, libreoffice-l10n-en-gb, libreoffice-l10n-en-za, libreoffice-l10n-eo, libreoffice-l10n-es, libreoffice-l10n-et, libreoffice-l10n-eu, libreoffice-l10n-fa, libreoffice-l10n-fi, libreoffice-l10n-fr, libreoffice-l10n-ga, libreoffice-l10n-gd, libreoffice-l10n-gl, libreoffice-l10n-gu, libreoffice-l10n-gug, libreoffice-l10n-he, libreoffice-l10n-hi, libreoffice-l10n-hr, libreoffice-l10n-hu, libreoffice-l10n-id, libreoffice-l10n-in, libreoffice-l10n-is, libreoffice-l10n-it, libreoffice-l10n-ja, libreoffice-l10n-ka, libreoffice-l10n-kk, libreoffice-l10n-km, libreoffice-l10n-kmr, libreoffice-l10n-ko, libreoffice-l10n-lt, libreoffice-l10n-lv, libreoffice-l10n-mk, libreoffice-l10n-ml, libreoffice-l10n-mn, libreoffice-l10n-mr, libreoffice-l10n-nb, libreoffice-l10n-ne, libreoffice-l10n-nl, libreoffice-l10n-nn, libreoffice-l10n-nr, libreoffice-l10n-nso, libreoffice-l10n-oc, libreoffice-l10n-om, libreoffice-l10n-or, libreoffice-l10n-pa-in, libreoffice-l10n-pl, libreoffice-l10n-pt, libreoffice-l10n-pt-br, libreoffice-l10n-ro, libreoffice-l10n-ru, libreoffice-l10n-rw, libreoffice-l10n-si, libreoffice-l10n-sk, libreoffice-l10n-sl, libreoffice-l10n-sr, libreoffice-l10n-ss, libreoffice-l10n-st, libreoffice-l10n-sv, libreoffice-l10n-ta, libreoffice-l10n-te, libreoffice-l10n-tg, libreoffice-l10n-th, libreoffice-l10n-tn, libreoffice-l10n-tr, libreoffice-l10n-ts, libreoffice-l10n-ug, libreoffice-l10n-uk, libreoffice-l10n-uz, libreoffice-l10n-ve, libreoffice-l10n-vi, libreoffice-l10n-xh, libreoffice-l10n-zh-cn, libreoffice-l10n-zh-tw, libreoffice-l10n-zu, myspell-da, myspell-eo, myspell-et, myspell-fa, myspell-ga, myspell-gv, myspell-hy, myspell-sq, myspell-tl, mythes-en-au, mythes-en-us, mythes-es, mythes-fr, mythes-pt-pt, thunderbird-bidiui, thunderbird-l10n-ar, thunderbird-l10n-ast, thunderbird-l10n-be, thunderbird-l10n-bg, thunderbird-l10n-br, thunderbird-l10n-ca, thunderbird-l10n-cs, thunderbird-l10n-cy, thunderbird-l10n-da, thunderbird-l10n-de, thunderbird-l10n-el, thunderbird-l10n-en-gb, thunderbird-l10n-es-ar, thunderbird-l10n-es-es, thunderbird-l10n-et, thunderbird-l10n-eu, thunderbird-l10n-fi, thunderbird-l10n-fr, thunderbird-l10n-fy-nl, thunderbird-l10n-ga-ie, thunderbird-l10n-gd, thunderbird-l10n-gl, thunderbird-l10n-he, thunderbird-l10n-hr, thunderbird-l10n-hu, thunderbird-l10n-hy-am, thunderbird-l10n-id, thunderbird-l10n-is, thunderbird-l10n-it, thunderbird-l10n-ja, thunderbird-l10n-kk, thunderbird-l10n-ko, thunderbird-l10n-lt, thunderbird-l10n-ms, thunderbird-l10n-nb-no, thunderbird-l10n-nl, thunderbird-l10n-nn-no, thunderbird-l10n-pl, thunderbird-l10n-pt-br, thunderbird-l10n-pt-pt, thunderbird-l10n-rm, thunderbird-l10n-ro, thunderbird-l10n-ru, thunderbird-l10n-si, thunderbird-l10n-sk, thunderbird-l10n-sl, thunderbird-l10n-sq, thunderbird-l10n-sr, thunderbird-l10n-sv-se, thunderbird-l10n-tr, thunderbird-l10n-uk, thunderbird-l10n-vi, thunderbird-l10n-zh-cn, thunderbird-l10n-zh-tw, tmispell-voikko, wamerican, wbritish, wbulgarian, wcanadian, wcatalan, wdanish, wdutch, wfaroese, wfrench, wgalician-minimos, witalian, wngerman, wnorwegian, wogerman, wpolish, wportuguese, wspanish, wswedish, wswiss, wukrainian
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/length/depends-field-too-long/build-spec/fill-values b/t/recipes/checks/fields/length/depends-field-too-long/build-spec/fill-values
new file mode 100644
index 0000000..c0dc95b
--- /dev/null
+++ b/t/recipes/checks/fields/length/depends-field-too-long/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: depends-field-too-long
+Description: The Depends: field d/control is too long.
diff --git a/t/recipes/checks/fields/length/depends-field-too-long/eval/desc b/t/recipes/checks/fields/length/depends-field-too-long/eval/desc
new file mode 100644
index 0000000..2189af0
--- /dev/null
+++ b/t/recipes/checks/fields/length/depends-field-too-long/eval/desc
@@ -0,0 +1,3 @@
+Testname: depends-field-too-long
+See-Also: Debian Bug#942493
+Check: fields/length
diff --git a/t/recipes/checks/fields/length/depends-field-too-long/eval/hints b/t/recipes/checks/fields/length/depends-field-too-long/eval/hints
new file mode 100644
index 0000000..c561e2d
--- /dev/null
+++ b/t/recipes/checks/fields/length/depends-field-too-long/eval/hints
@@ -0,0 +1 @@
+depends-field-too-long (binary): field-too-long Depends (6846 chars > 5000)
diff --git a/t/recipes/checks/fields/length/provides-field-too-long/build-spec/debian/control.in b/t/recipes/checks/fields/length/provides-field-too-long/build-spec/debian/control.in
new file mode 100644
index 0000000..6c1e06c
--- /dev/null
+++ b/t/recipes/checks/fields/length/provides-field-too-long/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: librust-web-sys+abortcontroller-dev (= 0.3.28-1), librust-web-sys+abortsignal-dev (= 0.3.28-1), librust-web-sys+addeventlisteneroptions-dev (= 0.3.28-1), librust-web-sys+aescbcparams-dev (= 0.3.28-1), librust-web-sys+aesctrparams-dev (= 0.3.28-1), librust-web-sys+aesderivedkeyparams-dev (= 0.3.28-1), librust-web-sys+aesgcmparams-dev (= 0.3.28-1), librust-web-sys+aeskeyalgorithm-dev (= 0.3.28-1), librust-web-sys+aeskeygenparams-dev (= 0.3.28-1), librust-web-sys+algorithm-dev (= 0.3.28-1), librust-web-sys+alignsetting-dev (= 0.3.28-1), librust-web-sys+analysernode-dev (= 0.3.28-1), librust-web-sys+analyseroptions-dev (= 0.3.28-1), librust-web-sys+angleinstancedarrays-dev (= 0.3.28-1), librust-web-sys+animation-dev (= 0.3.28-1), librust-web-sys+animationeffect-dev (= 0.3.28-1), librust-web-sys+animationevent-dev (= 0.3.28-1), librust-web-sys+animationeventinit-dev (= 0.3.28-1), librust-web-sys+animationplaybackevent-dev (= 0.3.28-1), librust-web-sys+animationplaybackeventinit-dev (= 0.3.28-1), librust-web-sys+animationplaystate-dev (= 0.3.28-1), librust-web-sys+animationpropertydetails-dev (= 0.3.28-1), librust-web-sys+animationpropertyvaluedetails-dev (= 0.3.28-1), librust-web-sys+animationtimeline-dev (= 0.3.28-1), librust-web-sys+assignednodesoptions-dev (= 0.3.28-1), librust-web-sys+attestationconveyancepreference-dev (= 0.3.28-1), librust-web-sys+attr-dev (= 0.3.28-1), librust-web-sys+attributenamevalue-dev (= 0.3.28-1), librust-web-sys+audiobuffer-dev (= 0.3.28-1), librust-web-sys+audiobufferoptions-dev (= 0.3.28-1), librust-web-sys+audiobuffersourcenode-dev (= 0.3.28-1), librust-web-sys+audiobuffersourceoptions-dev (= 0.3.28-1), librust-web-sys+audioconfiguration-dev (= 0.3.28-1), librust-web-sys+audiocontext-dev (= 0.3.28-1), librust-web-sys+audiocontextoptions-dev (= 0.3.28-1), librust-web-sys+audiocontextstate-dev (= 0.3.28-1), librust-web-sys+audiodestinationnode-dev (= 0.3.28-1), librust-web-sys+audiolistener-dev (= 0.3.28-1), librust-web-sys+audionode-dev (= 0.3.28-1), librust-web-sys+audionodeoptions-dev (= 0.3.28-1), librust-web-sys+audioparam-dev (= 0.3.28-1), librust-web-sys+audioparammap-dev (= 0.3.28-1), librust-web-sys+audioprocessingevent-dev (= 0.3.28-1), librust-web-sys+audioscheduledsourcenode-dev (= 0.3.28-1), librust-web-sys+audiostreamtrack-dev (= 0.3.28-1), librust-web-sys+audiotrack-dev (= 0.3.28-1), librust-web-sys+audiotracklist-dev (= 0.3.28-1), librust-web-sys+audioworklet-dev (= 0.3.28-1), librust-web-sys+audioworkletglobalscope-dev (= 0.3.28-1), librust-web-sys+audioworkletnode-dev (= 0.3.28-1), librust-web-sys+audioworkletnodeoptions-dev (= 0.3.28-1), librust-web-sys+audioworkletprocessor-dev (= 0.3.28-1), librust-web-sys+authenticationextensionsclientinputs-dev (= 0.3.28-1), librust-web-sys+authenticationextensionsclientoutputs-dev (= 0.3.28-1), librust-web-sys+authenticatorassertionresponse-dev (= 0.3.28-1), librust-web-sys+authenticatorattachment-dev (= 0.3.28-1), librust-web-sys+authenticatorattestationresponse-dev (= 0.3.28-1), librust-web-sys+authenticatorresponse-dev (= 0.3.28-1), librust-web-sys+authenticatorselectioncriteria-dev (= 0.3.28-1), librust-web-sys+authenticatortransport-dev (= 0.3.28-1), librust-web-sys+autocompleteinfo-dev (= 0.3.28-1), librust-web-sys+autokeyword-dev (= 0.3.28-1), librust-web-sys+barprop-dev (= 0.3.28-1), librust-web-sys+baseaudiocontext-dev (= 0.3.28-1), librust-web-sys+basecomputedkeyframe-dev (= 0.3.28-1), librust-web-sys+basekeyframe-dev (= 0.3.28-1), librust-web-sys+basepropertyindexedkeyframe-dev (= 0.3.28-1), librust-web-sys+basiccardrequest-dev (= 0.3.28-1), librust-web-sys+basiccardresponse-dev (= 0.3.28-1), librust-web-sys+basiccardtype-dev (= 0.3.28-1), librust-web-sys+batterymanager-dev (= 0.3.28-1), librust-web-sys+beforeunloadevent-dev (= 0.3.28-1), librust-web-sys+binarytype-dev (= 0.3.28-1), librust-web-sys+biquadfilternode-dev (= 0.3.28-1), librust-web-sys+biquadfilteroptions-dev (= 0.3.28-1), librust-web-sys+biquadfiltertype-dev (= 0.3.28-1), librust-web-sys+blob-dev (= 0.3.28-1), librust-web-sys+blobevent-dev (= 0.3.28-1), librust-web-sys+blobeventinit-dev (= 0.3.28-1), librust-web-sys+blobpropertybag-dev (= 0.3.28-1), librust-web-sys+blockparsingoptions-dev (= 0.3.28-1), librust-web-sys+boxquadoptions-dev (= 0.3.28-1), librust-web-sys+broadcastchannel-dev (= 0.3.28-1), librust-web-sys+browserelementdownloadoptions-dev (= 0.3.28-1), librust-web-sys+browserelementexecutescriptoptions-dev (= 0.3.28-1), librust-web-sys+browserfeedwriter-dev (= 0.3.28-1), librust-web-sys+browserfindcasesensitivity-dev (= 0.3.28-1), librust-web-sys+browserfinddirection-dev (= 0.3.28-1), librust-web-sys+cache-dev (= 0.3.28-1), librust-web-sys+cachebatchoperation-dev (= 0.3.28-1), librust-web-sys+cachequeryoptions-dev (= 0.3.28-1), librust-web-sys+cachestorage-dev (= 0.3.28-1), librust-web-sys+cachestoragenamespace-dev (= 0.3.28-1), librust-web-sys+canvascapturemediastream-dev (= 0.3.28-1), librust-web-sys+canvasgradient-dev (= 0.3.28-1), librust-web-sys+canvaspattern-dev (= 0.3.28-1), librust-web-sys+canvasrenderingcontext2d-dev (= 0.3.28-1), librust-web-sys+canvaswindingrule-dev (= 0.3.28-1), librust-web-sys+caretchangedreason-dev (= 0.3.28-1), librust-web-sys+caretposition-dev (= 0.3.28-1), librust-web-sys+caretstatechangedeventinit-dev (= 0.3.28-1), librust-web-sys+cdatasection-dev (= 0.3.28-1), librust-web-sys+channelcountmode-dev (= 0.3.28-1), librust-web-sys+channelinterpretation-dev (= 0.3.28-1), librust-web-sys+channelmergernode-dev (= 0.3.28-1), librust-web-sys+channelmergeroptions-dev (= 0.3.28-1), librust-web-sys+channelpixellayout-dev (= 0.3.28-1), librust-web-sys+channelpixellayoutdatatype-dev (= 0.3.28-1), librust-web-sys+channelsplitternode-dev (= 0.3.28-1), librust-web-sys+channelsplitteroptions-dev (= 0.3.28-1), librust-web-sys+characterdata-dev (= 0.3.28-1), librust-web-sys+checkerboardreason-dev (= 0.3.28-1), librust-web-sys+checkerboardreport-dev (= 0.3.28-1), librust-web-sys+checkerboardreportservice-dev (= 0.3.28-1), librust-web-sys+chromefilepropertybag-dev (= 0.3.28-1), librust-web-sys+chromeworker-dev (= 0.3.28-1), librust-web-sys+client-dev (= 0.3.28-1), librust-web-sys+clientqueryoptions-dev (= 0.3.28-1), librust-web-sys+clientrectsandtexts-dev (= 0.3.28-1), librust-web-sys+clients-dev (= 0.3.28-1), librust-web-sys+clienttype-dev (= 0.3.28-1), librust-web-sys+clipboardevent-dev (= 0.3.28-1), librust-web-sys+clipboardeventinit-dev (= 0.3.28-1), librust-web-sys+closeevent-dev (= 0.3.28-1), librust-web-sys+closeeventinit-dev (= 0.3.28-1), librust-web-sys+collectedclientdata-dev (= 0.3.28-1), librust-web-sys+comment-dev (= 0.3.28-1), librust-web-sys+compositeoperation-dev (= 0.3.28-1), librust-web-sys+compositionevent-dev (= 0.3.28-1), librust-web-sys+compositioneventinit-dev (= 0.3.28-1), librust-web-sys+computedeffecttiming-dev (= 0.3.28-1), librust-web-sys+connectiontype-dev (= 0.3.28-1), librust-web-sys+connstatusdict-dev (= 0.3.28-1), librust-web-sys+console-dev (= 0.3.28-1), librust-web-sys+consolecounter-dev (= 0.3.28-1), librust-web-sys+consolecountererror-dev (= 0.3.28-1), librust-web-sys+consoleevent-dev (= 0.3.28-1), librust-web-sys+consoleinstance-dev (= 0.3.28-1), librust-web-sys+consoleinstanceoptions-dev (= 0.3.28-1), librust-web-sys+consolelevel-dev (= 0.3.28-1), librust-web-sys+consoleloglevel-dev (= 0.3.28-1), librust-web-sys+consoleprofileevent-dev (= 0.3.28-1), librust-web-sys+consolestackentry-dev (= 0.3.28-1), librust-web-sys+consoletimererror-dev (= 0.3.28-1), librust-web-sys+consoletimerlogorend-dev (= 0.3.28-1), librust-web-sys+consoletimerstart-dev (= 0.3.28-1), librust-web-sys+constantsourcenode-dev (= 0.3.28-1), librust-web-sys+constantsourceoptions-dev (= 0.3.28-1), librust-web-sys+constrainbooleanparameters-dev (= 0.3.28-1), librust-web-sys+constraindomstringparameters-dev (= 0.3.28-1), librust-web-sys+constraindoublerange-dev (= 0.3.28-1), librust-web-sys+constrainlongrange-dev (= 0.3.28-1), librust-web-sys+contextattributes2d-dev (= 0.3.28-1), librust-web-sys+convertcoordinateoptions-dev (= 0.3.28-1), librust-web-sys+convolvernode-dev (= 0.3.28-1), librust-web-sys+convolveroptions-dev (= 0.3.28-1), librust-web-sys+coordinates-dev (= 0.3.28-1), librust-web-sys+credential-dev (= 0.3.28-1), librust-web-sys+credentialcreationoptions-dev (= 0.3.28-1), librust-web-sys+credentialrequestoptions-dev (= 0.3.28-1), librust-web-sys+credentialscontainer-dev (= 0.3.28-1), librust-web-sys+crypto-dev (= 0.3.28-1), librust-web-sys+cryptokey-dev (= 0.3.28-1), librust-web-sys+cryptokeypair-dev (= 0.3.28-1), librust-web-sys+csp-dev (= 0.3.28-1), librust-web-sys+csppolicies-dev (= 0.3.28-1), librust-web-sys+cspreport-dev (= 0.3.28-1), librust-web-sys+cspreportproperties-dev (= 0.3.28-1), librust-web-sys+css-dev (= 0.3.28-1), librust-web-sys+cssanimation-dev (= 0.3.28-1), librust-web-sys+cssboxtype-dev (= 0.3.28-1), librust-web-sys+cssconditionrule-dev (= 0.3.28-1), librust-web-sys+csscounterstylerule-dev (= 0.3.28-1), librust-web-sys+cssfontfacerule-dev (= 0.3.28-1), librust-web-sys+cssfontfeaturevaluesrule-dev (= 0.3.28-1), librust-web-sys+cssgroupingrule-dev (= 0.3.28-1), librust-web-sys+cssimportrule-dev (= 0.3.28-1), librust-web-sys+csskeyframerule-dev (= 0.3.28-1), librust-web-sys+csskeyframesrule-dev (= 0.3.28-1), librust-web-sys+cssmediarule-dev (= 0.3.28-1), librust-web-sys+cssnamespacerule-dev (= 0.3.28-1), librust-web-sys+csspagerule-dev (= 0.3.28-1), librust-web-sys+csspseudoelement-dev (= 0.3.28-1), librust-web-sys+cssrule-dev (= 0.3.28-1), librust-web-sys+cssrulelist-dev (= 0.3.28-1), librust-web-sys+cssstyledeclaration-dev (= 0.3.28-1), librust-web-sys+cssstylerule-dev (= 0.3.28-1), librust-web-sys+cssstylesheet-dev (= 0.3.28-1), librust-web-sys+cssstylesheetparsingmode-dev (= 0.3.28-1), librust-web-sys+csssupportsrule-dev (= 0.3.28-1), librust-web-sys+csstransition-dev (= 0.3.28-1), librust-web-sys+customelementregistry-dev (= 0.3.28-1), librust-web-sys+customevent-dev (= 0.3.28-1), librust-web-sys+customeventinit-dev (= 0.3.28-1), librust-web-sys+datatransfer-dev (= 0.3.28-1), librust-web-sys+datatransferitem-dev (= 0.3.28-1), librust-web-sys+datatransferitemlist-dev (= 0.3.28-1), librust-web-sys+datetimevalue-dev (= 0.3.28-1), librust-web-sys+decoderdoctornotification-dev (= 0.3.28-1), librust-web-sys+decoderdoctornotificationtype-dev (= 0.3.28-1), librust-web-sys+dedicatedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys+default-dev (= 0.3.28-1), librust-web-sys+delaynode-dev (= 0.3.28-1), librust-web-sys+delayoptions-dev (= 0.3.28-1), librust-web-sys+deviceacceleration-dev (= 0.3.28-1), librust-web-sys+deviceaccelerationinit-dev (= 0.3.28-1), librust-web-sys+devicelightevent-dev (= 0.3.28-1), librust-web-sys+devicelighteventinit-dev (= 0.3.28-1), librust-web-sys+devicemotionevent-dev (= 0.3.28-1), librust-web-sys+devicemotioneventinit-dev (= 0.3.28-1), librust-web-sys+deviceorientationevent-dev (= 0.3.28-1), librust-web-sys+deviceorientationeventinit-dev (= 0.3.28-1), librust-web-sys+deviceproximityevent-dev (= 0.3.28-1), librust-web-sys+deviceproximityeventinit-dev (= 0.3.28-1), librust-web-sys+devicerotationrate-dev (= 0.3.28-1), librust-web-sys+devicerotationrateinit-dev (= 0.3.28-1), librust-web-sys+dhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys+directionsetting-dev (= 0.3.28-1), librust-web-sys+directory-dev (= 0.3.28-1), librust-web-sys+displaynameoptions-dev (= 0.3.28-1), librust-web-sys+displaynameresult-dev (= 0.3.28-1), librust-web-sys+distancemodeltype-dev (= 0.3.28-1), librust-web-sys+dnscachedict-dev (= 0.3.28-1), librust-web-sys+dnscacheentry-dev (= 0.3.28-1), librust-web-sys+dnslookupdict-dev (= 0.3.28-1), librust-web-sys+document-dev (= 0.3.28-1), librust-web-sys+documentfragment-dev (= 0.3.28-1), librust-web-sys+documenttimeline-dev (= 0.3.28-1), librust-web-sys+documenttimelineoptions-dev (= 0.3.28-1), librust-web-sys+documenttype-dev (= 0.3.28-1), librust-web-sys+domerror-dev (= 0.3.28-1), librust-web-sys+domexception-dev (= 0.3.28-1), librust-web-sys+domimplementation-dev (= 0.3.28-1), librust-web-sys+dommatrix-dev (= 0.3.28-1), librust-web-sys+dommatrixreadonly-dev (= 0.3.28-1), librust-web-sys+domparser-dev (= 0.3.28-1), librust-web-sys+dompoint-dev (= 0.3.28-1), librust-web-sys+dompointinit-dev (= 0.3.28-1), librust-web-sys+dompointreadonly-dev (= 0.3.28-1), librust-web-sys+domquad-dev (= 0.3.28-1), librust-web-sys+domquadinit-dev (= 0.3.28-1), librust-web-sys+domquadjson-dev (= 0.3.28-1), librust-web-sys+domrect-dev (= 0.3.28-1), librust-web-sys+domrectinit-dev (= 0.3.28-1), librust-web-sys+domrectlist-dev (= 0.3.28-1), librust-web-sys+domrectreadonly-dev (= 0.3.28-1), librust-web-sys+domrequest-dev (= 0.3.28-1), librust-web-sys+domrequestreadystate-dev (= 0.3.28-1), librust-web-sys+domstringlist-dev (= 0.3.28-1), librust-web-sys+domstringmap-dev (= 0.3.28-1), librust-web-sys+domtokenlist-dev (= 0.3.28-1), librust-web-sys+domwindowresizeeventdetail-dev (= 0.3.28-1), librust-web-sys+dragevent-dev (= 0.3.28-1), librust-web-sys+drageventinit-dev (= 0.3.28-1), librust-web-sys+dynamicscompressornode-dev (= 0.3.28-1), librust-web-sys+dynamicscompressoroptions-dev (= 0.3.28-1), librust-web-sys+ecdhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys+ecdsaparams-dev (= 0.3.28-1), librust-web-sys+eckeyalgorithm-dev (= 0.3.28-1), librust-web-sys+eckeygenparams-dev (= 0.3.28-1), librust-web-sys+eckeyimportparams-dev (= 0.3.28-1), librust-web-sys+effecttiming-dev (= 0.3.28-1), librust-web-sys+element-dev (= 0.3.28-1), librust-web-sys+elementcreationoptions-dev (= 0.3.28-1), librust-web-sys+elementdefinitionoptions-dev (= 0.3.28-1), librust-web-sys+endingtypes-dev (= 0.3.28-1), librust-web-sys+errorcallback-dev (= 0.3.28-1), librust-web-sys+errorevent-dev (= 0.3.28-1), librust-web-sys+erroreventinit-dev (= 0.3.28-1), librust-web-sys+event-dev (= 0.3.28-1), librust-web-sys+eventinit-dev (= 0.3.28-1), librust-web-sys+eventlistener-dev (= 0.3.28-1), librust-web-sys+eventlisteneroptions-dev (= 0.3.28-1), librust-web-sys+eventmodifierinit-dev (= 0.3.28-1), librust-web-sys+eventsource-dev (= 0.3.28-1), librust-web-sys+eventsourceinit-dev (= 0.3.28-1), librust-web-sys+eventtarget-dev (= 0.3.28-1), librust-web-sys+exception-dev (= 0.3.28-1), librust-web-sys+extblendminmax-dev (= 0.3.28-1), librust-web-sys+extcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys+extcolorbufferhalffloat-dev (= 0.3.28-1), librust-web-sys+extdisjointtimerquery-dev (= 0.3.28-1), librust-web-sys+extendableevent-dev (= 0.3.28-1), librust-web-sys+extendableeventinit-dev (= 0.3.28-1), librust-web-sys+extendablemessageevent-dev (= 0.3.28-1), librust-web-sys+extendablemessageeventinit-dev (= 0.3.28-1), librust-web-sys+external-dev (= 0.3.28-1), librust-web-sys+extfragdepth-dev (= 0.3.28-1), librust-web-sys+extshadertexturelod-dev (= 0.3.28-1), librust-web-sys+extsrgb-dev (= 0.3.28-1), librust-web-sys+exttexturefilteranisotropic-dev (= 0.3.28-1), librust-web-sys+fakepluginmimeentry-dev (= 0.3.28-1), librust-web-sys+fakeplugintaginit-dev (= 0.3.28-1), librust-web-sys+fetchevent-dev (= 0.3.28-1), librust-web-sys+fetcheventinit-dev (= 0.3.28-1), librust-web-sys+fetchobserver-dev (= 0.3.28-1), librust-web-sys+fetchreadablestreamreaddataarray-dev (= 0.3.28-1), librust-web-sys+fetchreadablestreamreaddatadone-dev (= 0.3.28-1), librust-web-sys+fetchstate-dev (= 0.3.28-1), librust-web-sys+file-dev (= 0.3.28-1), librust-web-sys+filecallback-dev (= 0.3.28-1), librust-web-sys+filelist-dev (= 0.3.28-1), librust-web-sys+filepropertybag-dev (= 0.3.28-1), librust-web-sys+filereader-dev (= 0.3.28-1), librust-web-sys+filereadersync-dev (= 0.3.28-1), librust-web-sys+filesystem-dev (= 0.3.28-1), librust-web-sys+filesystemdirectoryentry-dev (= 0.3.28-1), librust-web-sys+filesystemdirectoryreader-dev (= 0.3.28-1), librust-web-sys+filesystementriescallback-dev (= 0.3.28-1), librust-web-sys+filesystementry-dev (= 0.3.28-1), librust-web-sys+filesystementrycallback-dev (= 0.3.28-1), librust-web-sys+filesystemfileentry-dev (= 0.3.28-1), librust-web-sys+filesystemflags-dev (= 0.3.28-1), librust-web-sys+fillmode-dev (= 0.3.28-1), librust-web-sys+flashclassification-dev (= 0.3.28-1), librust-web-sys+flexlinegrowthstate-dev (= 0.3.28-1), librust-web-sys+focusevent-dev (= 0.3.28-1), librust-web-sys+focuseventinit-dev (= 0.3.28-1), librust-web-sys+fontface-dev (= 0.3.28-1), librust-web-sys+fontfacedescriptors-dev (= 0.3.28-1), librust-web-sys+fontfaceloadstatus-dev (= 0.3.28-1), librust-web-sys+fontfaceset-dev (= 0.3.28-1), librust-web-sys+fontfacesetiterator-dev (= 0.3.28-1), librust-web-sys+fontfacesetiteratorresult-dev (= 0.3.28-1), librust-web-sys+fontfacesetloadevent-dev (= 0.3.28-1), librust-web-sys+fontfacesetloadeventinit-dev (= 0.3.28-1), librust-web-sys+fontfacesetloadstatus-dev (= 0.3.28-1), librust-web-sys+formdata-dev (= 0.3.28-1), librust-web-sys+frametype-dev (= 0.3.28-1), librust-web-sys+fuzzingfunctions-dev (= 0.3.28-1), librust-web-sys+gainnode-dev (= 0.3.28-1), librust-web-sys+gainoptions-dev (= 0.3.28-1), librust-web-sys+gamepad-dev (= 0.3.28-1), librust-web-sys+gamepadaxismoveevent-dev (= 0.3.28-1), librust-web-sys+gamepadaxismoveeventinit-dev (= 0.3.28-1), librust-web-sys+gamepadbutton-dev (= 0.3.28-1), librust-web-sys+gamepadbuttonevent-dev (= 0.3.28-1), librust-web-sys+gamepadbuttoneventinit-dev (= 0.3.28-1), librust-web-sys+gamepadevent-dev (= 0.3.28-1), librust-web-sys+gamepadeventinit-dev (= 0.3.28-1), librust-web-sys+gamepadhand-dev (= 0.3.28-1), librust-web-sys+gamepadhapticactuator-dev (= 0.3.28-1), librust-web-sys+gamepadhapticactuatortype-dev (= 0.3.28-1), librust-web-sys+gamepadmappingtype-dev (= 0.3.28-1), librust-web-sys+gamepadpose-dev (= 0.3.28-1), librust-web-sys+gamepadservicetest-dev (= 0.3.28-1), librust-web-sys+geolocation-dev (= 0.3.28-1), librust-web-sys+getnotificationoptions-dev (= 0.3.28-1), librust-web-sys+getrootnodeoptions-dev (= 0.3.28-1), librust-web-sys+getusermediarequest-dev (= 0.3.28-1), librust-web-sys+griddeclaration-dev (= 0.3.28-1), librust-web-sys+gridtrackstate-dev (= 0.3.28-1), librust-web-sys+groupedhistoryeventinit-dev (= 0.3.28-1), librust-web-sys+halfopeninfodict-dev (= 0.3.28-1), librust-web-sys+hashchangeevent-dev (= 0.3.28-1), librust-web-sys+hashchangeeventinit-dev (= 0.3.28-1), librust-web-sys+headers-dev (= 0.3.28-1), librust-web-sys+headersguardenum-dev (= 0.3.28-1), librust-web-sys+hiddenplugineventinit-dev (= 0.3.28-1), librust-web-sys+history-dev (= 0.3.28-1), librust-web-sys+hitregionoptions-dev (= 0.3.28-1), librust-web-sys+hkdfparams-dev (= 0.3.28-1), librust-web-sys+hmacderivedkeyparams-dev (= 0.3.28-1), librust-web-sys+hmacimportparams-dev (= 0.3.28-1), librust-web-sys+hmackeyalgorithm-dev (= 0.3.28-1), librust-web-sys+hmackeygenparams-dev (= 0.3.28-1), librust-web-sys+htmlallcollection-dev (= 0.3.28-1), librust-web-sys+htmlanchorelement-dev (= 0.3.28-1), librust-web-sys+htmlareaelement-dev (= 0.3.28-1), librust-web-sys+htmlaudioelement-dev (= 0.3.28-1), librust-web-sys+htmlbaseelement-dev (= 0.3.28-1), librust-web-sys+htmlbodyelement-dev (= 0.3.28-1), librust-web-sys+htmlbrelement-dev (= 0.3.28-1), librust-web-sys+htmlbuttonelement-dev (= 0.3.28-1), librust-web-sys+htmlcanvaselement-dev (= 0.3.28-1), librust-web-sys+htmlcollection-dev (= 0.3.28-1), librust-web-sys+htmldataelement-dev (= 0.3.28-1), librust-web-sys+htmldatalistelement-dev (= 0.3.28-1), librust-web-sys+htmldetailselement-dev (= 0.3.28-1), librust-web-sys+htmldialogelement-dev (= 0.3.28-1), librust-web-sys+htmldirectoryelement-dev (= 0.3.28-1), librust-web-sys+htmldivelement-dev (= 0.3.28-1), librust-web-sys+htmldlistelement-dev (= 0.3.28-1), librust-web-sys+htmldocument-dev (= 0.3.28-1), librust-web-sys+htmlelement-dev (= 0.3.28-1), librust-web-sys+htmlembedelement-dev (= 0.3.28-1), librust-web-sys+htmlfieldsetelement-dev (= 0.3.28-1), librust-web-sys+htmlfontelement-dev (= 0.3.28-1), librust-web-sys+htmlformcontrolscollection-dev (= 0.3.28-1), librust-web-sys+htmlformelement-dev (= 0.3.28-1), librust-web-sys+htmlframeelement-dev (= 0.3.28-1), librust-web-sys+htmlframesetelement-dev (= 0.3.28-1), librust-web-sys+htmlheadelement-dev (= 0.3.28-1), librust-web-sys+htmlheadingelement-dev (= 0.3.28-1), librust-web-sys+htmlhrelement-dev (= 0.3.28-1), librust-web-sys+htmlhtmlelement-dev (= 0.3.28-1), librust-web-sys+htmlhyperlinkelementutils-dev (= 0.3.28-1), librust-web-sys+htmliframeelement-dev (= 0.3.28-1), librust-web-sys+htmlimageelement-dev (= 0.3.28-1), librust-web-sys+htmlinputelement-dev (= 0.3.28-1), librust-web-sys+htmllabelelement-dev (= 0.3.28-1), librust-web-sys+htmllegendelement-dev (= 0.3.28-1), librust-web-sys+htmllielement-dev (= 0.3.28-1), librust-web-sys+htmllinkelement-dev (= 0.3.28-1), librust-web-sys+htmlmapelement-dev (= 0.3.28-1), librust-web-sys+htmlmediaelement-dev (= 0.3.28-1), librust-web-sys+htmlmenuelement-dev (= 0.3.28-1), librust-web-sys+htmlmenuitemelement-dev (= 0.3.28-1), librust-web-sys+htmlmetaelement-dev (= 0.3.28-1), librust-web-sys+htmlmeterelement-dev (= 0.3.28-1), librust-web-sys+htmlmodelement-dev (= 0.3.28-1), librust-web-sys+htmlobjectelement-dev (= 0.3.28-1), librust-web-sys+htmlolistelement-dev (= 0.3.28-1), librust-web-sys+htmloptgroupelement-dev (= 0.3.28-1), librust-web-sys+htmloptionelement-dev (= 0.3.28-1), librust-web-sys+htmloptionscollection-dev (= 0.3.28-1), librust-web-sys+htmloutputelement-dev (= 0.3.28-1), librust-web-sys+htmlparagraphelement-dev (= 0.3.28-1), librust-web-sys+htmlparamelement-dev (= 0.3.28-1), librust-web-sys+htmlpictureelement-dev (= 0.3.28-1), librust-web-sys+htmlpreelement-dev (= 0.3.28-1), librust-web-sys+htmlprogresselement-dev (= 0.3.28-1), librust-web-sys+htmlquoteelement-dev (= 0.3.28-1), librust-web-sys+htmlscriptelement-dev (= 0.3.28-1), librust-web-sys+htmlselectelement-dev (= 0.3.28-1), librust-web-sys+htmlslotelement-dev (= 0.3.28-1), librust-web-sys+htmlsourceelement-dev (= 0.3.28-1), librust-web-sys+htmlspanelement-dev (= 0.3.28-1), librust-web-sys+htmlstyleelement-dev (= 0.3.28-1), librust-web-sys+htmltablecaptionelement-dev (= 0.3.28-1), librust-web-sys+htmltablecellelement-dev (= 0.3.28-1), librust-web-sys+htmltablecolelement-dev (= 0.3.28-1), librust-web-sys+htmltableelement-dev (= 0.3.28-1), librust-web-sys+htmltablerowelement-dev (= 0.3.28-1), librust-web-sys+htmltablesectionelement-dev (= 0.3.28-1), librust-web-sys+htmltemplateelement-dev (= 0.3.28-1), librust-web-sys+htmltextareaelement-dev (= 0.3.28-1), librust-web-sys+htmltimeelement-dev (= 0.3.28-1), librust-web-sys+htmltitleelement-dev (= 0.3.28-1), librust-web-sys+htmltrackelement-dev (= 0.3.28-1), librust-web-sys+htmlulistelement-dev (= 0.3.28-1), librust-web-sys+htmlunknownelement-dev (= 0.3.28-1), librust-web-sys+htmlvideoelement-dev (= 0.3.28-1), librust-web-sys+httpconndict-dev (= 0.3.28-1), librust-web-sys+httpconnectionelement-dev (= 0.3.28-1), librust-web-sys+httpconninfo-dev (= 0.3.28-1), librust-web-sys+idbcursor-dev (= 0.3.28-1), librust-web-sys+idbcursordirection-dev (= 0.3.28-1), librust-web-sys+idbcursorwithvalue-dev (= 0.3.28-1), librust-web-sys+idbdatabase-dev (= 0.3.28-1), librust-web-sys+idbfactory-dev (= 0.3.28-1), librust-web-sys+idbfilehandle-dev (= 0.3.28-1), librust-web-sys+idbfilemetadataparameters-dev (= 0.3.28-1), librust-web-sys+idbfilerequest-dev (= 0.3.28-1), librust-web-sys+idbindex-dev (= 0.3.28-1), librust-web-sys+idbindexparameters-dev (= 0.3.28-1), librust-web-sys+idbkeyrange-dev (= 0.3.28-1), librust-web-sys+idblocaleawarekeyrange-dev (= 0.3.28-1), librust-web-sys+idbmutablefile-dev (= 0.3.28-1), librust-web-sys+idbobjectstore-dev (= 0.3.28-1), librust-web-sys+idbobjectstoreparameters-dev (= 0.3.28-1), librust-web-sys+idbopendboptions-dev (= 0.3.28-1), librust-web-sys+idbopendbrequest-dev (= 0.3.28-1), librust-web-sys+idbrequest-dev (= 0.3.28-1), librust-web-sys+idbrequestreadystate-dev (= 0.3.28-1), librust-web-sys+idbtransaction-dev (= 0.3.28-1), librust-web-sys+idbtransactionmode-dev (= 0.3.28-1), librust-web-sys+idbversionchangeevent-dev (= 0.3.28-1), librust-web-sys+idbversionchangeeventinit-dev (= 0.3.28-1), librust-web-sys+idledeadline-dev (= 0.3.28-1), librust-web-sys+idlerequestoptions-dev (= 0.3.28-1), librust-web-sys+iirfilternode-dev (= 0.3.28-1), librust-web-sys+iirfilteroptions-dev (= 0.3.28-1), librust-web-sys+imagebitmap-dev (= 0.3.28-1), librust-web-sys+imagebitmapformat-dev (= 0.3.28-1), librust-web-sys+imagebitmaprenderingcontext-dev (= 0.3.28-1), librust-web-sys+imagecapture-dev (= 0.3.28-1), librust-web-sys+imagecaptureerror-dev (= 0.3.28-1), librust-web-sys+imagecaptureerrorevent-dev (= 0.3.28-1), librust-web-sys+imagecaptureerroreventinit-dev (= 0.3.28-1), librust-web-sys+imagedata-dev (= 0.3.28-1), librust-web-sys+inputevent-dev (= 0.3.28-1), librust-web-sys+inputeventinit-dev (= 0.3.28-1), librust-web-sys+installtriggerdata-dev (= 0.3.28-1), librust-web-sys+intersectionobserver-dev (= 0.3.28-1), librust-web-sys+intersectionobserverentry-dev (= 0.3.28-1), librust-web-sys+intersectionobserverentryinit-dev (= 0.3.28-1), librust-web-sys+intersectionobserverinit-dev (= 0.3.28-1), librust-web-sys+intlutils-dev (= 0.3.28-1), librust-web-sys+iterablekeyandvalueresult-dev (= 0.3.28-1), librust-web-sys+iterablekeyorvalueresult-dev (= 0.3.28-1), librust-web-sys+iterationcompositeoperation-dev (= 0.3.28-1), librust-web-sys+jsonwebkey-dev (= 0.3.28-1), librust-web-sys+keyalgorithm-dev (= 0.3.28-1), librust-web-sys+keyboardevent-dev (= 0.3.28-1), librust-web-sys+keyboardeventinit-dev (= 0.3.28-1), librust-web-sys+keyevent-dev (= 0.3.28-1), librust-web-sys+keyframeeffect-dev (= 0.3.28-1), librust-web-sys+keyframeeffectoptions-dev (= 0.3.28-1), librust-web-sys+keyidsinitdata-dev (= 0.3.28-1), librust-web-sys+l10nelement-dev (= 0.3.28-1), librust-web-sys+l10nvalue-dev (= 0.3.28-1), librust-web-sys+lifecyclecallbacks-dev (= 0.3.28-1), librust-web-sys+linealignsetting-dev (= 0.3.28-1), librust-web-sys+listboxobject-dev (= 0.3.28-1), librust-web-sys+localeinfo-dev (= 0.3.28-1), librust-web-sys+localmediastream-dev (= 0.3.28-1), librust-web-sys+location-dev (= 0.3.28-1), librust-web-sys+mediacapabilities-dev (= 0.3.28-1), librust-web-sys+mediacapabilitiesinfo-dev (= 0.3.28-1), librust-web-sys+mediaconfiguration-dev (= 0.3.28-1), librust-web-sys+mediadecodingconfiguration-dev (= 0.3.28-1), librust-web-sys+mediadecodingtype-dev (= 0.3.28-1), librust-web-sys+mediadeviceinfo-dev (= 0.3.28-1), librust-web-sys+mediadevicekind-dev (= 0.3.28-1), librust-web-sys+mediadevices-dev (= 0.3.28-1), librust-web-sys+mediaelementaudiosourcenode-dev (= 0.3.28-1), librust-web-sys+mediaelementaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys+mediaencodingconfiguration-dev (= 0.3.28-1), librust-web-sys+mediaencodingtype-dev (= 0.3.28-1), librust-web-sys+mediaencryptedevent-dev (= 0.3.28-1), librust-web-sys+mediaerror-dev (= 0.3.28-1), librust-web-sys+mediakeyerror-dev (= 0.3.28-1), librust-web-sys+mediakeymessageevent-dev (= 0.3.28-1), librust-web-sys+mediakeymessageeventinit-dev (= 0.3.28-1), librust-web-sys+mediakeymessagetype-dev (= 0.3.28-1), librust-web-sys+mediakeyneededeventinit-dev (= 0.3.28-1), librust-web-sys+mediakeys-dev (= 0.3.28-1), librust-web-sys+mediakeysession-dev (= 0.3.28-1), librust-web-sys+mediakeysessiontype-dev (= 0.3.28-1), librust-web-sys+mediakeyspolicy-dev (= 0.3.28-1), librust-web-sys+mediakeysrequirement-dev (= 0.3.28-1), librust-web-sys+mediakeystatus-dev (= 0.3.28-1), librust-web-sys+mediakeystatusmap-dev (= 0.3.28-1), librust-web-sys+mediakeysystemaccess-dev (= 0.3.28-1), librust-web-sys+mediakeysystemconfiguration-dev (= 0.3.28-1), librust-web-sys+mediakeysystemmediacapability-dev (= 0.3.28-1), librust-web-sys+mediakeysystemstatus-dev (= 0.3.28-1), librust-web-sys+medialist-dev (= 0.3.28-1), librust-web-sys+mediaquerylist-dev (= 0.3.28-1), librust-web-sys+mediaquerylistevent-dev (= 0.3.28-1), librust-web-sys+mediaquerylisteventinit-dev (= 0.3.28-1), librust-web-sys+mediarecorder-dev (= 0.3.28-1), librust-web-sys+mediarecordererrorevent-dev (= 0.3.28-1), librust-web-sys+mediarecordererroreventinit-dev (= 0.3.28-1), librust-web-sys+mediarecorderoptions-dev (= 0.3.28-1), librust-web-sys+mediasource-dev (= 0.3.28-1), librust-web-sys+mediasourceendofstreamerror-dev (= 0.3.28-1), librust-web-sys+mediasourceenum-dev (= 0.3.28-1), librust-web-sys+mediasourcereadystate-dev (= 0.3.28-1), librust-web-sys+mediastream-dev (= 0.3.28-1), librust-web-sys+mediastreamaudiodestinationnode-dev (= 0.3.28-1), librust-web-sys+mediastreamaudiosourcenode-dev (= 0.3.28-1), librust-web-sys+mediastreamaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys+mediastreamconstraints-dev (= 0.3.28-1), librust-web-sys+mediastreamerror-dev (= 0.3.28-1), librust-web-sys+mediastreamevent-dev (= 0.3.28-1), librust-web-sys+mediastreameventinit-dev (= 0.3.28-1), librust-web-sys+mediastreamtrack-dev (= 0.3.28-1), librust-web-sys+mediastreamtrackevent-dev (= 0.3.28-1), librust-web-sys+mediastreamtrackeventinit-dev (= 0.3.28-1), librust-web-sys+mediastreamtrackstate-dev (= 0.3.28-1), librust-web-sys+mediatrackconstraints-dev (= 0.3.28-1), librust-web-sys+mediatrackconstraintset-dev (= 0.3.28-1), librust-web-sys+mediatracksettings-dev (= 0.3.28-1), librust-web-sys+mediatracksupportedconstraints-dev (= 0.3.28-1), librust-web-sys+messagechannel-dev (= 0.3.28-1), librust-web-sys+messageevent-dev (= 0.3.28-1), librust-web-sys+messageeventinit-dev (= 0.3.28-1), librust-web-sys+messageport-dev (= 0.3.28-1), librust-web-sys+midiaccess-dev (= 0.3.28-1), librust-web-sys+midiconnectionevent-dev (= 0.3.28-1), librust-web-sys+midiconnectioneventinit-dev (= 0.3.28-1), librust-web-sys+midiinput-dev (= 0.3.28-1), librust-web-sys+midiinputmap-dev (= 0.3.28-1), librust-web-sys+midimessageevent-dev (= 0.3.28-1), librust-web-sys+midimessageeventinit-dev (= 0.3.28-1), librust-web-sys+midioptions-dev (= 0.3.28-1), librust-web-sys+midioutput-dev (= 0.3.28-1), librust-web-sys+midioutputmap-dev (= 0.3.28-1), librust-web-sys+midiport-dev (= 0.3.28-1), librust-web-sys+midiportconnectionstate-dev (= 0.3.28-1), librust-web-sys+midiportdevicestate-dev (= 0.3.28-1), librust-web-sys+midiporttype-dev (= 0.3.28-1), librust-web-sys+mimetype-dev (= 0.3.28-1), librust-web-sys+mimetypearray-dev (= 0.3.28-1), librust-web-sys+mouseevent-dev (= 0.3.28-1), librust-web-sys+mouseeventinit-dev (= 0.3.28-1), librust-web-sys+mousescrollevent-dev (= 0.3.28-1), librust-web-sys+mozdebug-dev (= 0.3.28-1), librust-web-sys+mutationevent-dev (= 0.3.28-1), librust-web-sys+mutationobserver-dev (= 0.3.28-1), librust-web-sys+mutationobserverinit-dev (= 0.3.28-1), librust-web-sys+mutationobservinginfo-dev (= 0.3.28-1), librust-web-sys+mutationrecord-dev (= 0.3.28-1), librust-web-sys+namednodemap-dev (= 0.3.28-1), librust-web-sys+nativeosfilereadoptions-dev (= 0.3.28-1), librust-web-sys+nativeosfilewriteatomicoptions-dev (= 0.3.28-1), librust-web-sys+navigationtype-dev (= 0.3.28-1), librust-web-sys+navigator-dev (= 0.3.28-1), librust-web-sys+navigatorautomationinformation-dev (= 0.3.28-1), librust-web-sys+networkcommandoptions-dev (= 0.3.28-1), librust-web-sys+networkinformation-dev (= 0.3.28-1), librust-web-sys+networkresultoptions-dev (= 0.3.28-1), librust-web-sys+node-dev (= 0.3.28-1), librust-web-sys+nodefilter-dev (= 0.3.28-1), librust-web-sys+nodeiterator-dev (= 0.3.28-1), librust-web-sys+nodelist-dev (= 0.3.28-1), librust-web-sys+notification-dev (= 0.3.28-1), librust-web-sys+notificationbehavior-dev (= 0.3.28-1), librust-web-sys+notificationdirection-dev (= 0.3.28-1), librust-web-sys+notificationevent-dev (= 0.3.28-1), librust-web-sys+notificationeventinit-dev (= 0.3.28-1), librust-web-sys+notificationoptions-dev (= 0.3.28-1), librust-web-sys+notificationpermission-dev (= 0.3.28-1), librust-web-sys+observercallback-dev (= 0.3.28-1), librust-web-sys+oeselementindexuint-dev (= 0.3.28-1), librust-web-sys+oesstandardderivatives-dev (= 0.3.28-1), librust-web-sys+oestexturefloat-dev (= 0.3.28-1), librust-web-sys+oestexturefloatlinear-dev (= 0.3.28-1), librust-web-sys+oestexturehalffloat-dev (= 0.3.28-1), librust-web-sys+oestexturehalffloatlinear-dev (= 0.3.28-1), librust-web-sys+oesvertexarrayobject-dev (= 0.3.28-1), librust-web-sys+offlineaudiocompletionevent-dev (= 0.3.28-1), librust-web-sys+offlineaudiocompletioneventinit-dev (= 0.3.28-1), librust-web-sys+offlineaudiocontext-dev (= 0.3.28-1), librust-web-sys+offlineaudiocontextoptions-dev (= 0.3.28-1), librust-web-sys+offlineresourcelist-dev (= 0.3.28-1), librust-web-sys+offscreencanvas-dev (= 0.3.28-1), librust-web-sys+openwindoweventdetail-dev (= 0.3.28-1), librust-web-sys+optionaleffecttiming-dev (= 0.3.28-1), librust-web-sys+orientationlocktype-dev (= 0.3.28-1), librust-web-sys+orientationtype-dev (= 0.3.28-1), librust-web-sys+oscillatornode-dev (= 0.3.28-1), librust-web-sys+oscillatoroptions-dev (= 0.3.28-1), librust-web-sys+oscillatortype-dev (= 0.3.28-1), librust-web-sys+oversampletype-dev (= 0.3.28-1), librust-web-sys+pagetransitionevent-dev (= 0.3.28-1), librust-web-sys+pagetransitioneventinit-dev (= 0.3.28-1), librust-web-sys+paintrequest-dev (= 0.3.28-1), librust-web-sys+paintrequestlist-dev (= 0.3.28-1), librust-web-sys+paintworkletglobalscope-dev (= 0.3.28-1), librust-web-sys+pannernode-dev (= 0.3.28-1), librust-web-sys+panneroptions-dev (= 0.3.28-1), librust-web-sys+panningmodeltype-dev (= 0.3.28-1), librust-web-sys+path2d-dev (= 0.3.28-1), librust-web-sys+paymentaddress-dev (= 0.3.28-1), librust-web-sys+paymentcomplete-dev (= 0.3.28-1), librust-web-sys+paymentmethodchangeevent-dev (= 0.3.28-1), librust-web-sys+paymentmethodchangeeventinit-dev (= 0.3.28-1), librust-web-sys+paymentrequestupdateevent-dev (= 0.3.28-1), librust-web-sys+paymentrequestupdateeventinit-dev (= 0.3.28-1), librust-web-sys+paymentresponse-dev (= 0.3.28-1), librust-web-sys+pbkdf2params-dev (= 0.3.28-1), librust-web-sys+pcimpliceconnectionstate-dev (= 0.3.28-1), librust-web-sys+pcimplicegatheringstate-dev (= 0.3.28-1), librust-web-sys+pcimplsignalingstate-dev (= 0.3.28-1), librust-web-sys+pcobserverstatetype-dev (= 0.3.28-1), librust-web-sys+performance-dev (= 0.3.28-1), librust-web-sys+performanceentry-dev (= 0.3.28-1), librust-web-sys+performanceentryeventinit-dev (= 0.3.28-1), librust-web-sys+performanceentryfilteroptions-dev (= 0.3.28-1), librust-web-sys+performancemark-dev (= 0.3.28-1), librust-web-sys+performancemeasure-dev (= 0.3.28-1), librust-web-sys+performancenavigation-dev (= 0.3.28-1), librust-web-sys+performancenavigationtiming-dev (= 0.3.28-1), librust-web-sys+performanceobserver-dev (= 0.3.28-1), librust-web-sys+performanceobserverentrylist-dev (= 0.3.28-1), librust-web-sys+performanceobserverinit-dev (= 0.3.28-1), librust-web-sys+performanceresourcetiming-dev (= 0.3.28-1), librust-web-sys+performanceservertiming-dev (= 0.3.28-1), librust-web-sys+performancetiming-dev (= 0.3.28-1), librust-web-sys+periodicwave-dev (= 0.3.28-1), librust-web-sys+periodicwaveconstraints-dev (= 0.3.28-1), librust-web-sys+periodicwaveoptions-dev (= 0.3.28-1), librust-web-sys+permissiondescriptor-dev (= 0.3.28-1), librust-web-sys+permissionname-dev (= 0.3.28-1), librust-web-sys+permissions-dev (= 0.3.28-1), librust-web-sys+permissionstate-dev (= 0.3.28-1), librust-web-sys+permissionstatus-dev (= 0.3.28-1), librust-web-sys+playbackdirection-dev (= 0.3.28-1), librust-web-sys+plugin-dev (= 0.3.28-1), librust-web-sys+pluginarray-dev (= 0.3.28-1), librust-web-sys+plugincrashedeventinit-dev (= 0.3.28-1), librust-web-sys+pointerevent-dev (= 0.3.28-1), librust-web-sys+pointereventinit-dev (= 0.3.28-1), librust-web-sys+popstateevent-dev (= 0.3.28-1), librust-web-sys+popstateeventinit-dev (= 0.3.28-1), librust-web-sys+popupblockedevent-dev (= 0.3.28-1), librust-web-sys+popupblockedeventinit-dev (= 0.3.28-1), librust-web-sys+position-dev (= 0.3.28-1), librust-web-sys+positionalignsetting-dev (= 0.3.28-1), librust-web-sys+positionerror-dev (= 0.3.28-1), librust-web-sys+positionoptions-dev (= 0.3.28-1), librust-web-sys+presentation-dev (= 0.3.28-1), librust-web-sys+presentationavailability-dev (= 0.3.28-1), librust-web-sys+presentationconnection-dev (= 0.3.28-1), librust-web-sys+presentationconnectionavailableevent-dev (= 0.3.28-1), librust-web-sys+presentationconnectionavailableeventinit-dev (= 0.3.28-1), librust-web-sys+presentationconnectionbinarytype-dev (= 0.3.28-1), librust-web-sys+presentationconnectionclosedreason-dev (= 0.3.28-1), librust-web-sys+presentationconnectioncloseevent-dev (= 0.3.28-1), librust-web-sys+presentationconnectioncloseeventinit-dev (= 0.3.28-1), librust-web-sys+presentationconnectionlist-dev (= 0.3.28-1), librust-web-sys+presentationconnectionstate-dev (= 0.3.28-1), librust-web-sys+presentationreceiver-dev (= 0.3.28-1), librust-web-sys+presentationrequest-dev (= 0.3.28-1), librust-web-sys+processinginstruction-dev (= 0.3.28-1), librust-web-sys+profiletimelinelayerrect-dev (= 0.3.28-1), librust-web-sys+profiletimelinemarker-dev (= 0.3.28-1), librust-web-sys+profiletimelinemessageportoperationtype-dev (= 0.3.28-1), librust-web-sys+profiletimelinestackframe-dev (= 0.3.28-1), librust-web-sys+profiletimelineworkeroperationtype-dev (= 0.3.28-1), librust-web-sys+progressevent-dev (= 0.3.28-1), librust-web-sys+progresseventinit-dev (= 0.3.28-1), librust-web-sys+promisenativehandler-dev (= 0.3.28-1), librust-web-sys+promiserejectionevent-dev (= 0.3.28-1), librust-web-sys+promiserejectioneventinit-dev (= 0.3.28-1), librust-web-sys+publickeycredential-dev (= 0.3.28-1), librust-web-sys+publickeycredentialcreationoptions-dev (= 0.3.28-1), librust-web-sys+publickeycredentialdescriptor-dev (= 0.3.28-1), librust-web-sys+publickeycredentialentity-dev (= 0.3.28-1), librust-web-sys+publickeycredentialparameters-dev (= 0.3.28-1), librust-web-sys+publickeycredentialrequestoptions-dev (= 0.3.28-1), librust-web-sys+publickeycredentialrpentity-dev (= 0.3.28-1), librust-web-sys+publickeycredentialtype-dev (= 0.3.28-1), librust-web-sys+publickeycredentialuserentity-dev (= 0.3.28-1), librust-web-sys+pushencryptionkeyname-dev (= 0.3.28-1), librust-web-sys+pushevent-dev (= 0.3.28-1), librust-web-sys+pusheventinit-dev (= 0.3.28-1), librust-web-sys+pushmanager-dev (= 0.3.28-1), librust-web-sys+pushmessagedata-dev (= 0.3.28-1), librust-web-sys+pushpermissionstate-dev (= 0.3.28-1), librust-web-sys+pushsubscription-dev (= 0.3.28-1), librust-web-sys+pushsubscriptioninit-dev (= 0.3.28-1), librust-web-sys+pushsubscriptionjson-dev (= 0.3.28-1), librust-web-sys+pushsubscriptionkeys-dev (= 0.3.28-1), librust-web-sys+pushsubscriptionoptions-dev (= 0.3.28-1), librust-web-sys+pushsubscriptionoptionsinit-dev (= 0.3.28-1), librust-web-sys+radionodelist-dev (= 0.3.28-1), librust-web-sys+range-dev (= 0.3.28-1), librust-web-sys+rcwnperfstats-dev (= 0.3.28-1), librust-web-sys+rcwnstatus-dev (= 0.3.28-1), librust-web-sys+readablestream-dev (= 0.3.28-1), librust-web-sys+recordingstate-dev (= 0.3.28-1), librust-web-sys+referrerpolicy-dev (= 0.3.28-1), librust-web-sys+registeredkey-dev (= 0.3.28-1), librust-web-sys+registerrequest-dev (= 0.3.28-1), librust-web-sys+registerresponse-dev (= 0.3.28-1), librust-web-sys+registrationoptions-dev (= 0.3.28-1), librust-web-sys+request-dev (= 0.3.28-1), librust-web-sys+requestcache-dev (= 0.3.28-1), librust-web-sys+requestcredentials-dev (= 0.3.28-1), librust-web-sys+requestdestination-dev (= 0.3.28-1), librust-web-sys+requestinit-dev (= 0.3.28-1), librust-web-sys+requestmediakeysystemaccessnotification-dev (= 0.3.28-1), librust-web-sys+requestmode-dev (= 0.3.28-1), librust-web-sys+requestredirect-dev (= 0.3.28-1), librust-web-sys+response-dev (= 0.3.28-1), librust-web-sys+responseinit-dev (= 0.3.28-1), librust-web-sys+responsetype-dev (= 0.3.28-1), librust-web-sys+rsahashedimportparams-dev (= 0.3.28-1), librust-web-sys+rsaoaepparams-dev (= 0.3.28-1), librust-web-sys+rsaotherprimesinfo-dev (= 0.3.28-1), librust-web-sys+rsapssparams-dev (= 0.3.28-1), librust-web-sys+rtcansweroptions-dev (= 0.3.28-1), librust-web-sys+rtcbundlepolicy-dev (= 0.3.28-1), librust-web-sys+rtccertificate-dev (= 0.3.28-1), librust-web-sys+rtccertificateexpiration-dev (= 0.3.28-1), librust-web-sys+rtccodecstats-dev (= 0.3.28-1), librust-web-sys+rtcconfiguration-dev (= 0.3.28-1), librust-web-sys+rtcdatachannel-dev (= 0.3.28-1), librust-web-sys+rtcdatachannelevent-dev (= 0.3.28-1), librust-web-sys+rtcdatachanneleventinit-dev (= 0.3.28-1), librust-web-sys+rtcdatachannelinit-dev (= 0.3.28-1), librust-web-sys+rtcdatachannelstate-dev (= 0.3.28-1), librust-web-sys+rtcdatachanneltype-dev (= 0.3.28-1), librust-web-sys+rtcdegradationpreference-dev (= 0.3.28-1), librust-web-sys+rtcdtmfsender-dev (= 0.3.28-1), librust-web-sys+rtcdtmftonechangeevent-dev (= 0.3.28-1), librust-web-sys+rtcdtmftonechangeeventinit-dev (= 0.3.28-1), librust-web-sys+rtcfecparameters-dev (= 0.3.28-1), librust-web-sys+rtcicecandidate-dev (= 0.3.28-1), librust-web-sys+rtcicecandidateinit-dev (= 0.3.28-1), librust-web-sys+rtcicecandidatepairstats-dev (= 0.3.28-1), librust-web-sys+rtcicecandidatestats-dev (= 0.3.28-1), librust-web-sys+rtcicecomponentstats-dev (= 0.3.28-1), librust-web-sys+rtciceconnectionstate-dev (= 0.3.28-1), librust-web-sys+rtcicecredentialtype-dev (= 0.3.28-1), librust-web-sys+rtcicegatheringstate-dev (= 0.3.28-1), librust-web-sys+rtciceserver-dev (= 0.3.28-1), librust-web-sys+rtcicetransportpolicy-dev (= 0.3.28-1), librust-web-sys+rtcidentityassertion-dev (= 0.3.28-1), librust-web-sys+rtcidentityassertionresult-dev (= 0.3.28-1), librust-web-sys+rtcidentityprovider-dev (= 0.3.28-1), librust-web-sys+rtcidentityproviderdetails-dev (= 0.3.28-1), librust-web-sys+rtcidentityprovideroptions-dev (= 0.3.28-1), librust-web-sys+rtcidentityproviderregistrar-dev (= 0.3.28-1), librust-web-sys+rtcidentityvalidationresult-dev (= 0.3.28-1), librust-web-sys+rtcinboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys+rtclifecycleevent-dev (= 0.3.28-1), librust-web-sys+rtcmediastreamstats-dev (= 0.3.28-1), librust-web-sys+rtcmediastreamtrackstats-dev (= 0.3.28-1), librust-web-sys+rtcofferansweroptions-dev (= 0.3.28-1), librust-web-sys+rtcofferoptions-dev (= 0.3.28-1), librust-web-sys+rtcoutboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys+rtcpeerconnection-dev (= 0.3.28-1), librust-web-sys+rtcpeerconnectioniceevent-dev (= 0.3.28-1), librust-web-sys+rtcpeerconnectioniceeventinit-dev (= 0.3.28-1), librust-web-sys+rtcprioritytype-dev (= 0.3.28-1), librust-web-sys+rtcrtcpparameters-dev (= 0.3.28-1), librust-web-sys+rtcrtpcodecparameters-dev (= 0.3.28-1), librust-web-sys+rtcrtpcontributingsource-dev (= 0.3.28-1), librust-web-sys+rtcrtpcontributingsourcestats-dev (= 0.3.28-1), librust-web-sys+rtcrtpencodingparameters-dev (= 0.3.28-1), librust-web-sys+rtcrtpheaderextensionparameters-dev (= 0.3.28-1), librust-web-sys+rtcrtpparameters-dev (= 0.3.28-1), librust-web-sys+rtcrtpreceiver-dev (= 0.3.28-1), librust-web-sys+rtcrtpsender-dev (= 0.3.28-1), librust-web-sys+rtcrtpsourceentry-dev (= 0.3.28-1), librust-web-sys+rtcrtpsourceentrytype-dev (= 0.3.28-1), librust-web-sys+rtcrtpstreamstats-dev (= 0.3.28-1), librust-web-sys+rtcrtpsynchronizationsource-dev (= 0.3.28-1), librust-web-sys+rtcrtptransceiver-dev (= 0.3.28-1), librust-web-sys+rtcrtptransceiverdirection-dev (= 0.3.28-1), librust-web-sys+rtcrtptransceiverinit-dev (= 0.3.28-1), librust-web-sys+rtcrtxparameters-dev (= 0.3.28-1), librust-web-sys+rtcsdptype-dev (= 0.3.28-1), librust-web-sys+rtcsessiondescription-dev (= 0.3.28-1), librust-web-sys+rtcsessiondescriptioninit-dev (= 0.3.28-1), librust-web-sys+rtcsignalingstate-dev (= 0.3.28-1), librust-web-sys+rtcstats-dev (= 0.3.28-1), librust-web-sys+rtcstatsicecandidatepairstate-dev (= 0.3.28-1), librust-web-sys+rtcstatsicecandidatetype-dev (= 0.3.28-1), librust-web-sys+rtcstatsreport-dev (= 0.3.28-1), librust-web-sys+rtcstatsreportinternal-dev (= 0.3.28-1), librust-web-sys+rtcstatstype-dev (= 0.3.28-1), librust-web-sys+rtctrackevent-dev (= 0.3.28-1), librust-web-sys+rtctrackeventinit-dev (= 0.3.28-1), librust-web-sys+rtctransportstats-dev (= 0.3.28-1), librust-web-sys+screen-dev (= 0.3.28-1), librust-web-sys+screencolorgamut-dev (= 0.3.28-1), librust-web-sys+screenluminance-dev (= 0.3.28-1), librust-web-sys+screenorientation-dev (= 0.3.28-1), librust-web-sys+scriptprocessornode-dev (= 0.3.28-1), librust-web-sys+scrollareaevent-dev (= 0.3.28-1), librust-web-sys+scrollbehavior-dev (= 0.3.28-1), librust-web-sys+scrollboxobject-dev (= 0.3.28-1), librust-web-sys+scrollintoviewoptions-dev (= 0.3.28-1), librust-web-sys+scrolllogicalposition-dev (= 0.3.28-1), librust-web-sys+scrolloptions-dev (= 0.3.28-1), librust-web-sys+scrollrestoration-dev (= 0.3.28-1), librust-web-sys+scrollsetting-dev (= 0.3.28-1), librust-web-sys+scrollstate-dev (= 0.3.28-1), librust-web-sys+scrolltooptions-dev (= 0.3.28-1), librust-web-sys+scrollviewchangeeventinit-dev (= 0.3.28-1), librust-web-sys+securitypolicyviolationevent-dev (= 0.3.28-1), librust-web-sys+securitypolicyviolationeventdisposition-dev (= 0.3.28-1), librust-web-sys+securitypolicyviolationeventinit-dev (= 0.3.28-1), librust-web-sys+selection-dev (= 0.3.28-1), librust-web-sys+serversocketoptions-dev (= 0.3.28-1), librust-web-sys+serviceworker-dev (= 0.3.28-1), librust-web-sys+serviceworkercontainer-dev (= 0.3.28-1), librust-web-sys+serviceworkerglobalscope-dev (= 0.3.28-1), librust-web-sys+serviceworkerregistration-dev (= 0.3.28-1), librust-web-sys+serviceworkerstate-dev (= 0.3.28-1), librust-web-sys+serviceworkerupdateviacache-dev (= 0.3.28-1), librust-web-sys+shadowroot-dev (= 0.3.28-1), librust-web-sys+shadowrootinit-dev (= 0.3.28-1), librust-web-sys+shadowrootmode-dev (= 0.3.28-1), librust-web-sys+sharedworker-dev (= 0.3.28-1), librust-web-sys+sharedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys+signresponse-dev (= 0.3.28-1), librust-web-sys+socketelement-dev (= 0.3.28-1), librust-web-sys+socketoptions-dev (= 0.3.28-1), librust-web-sys+socketreadystate-dev (= 0.3.28-1), librust-web-sys+socketsdict-dev (= 0.3.28-1), librust-web-sys+sourcebuffer-dev (= 0.3.28-1), librust-web-sys+sourcebufferappendmode-dev (= 0.3.28-1), librust-web-sys+sourcebufferlist-dev (= 0.3.28-1), librust-web-sys+speechgrammar-dev (= 0.3.28-1), librust-web-sys+speechgrammarlist-dev (= 0.3.28-1), librust-web-sys+speechrecognition-dev (= 0.3.28-1), librust-web-sys+speechrecognitionalternative-dev (= 0.3.28-1), librust-web-sys+speechrecognitionerror-dev (= 0.3.28-1), librust-web-sys+speechrecognitionerrorcode-dev (= 0.3.28-1), librust-web-sys+speechrecognitionerrorinit-dev (= 0.3.28-1), librust-web-sys+speechrecognitionevent-dev (= 0.3.28-1), librust-web-sys+speechrecognitioneventinit-dev (= 0.3.28-1), librust-web-sys+speechrecognitionresult-dev (= 0.3.28-1), librust-web-sys+speechrecognitionresultlist-dev (= 0.3.28-1), librust-web-sys+speechsynthesis-dev (= 0.3.28-1), librust-web-sys+speechsynthesiserrorcode-dev (= 0.3.28-1), librust-web-sys+speechsynthesiserrorevent-dev (= 0.3.28-1), librust-web-sys+speechsynthesiserroreventinit-dev (= 0.3.28-1), librust-web-sys+speechsynthesisevent-dev (= 0.3.28-1), librust-web-sys+speechsynthesiseventinit-dev (= 0.3.28-1), librust-web-sys+speechsynthesisutterance-dev (= 0.3.28-1), librust-web-sys+speechsynthesisvoice-dev (= 0.3.28-1), librust-web-sys+stereopannernode-dev (= 0.3.28-1), librust-web-sys+stereopanneroptions-dev (= 0.3.28-1), librust-web-sys+storage-dev (= 0.3.28-1), librust-web-sys+storageestimate-dev (= 0.3.28-1), librust-web-sys+storageevent-dev (= 0.3.28-1), librust-web-sys+storageeventinit-dev (= 0.3.28-1), librust-web-sys+storagemanager-dev (= 0.3.28-1), librust-web-sys+storagetype-dev (= 0.3.28-1), librust-web-sys+stylerulechangeeventinit-dev (= 0.3.28-1), librust-web-sys+stylesheet-dev (= 0.3.28-1), librust-web-sys+stylesheetapplicablestatechangeeventinit-dev (= 0.3.28-1), librust-web-sys+stylesheetchangeeventinit-dev (= 0.3.28-1), librust-web-sys+stylesheetlist-dev (= 0.3.28-1), librust-web-sys+subtlecrypto-dev (= 0.3.28-1), librust-web-sys+supportedtype-dev (= 0.3.28-1), librust-web-sys+svgaelement-dev (= 0.3.28-1), librust-web-sys+svgangle-dev (= 0.3.28-1), librust-web-sys+svganimatedangle-dev (= 0.3.28-1), librust-web-sys+svganimatedboolean-dev (= 0.3.28-1), librust-web-sys+svganimatedenumeration-dev (= 0.3.28-1), librust-web-sys+svganimatedinteger-dev (= 0.3.28-1), librust-web-sys+svganimatedlength-dev (= 0.3.28-1), librust-web-sys+svganimatedlengthlist-dev (= 0.3.28-1), librust-web-sys+svganimatednumber-dev (= 0.3.28-1), librust-web-sys+svganimatednumberlist-dev (= 0.3.28-1), librust-web-sys+svganimatedpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys+svganimatedrect-dev (= 0.3.28-1), librust-web-sys+svganimatedstring-dev (= 0.3.28-1), librust-web-sys+svganimatedtransformlist-dev (= 0.3.28-1), librust-web-sys+svganimateelement-dev (= 0.3.28-1), librust-web-sys+svganimatemotionelement-dev (= 0.3.28-1), librust-web-sys+svganimatetransformelement-dev (= 0.3.28-1), librust-web-sys+svganimationelement-dev (= 0.3.28-1), librust-web-sys+svgboundingboxoptions-dev (= 0.3.28-1), librust-web-sys+svgcircleelement-dev (= 0.3.28-1), librust-web-sys+svgclippathelement-dev (= 0.3.28-1), librust-web-sys+svgcomponenttransferfunctionelement-dev (= 0.3.28-1), librust-web-sys+svgdefselement-dev (= 0.3.28-1), librust-web-sys+svgdescelement-dev (= 0.3.28-1), librust-web-sys+svgelement-dev (= 0.3.28-1), librust-web-sys+svgellipseelement-dev (= 0.3.28-1), librust-web-sys+svgfeblendelement-dev (= 0.3.28-1), librust-web-sys+svgfecolormatrixelement-dev (= 0.3.28-1), librust-web-sys+svgfecomponenttransferelement-dev (= 0.3.28-1), librust-web-sys+svgfecompositeelement-dev (= 0.3.28-1), librust-web-sys+svgfeconvolvematrixelement-dev (= 0.3.28-1), librust-web-sys+svgfediffuselightingelement-dev (= 0.3.28-1), librust-web-sys+svgfedisplacementmapelement-dev (= 0.3.28-1), librust-web-sys+svgfedistantlightelement-dev (= 0.3.28-1), librust-web-sys+svgfedropshadowelement-dev (= 0.3.28-1), librust-web-sys+svgfefloodelement-dev (= 0.3.28-1), librust-web-sys+svgfefuncaelement-dev (= 0.3.28-1), librust-web-sys+svgfefuncbelement-dev (= 0.3.28-1), librust-web-sys+svgfefuncgelement-dev (= 0.3.28-1), librust-web-sys+svgfefuncrelement-dev (= 0.3.28-1), librust-web-sys+svgfegaussianblurelement-dev (= 0.3.28-1), librust-web-sys+svgfeimageelement-dev (= 0.3.28-1), librust-web-sys+svgfemergeelement-dev (= 0.3.28-1), librust-web-sys+svgfemergenodeelement-dev (= 0.3.28-1), librust-web-sys+svgfemorphologyelement-dev (= 0.3.28-1), librust-web-sys+svgfeoffsetelement-dev (= 0.3.28-1), librust-web-sys+svgfepointlightelement-dev (= 0.3.28-1), librust-web-sys+svgfespecularlightingelement-dev (= 0.3.28-1), librust-web-sys+svgfespotlightelement-dev (= 0.3.28-1), librust-web-sys+svgfetileelement-dev (= 0.3.28-1), librust-web-sys+svgfeturbulenceelement-dev (= 0.3.28-1), librust-web-sys+svgfilterelement-dev (= 0.3.28-1), librust-web-sys+svgforeignobjectelement-dev (= 0.3.28-1), librust-web-sys+svggelement-dev (= 0.3.28-1), librust-web-sys+svggeometryelement-dev (= 0.3.28-1), librust-web-sys+svggradientelement-dev (= 0.3.28-1), librust-web-sys+svggraphicselement-dev (= 0.3.28-1), librust-web-sys+svgimageelement-dev (= 0.3.28-1), librust-web-sys+svglength-dev (= 0.3.28-1), librust-web-sys+svglengthlist-dev (= 0.3.28-1), librust-web-sys+svglineargradientelement-dev (= 0.3.28-1), librust-web-sys+svglineelement-dev (= 0.3.28-1), librust-web-sys+svgmarkerelement-dev (= 0.3.28-1), librust-web-sys+svgmaskelement-dev (= 0.3.28-1), librust-web-sys+svgmatrix-dev (= 0.3.28-1), librust-web-sys+svgmetadataelement-dev (= 0.3.28-1), librust-web-sys+svgmpathelement-dev (= 0.3.28-1), librust-web-sys+svgnumber-dev (= 0.3.28-1), librust-web-sys+svgnumberlist-dev (= 0.3.28-1), librust-web-sys+svgpathelement-dev (= 0.3.28-1), librust-web-sys+svgpathseg-dev (= 0.3.28-1), librust-web-sys+svgpathsegarcabs-dev (= 0.3.28-1), librust-web-sys+svgpathsegarcrel-dev (= 0.3.28-1), librust-web-sys+svgpathsegclosepath-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetocubicabs-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetocubicrel-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetocubicsmoothabs-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetocubicsmoothrel-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetoquadraticabs-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetoquadraticrel-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetoquadraticsmoothabs-dev (= 0.3.28-1), librust-web-sys+svgpathsegcurvetoquadraticsmoothrel-dev (= 0.3.28-1), librust-web-sys+svgpathseglinetoabs-dev (= 0.3.28-1), librust-web-sys+svgpathseglinetohorizontalabs-dev (= 0.3.28-1), librust-web-sys+svgpathseglinetohorizontalrel-dev (= 0.3.28-1), librust-web-sys+svgpathseglinetorel-dev (= 0.3.28-1), librust-web-sys+svgpathseglinetoverticalabs-dev (= 0.3.28-1), librust-web-sys+svgpathseglinetoverticalrel-dev (= 0.3.28-1), librust-web-sys+svgpathseglist-dev (= 0.3.28-1), librust-web-sys+svgpathsegmovetoabs-dev (= 0.3.28-1), librust-web-sys+svgpathsegmovetorel-dev (= 0.3.28-1), librust-web-sys+svgpatternelement-dev (= 0.3.28-1), librust-web-sys+svgpoint-dev (= 0.3.28-1), librust-web-sys+svgpointlist-dev (= 0.3.28-1), librust-web-sys+svgpolygonelement-dev (= 0.3.28-1), librust-web-sys+svgpolylineelement-dev (= 0.3.28-1), librust-web-sys+svgpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys+svgradialgradientelement-dev (= 0.3.28-1), librust-web-sys+svgrect-dev (= 0.3.28-1), librust-web-sys+svgrectelement-dev (= 0.3.28-1), librust-web-sys+svgscriptelement-dev (= 0.3.28-1), librust-web-sys+svgsetelement-dev (= 0.3.28-1), librust-web-sys+svgstopelement-dev (= 0.3.28-1), librust-web-sys+svgstringlist-dev (= 0.3.28-1), librust-web-sys+svgstyleelement-dev (= 0.3.28-1), librust-web-sys+svgsvgelement-dev (= 0.3.28-1), librust-web-sys+svgswitchelement-dev (= 0.3.28-1), librust-web-sys+svgsymbolelement-dev (= 0.3.28-1), librust-web-sys+svgtextcontentelement-dev (= 0.3.28-1), librust-web-sys+svgtextelement-dev (= 0.3.28-1), librust-web-sys+svgtextpathelement-dev (= 0.3.28-1), librust-web-sys+svgtextpositioningelement-dev (= 0.3.28-1), librust-web-sys+svgtitleelement-dev (= 0.3.28-1), librust-web-sys+svgtransform-dev (= 0.3.28-1), librust-web-sys+svgtransformlist-dev (= 0.3.28-1), librust-web-sys+svgtspanelement-dev (= 0.3.28-1), librust-web-sys+svgunittypes-dev (= 0.3.28-1), librust-web-sys+svguseelement-dev (= 0.3.28-1), librust-web-sys+svgviewelement-dev (= 0.3.28-1), librust-web-sys+svgzoomandpan-dev (= 0.3.28-1), librust-web-sys+tcpreadystate-dev (= 0.3.28-1), librust-web-sys+tcpserversocket-dev (= 0.3.28-1), librust-web-sys+tcpserversocketevent-dev (= 0.3.28-1), librust-web-sys+tcpserversocketeventinit-dev (= 0.3.28-1), librust-web-sys+tcpsocket-dev (= 0.3.28-1), librust-web-sys+tcpsocketbinarytype-dev (= 0.3.28-1), librust-web-sys+tcpsocketerrorevent-dev (= 0.3.28-1), librust-web-sys+tcpsocketerroreventinit-dev (= 0.3.28-1), librust-web-sys+tcpsocketevent-dev (= 0.3.28-1), librust-web-sys+tcpsocketeventinit-dev (= 0.3.28-1), librust-web-sys+text-dev (= 0.3.28-1), librust-web-sys+textdecodeoptions-dev (= 0.3.28-1), librust-web-sys+textdecoder-dev (= 0.3.28-1), librust-web-sys+textdecoderoptions-dev (= 0.3.28-1), librust-web-sys+textencoder-dev (= 0.3.28-1), librust-web-sys+textmetrics-dev (= 0.3.28-1), librust-web-sys+texttrack-dev (= 0.3.28-1), librust-web-sys+texttrackcue-dev (= 0.3.28-1), librust-web-sys+texttrackcuelist-dev (= 0.3.28-1), librust-web-sys+texttrackkind-dev (= 0.3.28-1), librust-web-sys+texttracklist-dev (= 0.3.28-1), librust-web-sys+texttrackmode-dev (= 0.3.28-1), librust-web-sys+timeevent-dev (= 0.3.28-1), librust-web-sys+timeranges-dev (= 0.3.28-1), librust-web-sys+touch-dev (= 0.3.28-1), librust-web-sys+touchevent-dev (= 0.3.28-1), librust-web-sys+toucheventinit-dev (= 0.3.28-1), librust-web-sys+touchinit-dev (= 0.3.28-1), librust-web-sys+touchlist-dev (= 0.3.28-1), librust-web-sys+trackevent-dev (= 0.3.28-1), librust-web-sys+trackeventinit-dev (= 0.3.28-1), librust-web-sys+transitionevent-dev (= 0.3.28-1), librust-web-sys+transitioneventinit-dev (= 0.3.28-1), librust-web-sys+transport-dev (= 0.3.28-1), librust-web-sys+treeboxobject-dev (= 0.3.28-1), librust-web-sys+treecellinfo-dev (= 0.3.28-1), librust-web-sys+treeview-dev (= 0.3.28-1), librust-web-sys+treewalker-dev (= 0.3.28-1), librust-web-sys+u2f-dev (= 0.3.28-1), librust-web-sys+u2fclientdata-dev (= 0.3.28-1), librust-web-sys+udpmessageeventinit-dev (= 0.3.28-1), librust-web-sys+udpoptions-dev (= 0.3.28-1), librust-web-sys+uievent-dev (= 0.3.28-1), librust-web-sys+uieventinit-dev (= 0.3.28-1), librust-web-sys+url-dev (= 0.3.28-1), librust-web-sys+urlsearchparams-dev (= 0.3.28-1), librust-web-sys+userproximityevent-dev (= 0.3.28-1), librust-web-sys+userproximityeventinit-dev (= 0.3.28-1), librust-web-sys+userverificationrequirement-dev (= 0.3.28-1), librust-web-sys+validitystate-dev (= 0.3.28-1), librust-web-sys+videoconfiguration-dev (= 0.3.28-1), librust-web-sys+videofacingmodeenum-dev (= 0.3.28-1), librust-web-sys+videoplaybackquality-dev (= 0.3.28-1), librust-web-sys+videostreamtrack-dev (= 0.3.28-1), librust-web-sys+videotrack-dev (= 0.3.28-1), librust-web-sys+videotracklist-dev (= 0.3.28-1), librust-web-sys+visibilitystate-dev (= 0.3.28-1), librust-web-sys+voidcallback-dev (= 0.3.28-1), librust-web-sys+vrdisplay-dev (= 0.3.28-1), librust-web-sys+vrdisplaycapabilities-dev (= 0.3.28-1), librust-web-sys+vreye-dev (= 0.3.28-1), librust-web-sys+vreyeparameters-dev (= 0.3.28-1), librust-web-sys+vrfieldofview-dev (= 0.3.28-1), librust-web-sys+vrframedata-dev (= 0.3.28-1), librust-web-sys+vrlayer-dev (= 0.3.28-1), librust-web-sys+vrmockcontroller-dev (= 0.3.28-1), librust-web-sys+vrmockdisplay-dev (= 0.3.28-1), librust-web-sys+vrpose-dev (= 0.3.28-1), librust-web-sys+vrservicetest-dev (= 0.3.28-1), librust-web-sys+vrstageparameters-dev (= 0.3.28-1), librust-web-sys+vrsubmitframeresult-dev (= 0.3.28-1), librust-web-sys+vttcue-dev (= 0.3.28-1), librust-web-sys+vttregion-dev (= 0.3.28-1), librust-web-sys+waveshapernode-dev (= 0.3.28-1), librust-web-sys+waveshaperoptions-dev (= 0.3.28-1), librust-web-sys+webgl2renderingcontext-dev (= 0.3.28-1), librust-web-sys+webglactiveinfo-dev (= 0.3.28-1), librust-web-sys+webglbuffer-dev (= 0.3.28-1), librust-web-sys+webglcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys+webglcompressedtextureastc-dev (= 0.3.28-1), librust-web-sys+webglcompressedtextureatc-dev (= 0.3.28-1), librust-web-sys+webglcompressedtextureetc-dev (= 0.3.28-1), librust-web-sys+webglcompressedtextureetc1-dev (= 0.3.28-1), librust-web-sys+webglcompressedtexturepvrtc-dev (= 0.3.28-1), librust-web-sys+webglcompressedtextures3tc-dev (= 0.3.28-1), librust-web-sys+webglcompressedtextures3tcsrgb-dev (= 0.3.28-1), librust-web-sys+webglcontextattributes-dev (= 0.3.28-1), librust-web-sys+webglcontextevent-dev (= 0.3.28-1), librust-web-sys+webglcontexteventinit-dev (= 0.3.28-1), librust-web-sys+webgldebugrendererinfo-dev (= 0.3.28-1), librust-web-sys+webgldebugshaders-dev (= 0.3.28-1), librust-web-sys+webgldepthtexture-dev (= 0.3.28-1), librust-web-sys+webgldrawbuffers-dev (= 0.3.28-1), librust-web-sys+webglframebuffer-dev (= 0.3.28-1), librust-web-sys+webgllosecontext-dev (= 0.3.28-1), librust-web-sys+webglpowerpreference-dev (= 0.3.28-1), librust-web-sys+webglprogram-dev (= 0.3.28-1), librust-web-sys+webglquery-dev (= 0.3.28-1), librust-web-sys+webglrenderbuffer-dev (= 0.3.28-1), librust-web-sys+webglrenderingcontext-dev (= 0.3.28-1), librust-web-sys+webglsampler-dev (= 0.3.28-1), librust-web-sys+webglshader-dev (= 0.3.28-1), librust-web-sys+webglshaderprecisionformat-dev (= 0.3.28-1), librust-web-sys+webglsync-dev (= 0.3.28-1), librust-web-sys+webgltexture-dev (= 0.3.28-1), librust-web-sys+webgltransformfeedback-dev (= 0.3.28-1), librust-web-sys+webgluniformlocation-dev (= 0.3.28-1), librust-web-sys+webglvertexarrayobject-dev (= 0.3.28-1), librust-web-sys+webgpu-dev (= 0.3.28-1), librust-web-sys+webgpuadapter-dev (= 0.3.28-1), librust-web-sys+webgpuadapterdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpuattachmentstate-dev (= 0.3.28-1), librust-web-sys+webgpuattachmentstatedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpubindgroup-dev (= 0.3.28-1), librust-web-sys+webgpubindgroupbinding-dev (= 0.3.28-1), librust-web-sys+webgpubindgroupdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpubindgrouplayout-dev (= 0.3.28-1), librust-web-sys+webgpubindgrouplayoutdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpubinding-dev (= 0.3.28-1), librust-web-sys+webgpubindingtype-dev (= 0.3.28-1), librust-web-sys+webgpublenddescriptor-dev (= 0.3.28-1), librust-web-sys+webgpublendfactor-dev (= 0.3.28-1), librust-web-sys+webgpublendoperation-dev (= 0.3.28-1), librust-web-sys+webgpublendstate-dev (= 0.3.28-1), librust-web-sys+webgpublendstatedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpubuffer-dev (= 0.3.28-1), librust-web-sys+webgpubufferbinding-dev (= 0.3.28-1), librust-web-sys+webgpubufferdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpubufferusage-dev (= 0.3.28-1), librust-web-sys+webgpucolorwritebits-dev (= 0.3.28-1), librust-web-sys+webgpucommandbuffer-dev (= 0.3.28-1), librust-web-sys+webgpucommandencoder-dev (= 0.3.28-1), librust-web-sys+webgpucommandencoderdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpucomparefunction-dev (= 0.3.28-1), librust-web-sys+webgpucomputepipeline-dev (= 0.3.28-1), librust-web-sys+webgpucomputepipelinedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpudepthstencilstate-dev (= 0.3.28-1), librust-web-sys+webgpudepthstencilstatedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpudevice-dev (= 0.3.28-1), librust-web-sys+webgpudevicedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpuextensions-dev (= 0.3.28-1), librust-web-sys+webgpufence-dev (= 0.3.28-1), librust-web-sys+webgpufiltermode-dev (= 0.3.28-1), librust-web-sys+webgpuindexformat-dev (= 0.3.28-1), librust-web-sys+webgpuinputstate-dev (= 0.3.28-1), librust-web-sys+webgpuinputstatedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpuinputstepmode-dev (= 0.3.28-1), librust-web-sys+webgpulimits-dev (= 0.3.28-1), librust-web-sys+webgpuloadop-dev (= 0.3.28-1), librust-web-sys+webgpulogentry-dev (= 0.3.28-1), librust-web-sys+webgpulogentrytype-dev (= 0.3.28-1), librust-web-sys+webgpuobjectstatus-dev (= 0.3.28-1), librust-web-sys+webgpupipelinedescriptorbase-dev (= 0.3.28-1), librust-web-sys+webgpupipelinelayout-dev (= 0.3.28-1), librust-web-sys+webgpupipelinelayoutdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpupipelinestagedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpupowerpreference-dev (= 0.3.28-1), librust-web-sys+webgpuprimitivetopology-dev (= 0.3.28-1), librust-web-sys+webgpuqueue-dev (= 0.3.28-1), librust-web-sys+webgpurenderpassattachmentdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpurenderpassdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpurenderpipeline-dev (= 0.3.28-1), librust-web-sys+webgpurenderpipelinedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpusampler-dev (= 0.3.28-1), librust-web-sys+webgpusamplerdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpushadermodule-dev (= 0.3.28-1), librust-web-sys+webgpushadermoduledescriptor-dev (= 0.3.28-1), librust-web-sys+webgpushaderstage-dev (= 0.3.28-1), librust-web-sys+webgpushaderstagebit-dev (= 0.3.28-1), librust-web-sys+webgpustenciloperation-dev (= 0.3.28-1), librust-web-sys+webgpustencilstatefacedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpustoreop-dev (= 0.3.28-1), librust-web-sys+webgpuswapchain-dev (= 0.3.28-1), librust-web-sys+webgpuswapchaindescriptor-dev (= 0.3.28-1), librust-web-sys+webgputexture-dev (= 0.3.28-1), librust-web-sys+webgputexturedescriptor-dev (= 0.3.28-1), librust-web-sys+webgputexturedimension-dev (= 0.3.28-1), librust-web-sys+webgputextureformat-dev (= 0.3.28-1), librust-web-sys+webgputextureusage-dev (= 0.3.28-1), librust-web-sys+webgputextureview-dev (= 0.3.28-1), librust-web-sys+webgputextureviewdescriptor-dev (= 0.3.28-1), librust-web-sys+webgpuvertexattributedescriptor-dev (= 0.3.28-1), librust-web-sys+webgpuvertexformat-dev (= 0.3.28-1), librust-web-sys+webgpuvertexinputdescriptor-dev (= 0.3.28-1), librust-web-sys+webkitcssmatrix-dev (= 0.3.28-1), librust-web-sys+webrtcglobalstatisticsreport-dev (= 0.3.28-1), librust-web-sys+websocket-dev (= 0.3.28-1), librust-web-sys+websocketdict-dev (= 0.3.28-1), librust-web-sys+websocketelement-dev (= 0.3.28-1), librust-web-sys+wheelevent-dev (= 0.3.28-1), librust-web-sys+wheeleventinit-dev (= 0.3.28-1), librust-web-sys+widevinecdmmanifest-dev (= 0.3.28-1), librust-web-sys+window-dev (= 0.3.28-1), librust-web-sys+windowclient-dev (= 0.3.28-1), librust-web-sys+worker-dev (= 0.3.28-1), librust-web-sys+workerdebuggerglobalscope-dev (= 0.3.28-1), librust-web-sys+workerglobalscope-dev (= 0.3.28-1), librust-web-sys+workerlocation-dev (= 0.3.28-1), librust-web-sys+workernavigator-dev (= 0.3.28-1), librust-web-sys+workeroptions-dev (= 0.3.28-1), librust-web-sys+worklet-dev (= 0.3.28-1), librust-web-sys+workletglobalscope-dev (= 0.3.28-1), librust-web-sys+xmldocument-dev (= 0.3.28-1), librust-web-sys+xmlhttprequest-dev (= 0.3.28-1), librust-web-sys+xmlhttprequesteventtarget-dev (= 0.3.28-1), librust-web-sys+xmlhttprequestresponsetype-dev (= 0.3.28-1), librust-web-sys+xmlhttprequestupload-dev (= 0.3.28-1), librust-web-sys+xmlserializer-dev (= 0.3.28-1), librust-web-sys+xpathexpression-dev (= 0.3.28-1), librust-web-sys+xpathnsresolver-dev (= 0.3.28-1), librust-web-sys+xpathresult-dev (= 0.3.28-1), librust-web-sys+xsltprocessor-dev (= 0.3.28-1), librust-web-sys-0+abortcontroller-dev (= 0.3.28-1), librust-web-sys-0+abortsignal-dev (= 0.3.28-1), librust-web-sys-0+addeventlisteneroptions-dev (= 0.3.28-1), librust-web-sys-0+aescbcparams-dev (= 0.3.28-1), librust-web-sys-0+aesctrparams-dev (= 0.3.28-1), librust-web-sys-0+aesderivedkeyparams-dev (= 0.3.28-1), librust-web-sys-0+aesgcmparams-dev (= 0.3.28-1), librust-web-sys-0+aeskeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0+aeskeygenparams-dev (= 0.3.28-1), librust-web-sys-0+algorithm-dev (= 0.3.28-1), librust-web-sys-0+alignsetting-dev (= 0.3.28-1), librust-web-sys-0+analysernode-dev (= 0.3.28-1), librust-web-sys-0+analyseroptions-dev (= 0.3.28-1), librust-web-sys-0+angleinstancedarrays-dev (= 0.3.28-1), librust-web-sys-0+animation-dev (= 0.3.28-1), librust-web-sys-0+animationeffect-dev (= 0.3.28-1), librust-web-sys-0+animationevent-dev (= 0.3.28-1), librust-web-sys-0+animationeventinit-dev (= 0.3.28-1), librust-web-sys-0+animationplaybackevent-dev (= 0.3.28-1), librust-web-sys-0+animationplaybackeventinit-dev (= 0.3.28-1), librust-web-sys-0+animationplaystate-dev (= 0.3.28-1), librust-web-sys-0+animationpropertydetails-dev (= 0.3.28-1), librust-web-sys-0+animationpropertyvaluedetails-dev (= 0.3.28-1), librust-web-sys-0+animationtimeline-dev (= 0.3.28-1), librust-web-sys-0+assignednodesoptions-dev (= 0.3.28-1), librust-web-sys-0+attestationconveyancepreference-dev (= 0.3.28-1), librust-web-sys-0+attr-dev (= 0.3.28-1), librust-web-sys-0+attributenamevalue-dev (= 0.3.28-1), librust-web-sys-0+audiobuffer-dev (= 0.3.28-1), librust-web-sys-0+audiobufferoptions-dev (= 0.3.28-1), librust-web-sys-0+audiobuffersourcenode-dev (= 0.3.28-1), librust-web-sys-0+audiobuffersourceoptions-dev (= 0.3.28-1), librust-web-sys-0+audioconfiguration-dev (= 0.3.28-1), librust-web-sys-0+audiocontext-dev (= 0.3.28-1), librust-web-sys-0+audiocontextoptions-dev (= 0.3.28-1), librust-web-sys-0+audiocontextstate-dev (= 0.3.28-1), librust-web-sys-0+audiodestinationnode-dev (= 0.3.28-1), librust-web-sys-0+audiolistener-dev (= 0.3.28-1), librust-web-sys-0+audionode-dev (= 0.3.28-1), librust-web-sys-0+audionodeoptions-dev (= 0.3.28-1), librust-web-sys-0+audioparam-dev (= 0.3.28-1), librust-web-sys-0+audioparammap-dev (= 0.3.28-1), librust-web-sys-0+audioprocessingevent-dev (= 0.3.28-1), librust-web-sys-0+audioscheduledsourcenode-dev (= 0.3.28-1), librust-web-sys-0+audiostreamtrack-dev (= 0.3.28-1), librust-web-sys-0+audiotrack-dev (= 0.3.28-1), librust-web-sys-0+audiotracklist-dev (= 0.3.28-1), librust-web-sys-0+audioworklet-dev (= 0.3.28-1), librust-web-sys-0+audioworkletglobalscope-dev (= 0.3.28-1), librust-web-sys-0+audioworkletnode-dev (= 0.3.28-1), librust-web-sys-0+audioworkletnodeoptions-dev (= 0.3.28-1), librust-web-sys-0+audioworkletprocessor-dev (= 0.3.28-1), librust-web-sys-0+authenticationextensionsclientinputs-dev (= 0.3.28-1), librust-web-sys-0+authenticationextensionsclientoutputs-dev (= 0.3.28-1), librust-web-sys-0+authenticatorassertionresponse-dev (= 0.3.28-1), librust-web-sys-0+authenticatorattachment-dev (= 0.3.28-1), librust-web-sys-0+authenticatorattestationresponse-dev (= 0.3.28-1), librust-web-sys-0+authenticatorresponse-dev (= 0.3.28-1), librust-web-sys-0+authenticatorselectioncriteria-dev (= 0.3.28-1), librust-web-sys-0+authenticatortransport-dev (= 0.3.28-1), librust-web-sys-0+autocompleteinfo-dev (= 0.3.28-1), librust-web-sys-0+autokeyword-dev (= 0.3.28-1), librust-web-sys-0+barprop-dev (= 0.3.28-1), librust-web-sys-0+baseaudiocontext-dev (= 0.3.28-1), librust-web-sys-0+basecomputedkeyframe-dev (= 0.3.28-1), librust-web-sys-0+basekeyframe-dev (= 0.3.28-1), librust-web-sys-0+basepropertyindexedkeyframe-dev (= 0.3.28-1), librust-web-sys-0+basiccardrequest-dev (= 0.3.28-1), librust-web-sys-0+basiccardresponse-dev (= 0.3.28-1), librust-web-sys-0+basiccardtype-dev (= 0.3.28-1), librust-web-sys-0+batterymanager-dev (= 0.3.28-1), librust-web-sys-0+beforeunloadevent-dev (= 0.3.28-1), librust-web-sys-0+binarytype-dev (= 0.3.28-1), librust-web-sys-0+biquadfilternode-dev (= 0.3.28-1), librust-web-sys-0+biquadfilteroptions-dev (= 0.3.28-1), librust-web-sys-0+biquadfiltertype-dev (= 0.3.28-1), librust-web-sys-0+blob-dev (= 0.3.28-1), librust-web-sys-0+blobevent-dev (= 0.3.28-1), librust-web-sys-0+blobeventinit-dev (= 0.3.28-1), librust-web-sys-0+blobpropertybag-dev (= 0.3.28-1), librust-web-sys-0+blockparsingoptions-dev (= 0.3.28-1), librust-web-sys-0+boxquadoptions-dev (= 0.3.28-1), librust-web-sys-0+broadcastchannel-dev (= 0.3.28-1), librust-web-sys-0+browserelementdownloadoptions-dev (= 0.3.28-1), librust-web-sys-0+browserelementexecutescriptoptions-dev (= 0.3.28-1), librust-web-sys-0+browserfeedwriter-dev (= 0.3.28-1), librust-web-sys-0+browserfindcasesensitivity-dev (= 0.3.28-1), librust-web-sys-0+browserfinddirection-dev (= 0.3.28-1), librust-web-sys-0+cache-dev (= 0.3.28-1), librust-web-sys-0+cachebatchoperation-dev (= 0.3.28-1), librust-web-sys-0+cachequeryoptions-dev (= 0.3.28-1), librust-web-sys-0+cachestorage-dev (= 0.3.28-1), librust-web-sys-0+cachestoragenamespace-dev (= 0.3.28-1), librust-web-sys-0+canvascapturemediastream-dev (= 0.3.28-1), librust-web-sys-0+canvasgradient-dev (= 0.3.28-1), librust-web-sys-0+canvaspattern-dev (= 0.3.28-1), librust-web-sys-0+canvasrenderingcontext2d-dev (= 0.3.28-1), librust-web-sys-0+canvaswindingrule-dev (= 0.3.28-1), librust-web-sys-0+caretchangedreason-dev (= 0.3.28-1), librust-web-sys-0+caretposition-dev (= 0.3.28-1), librust-web-sys-0+caretstatechangedeventinit-dev (= 0.3.28-1), librust-web-sys-0+cdatasection-dev (= 0.3.28-1), librust-web-sys-0+channelcountmode-dev (= 0.3.28-1), librust-web-sys-0+channelinterpretation-dev (= 0.3.28-1), librust-web-sys-0+channelmergernode-dev (= 0.3.28-1), librust-web-sys-0+channelmergeroptions-dev (= 0.3.28-1), librust-web-sys-0+channelpixellayout-dev (= 0.3.28-1), librust-web-sys-0+channelpixellayoutdatatype-dev (= 0.3.28-1), librust-web-sys-0+channelsplitternode-dev (= 0.3.28-1), librust-web-sys-0+channelsplitteroptions-dev (= 0.3.28-1), librust-web-sys-0+characterdata-dev (= 0.3.28-1), librust-web-sys-0+checkerboardreason-dev (= 0.3.28-1), librust-web-sys-0+checkerboardreport-dev (= 0.3.28-1), librust-web-sys-0+checkerboardreportservice-dev (= 0.3.28-1), librust-web-sys-0+chromefilepropertybag-dev (= 0.3.28-1), librust-web-sys-0+chromeworker-dev (= 0.3.28-1), librust-web-sys-0+client-dev (= 0.3.28-1), librust-web-sys-0+clientqueryoptions-dev (= 0.3.28-1), librust-web-sys-0+clientrectsandtexts-dev (= 0.3.28-1), librust-web-sys-0+clients-dev (= 0.3.28-1), librust-web-sys-0+clienttype-dev (= 0.3.28-1), librust-web-sys-0+clipboardevent-dev (= 0.3.28-1), librust-web-sys-0+clipboardeventinit-dev (= 0.3.28-1), librust-web-sys-0+closeevent-dev (= 0.3.28-1), librust-web-sys-0+closeeventinit-dev (= 0.3.28-1), librust-web-sys-0+collectedclientdata-dev (= 0.3.28-1), librust-web-sys-0+comment-dev (= 0.3.28-1), librust-web-sys-0+compositeoperation-dev (= 0.3.28-1), librust-web-sys-0+compositionevent-dev (= 0.3.28-1), librust-web-sys-0+compositioneventinit-dev (= 0.3.28-1), librust-web-sys-0+computedeffecttiming-dev (= 0.3.28-1), librust-web-sys-0+connectiontype-dev (= 0.3.28-1), librust-web-sys-0+connstatusdict-dev (= 0.3.28-1), librust-web-sys-0+console-dev (= 0.3.28-1), librust-web-sys-0+consolecounter-dev (= 0.3.28-1), librust-web-sys-0+consolecountererror-dev (= 0.3.28-1), librust-web-sys-0+consoleevent-dev (= 0.3.28-1), librust-web-sys-0+consoleinstance-dev (= 0.3.28-1), librust-web-sys-0+consoleinstanceoptions-dev (= 0.3.28-1), librust-web-sys-0+consolelevel-dev (= 0.3.28-1), librust-web-sys-0+consoleloglevel-dev (= 0.3.28-1), librust-web-sys-0+consoleprofileevent-dev (= 0.3.28-1), librust-web-sys-0+consolestackentry-dev (= 0.3.28-1), librust-web-sys-0+consoletimererror-dev (= 0.3.28-1), librust-web-sys-0+consoletimerlogorend-dev (= 0.3.28-1), librust-web-sys-0+consoletimerstart-dev (= 0.3.28-1), librust-web-sys-0+constantsourcenode-dev (= 0.3.28-1), librust-web-sys-0+constantsourceoptions-dev (= 0.3.28-1), librust-web-sys-0+constrainbooleanparameters-dev (= 0.3.28-1), librust-web-sys-0+constraindomstringparameters-dev (= 0.3.28-1), librust-web-sys-0+constraindoublerange-dev (= 0.3.28-1), librust-web-sys-0+constrainlongrange-dev (= 0.3.28-1), librust-web-sys-0+contextattributes2d-dev (= 0.3.28-1), librust-web-sys-0+convertcoordinateoptions-dev (= 0.3.28-1), librust-web-sys-0+convolvernode-dev (= 0.3.28-1), librust-web-sys-0+convolveroptions-dev (= 0.3.28-1), librust-web-sys-0+coordinates-dev (= 0.3.28-1), librust-web-sys-0+credential-dev (= 0.3.28-1), librust-web-sys-0+credentialcreationoptions-dev (= 0.3.28-1), librust-web-sys-0+credentialrequestoptions-dev (= 0.3.28-1), librust-web-sys-0+credentialscontainer-dev (= 0.3.28-1), librust-web-sys-0+crypto-dev (= 0.3.28-1), librust-web-sys-0+cryptokey-dev (= 0.3.28-1), librust-web-sys-0+cryptokeypair-dev (= 0.3.28-1), librust-web-sys-0+csp-dev (= 0.3.28-1), librust-web-sys-0+csppolicies-dev (= 0.3.28-1), librust-web-sys-0+cspreport-dev (= 0.3.28-1), librust-web-sys-0+cspreportproperties-dev (= 0.3.28-1), librust-web-sys-0+css-dev (= 0.3.28-1), librust-web-sys-0+cssanimation-dev (= 0.3.28-1), librust-web-sys-0+cssboxtype-dev (= 0.3.28-1), librust-web-sys-0+cssconditionrule-dev (= 0.3.28-1), librust-web-sys-0+csscounterstylerule-dev (= 0.3.28-1), librust-web-sys-0+cssfontfacerule-dev (= 0.3.28-1), librust-web-sys-0+cssfontfeaturevaluesrule-dev (= 0.3.28-1), librust-web-sys-0+cssgroupingrule-dev (= 0.3.28-1), librust-web-sys-0+cssimportrule-dev (= 0.3.28-1), librust-web-sys-0+csskeyframerule-dev (= 0.3.28-1), librust-web-sys-0+csskeyframesrule-dev (= 0.3.28-1), librust-web-sys-0+cssmediarule-dev (= 0.3.28-1), librust-web-sys-0+cssnamespacerule-dev (= 0.3.28-1), librust-web-sys-0+csspagerule-dev (= 0.3.28-1), librust-web-sys-0+csspseudoelement-dev (= 0.3.28-1), librust-web-sys-0+cssrule-dev (= 0.3.28-1), librust-web-sys-0+cssrulelist-dev (= 0.3.28-1), librust-web-sys-0+cssstyledeclaration-dev (= 0.3.28-1), librust-web-sys-0+cssstylerule-dev (= 0.3.28-1), librust-web-sys-0+cssstylesheet-dev (= 0.3.28-1), librust-web-sys-0+cssstylesheetparsingmode-dev (= 0.3.28-1), librust-web-sys-0+csssupportsrule-dev (= 0.3.28-1), librust-web-sys-0+csstransition-dev (= 0.3.28-1), librust-web-sys-0+customelementregistry-dev (= 0.3.28-1), librust-web-sys-0+customevent-dev (= 0.3.28-1), librust-web-sys-0+customeventinit-dev (= 0.3.28-1), librust-web-sys-0+datatransfer-dev (= 0.3.28-1), librust-web-sys-0+datatransferitem-dev (= 0.3.28-1), librust-web-sys-0+datatransferitemlist-dev (= 0.3.28-1), librust-web-sys-0+datetimevalue-dev (= 0.3.28-1), librust-web-sys-0+decoderdoctornotification-dev (= 0.3.28-1), librust-web-sys-0+decoderdoctornotificationtype-dev (= 0.3.28-1), librust-web-sys-0+dedicatedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0+default-dev (= 0.3.28-1), librust-web-sys-0+delaynode-dev (= 0.3.28-1), librust-web-sys-0+delayoptions-dev (= 0.3.28-1), librust-web-sys-0+deviceacceleration-dev (= 0.3.28-1), librust-web-sys-0+deviceaccelerationinit-dev (= 0.3.28-1), librust-web-sys-0+devicelightevent-dev (= 0.3.28-1), librust-web-sys-0+devicelighteventinit-dev (= 0.3.28-1), librust-web-sys-0+devicemotionevent-dev (= 0.3.28-1), librust-web-sys-0+devicemotioneventinit-dev (= 0.3.28-1), librust-web-sys-0+deviceorientationevent-dev (= 0.3.28-1), librust-web-sys-0+deviceorientationeventinit-dev (= 0.3.28-1), librust-web-sys-0+deviceproximityevent-dev (= 0.3.28-1), librust-web-sys-0+deviceproximityeventinit-dev (= 0.3.28-1), librust-web-sys-0+devicerotationrate-dev (= 0.3.28-1), librust-web-sys-0+devicerotationrateinit-dev (= 0.3.28-1), librust-web-sys-0+dhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys-0+directionsetting-dev (= 0.3.28-1), librust-web-sys-0+directory-dev (= 0.3.28-1), librust-web-sys-0+displaynameoptions-dev (= 0.3.28-1), librust-web-sys-0+displaynameresult-dev (= 0.3.28-1), librust-web-sys-0+distancemodeltype-dev (= 0.3.28-1), librust-web-sys-0+dnscachedict-dev (= 0.3.28-1), librust-web-sys-0+dnscacheentry-dev (= 0.3.28-1), librust-web-sys-0+dnslookupdict-dev (= 0.3.28-1), librust-web-sys-0+document-dev (= 0.3.28-1), librust-web-sys-0+documentfragment-dev (= 0.3.28-1), librust-web-sys-0+documenttimeline-dev (= 0.3.28-1), librust-web-sys-0+documenttimelineoptions-dev (= 0.3.28-1), librust-web-sys-0+documenttype-dev (= 0.3.28-1), librust-web-sys-0+domerror-dev (= 0.3.28-1), librust-web-sys-0+domexception-dev (= 0.3.28-1), librust-web-sys-0+domimplementation-dev (= 0.3.28-1), librust-web-sys-0+dommatrix-dev (= 0.3.28-1), librust-web-sys-0+dommatrixreadonly-dev (= 0.3.28-1), librust-web-sys-0+domparser-dev (= 0.3.28-1), librust-web-sys-0+dompoint-dev (= 0.3.28-1), librust-web-sys-0+dompointinit-dev (= 0.3.28-1), librust-web-sys-0+dompointreadonly-dev (= 0.3.28-1), librust-web-sys-0+domquad-dev (= 0.3.28-1), librust-web-sys-0+domquadinit-dev (= 0.3.28-1), librust-web-sys-0+domquadjson-dev (= 0.3.28-1), librust-web-sys-0+domrect-dev (= 0.3.28-1), librust-web-sys-0+domrectinit-dev (= 0.3.28-1), librust-web-sys-0+domrectlist-dev (= 0.3.28-1), librust-web-sys-0+domrectreadonly-dev (= 0.3.28-1), librust-web-sys-0+domrequest-dev (= 0.3.28-1), librust-web-sys-0+domrequestreadystate-dev (= 0.3.28-1), librust-web-sys-0+domstringlist-dev (= 0.3.28-1), librust-web-sys-0+domstringmap-dev (= 0.3.28-1), librust-web-sys-0+domtokenlist-dev (= 0.3.28-1), librust-web-sys-0+domwindowresizeeventdetail-dev (= 0.3.28-1), librust-web-sys-0+dragevent-dev (= 0.3.28-1), librust-web-sys-0+drageventinit-dev (= 0.3.28-1), librust-web-sys-0+dynamicscompressornode-dev (= 0.3.28-1), librust-web-sys-0+dynamicscompressoroptions-dev (= 0.3.28-1), librust-web-sys-0+ecdhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys-0+ecdsaparams-dev (= 0.3.28-1), librust-web-sys-0+eckeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0+eckeygenparams-dev (= 0.3.28-1), librust-web-sys-0+eckeyimportparams-dev (= 0.3.28-1), librust-web-sys-0+effecttiming-dev (= 0.3.28-1), librust-web-sys-0+element-dev (= 0.3.28-1), librust-web-sys-0+elementcreationoptions-dev (= 0.3.28-1), librust-web-sys-0+elementdefinitionoptions-dev (= 0.3.28-1), librust-web-sys-0+endingtypes-dev (= 0.3.28-1), librust-web-sys-0+errorcallback-dev (= 0.3.28-1), librust-web-sys-0+errorevent-dev (= 0.3.28-1), librust-web-sys-0+erroreventinit-dev (= 0.3.28-1), librust-web-sys-0+event-dev (= 0.3.28-1), librust-web-sys-0+eventinit-dev (= 0.3.28-1), librust-web-sys-0+eventlistener-dev (= 0.3.28-1), librust-web-sys-0+eventlisteneroptions-dev (= 0.3.28-1), librust-web-sys-0+eventmodifierinit-dev (= 0.3.28-1), librust-web-sys-0+eventsource-dev (= 0.3.28-1), librust-web-sys-0+eventsourceinit-dev (= 0.3.28-1), librust-web-sys-0+eventtarget-dev (= 0.3.28-1), librust-web-sys-0+exception-dev (= 0.3.28-1), librust-web-sys-0+extblendminmax-dev (= 0.3.28-1), librust-web-sys-0+extcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys-0+extcolorbufferhalffloat-dev (= 0.3.28-1), librust-web-sys-0+extdisjointtimerquery-dev (= 0.3.28-1), librust-web-sys-0+extendableevent-dev (= 0.3.28-1), librust-web-sys-0+extendableeventinit-dev (= 0.3.28-1), librust-web-sys-0+extendablemessageevent-dev (= 0.3.28-1), librust-web-sys-0+extendablemessageeventinit-dev (= 0.3.28-1), librust-web-sys-0+external-dev (= 0.3.28-1), librust-web-sys-0+extfragdepth-dev (= 0.3.28-1), librust-web-sys-0+extshadertexturelod-dev (= 0.3.28-1), librust-web-sys-0+extsrgb-dev (= 0.3.28-1), librust-web-sys-0+exttexturefilteranisotropic-dev (= 0.3.28-1), librust-web-sys-0+fakepluginmimeentry-dev (= 0.3.28-1), librust-web-sys-0+fakeplugintaginit-dev (= 0.3.28-1), librust-web-sys-0+fetchevent-dev (= 0.3.28-1), librust-web-sys-0+fetcheventinit-dev (= 0.3.28-1), librust-web-sys-0+fetchobserver-dev (= 0.3.28-1), librust-web-sys-0+fetchreadablestreamreaddataarray-dev (= 0.3.28-1), librust-web-sys-0+fetchreadablestreamreaddatadone-dev (= 0.3.28-1), librust-web-sys-0+fetchstate-dev (= 0.3.28-1), librust-web-sys-0+file-dev (= 0.3.28-1), librust-web-sys-0+filecallback-dev (= 0.3.28-1), librust-web-sys-0+filelist-dev (= 0.3.28-1), librust-web-sys-0+filepropertybag-dev (= 0.3.28-1), librust-web-sys-0+filereader-dev (= 0.3.28-1), librust-web-sys-0+filereadersync-dev (= 0.3.28-1), librust-web-sys-0+filesystem-dev (= 0.3.28-1), librust-web-sys-0+filesystemdirectoryentry-dev (= 0.3.28-1), librust-web-sys-0+filesystemdirectoryreader-dev (= 0.3.28-1), librust-web-sys-0+filesystementriescallback-dev (= 0.3.28-1), librust-web-sys-0+filesystementry-dev (= 0.3.28-1), librust-web-sys-0+filesystementrycallback-dev (= 0.3.28-1), librust-web-sys-0+filesystemfileentry-dev (= 0.3.28-1), librust-web-sys-0+filesystemflags-dev (= 0.3.28-1), librust-web-sys-0+fillmode-dev (= 0.3.28-1), librust-web-sys-0+flashclassification-dev (= 0.3.28-1), librust-web-sys-0+flexlinegrowthstate-dev (= 0.3.28-1), librust-web-sys-0+focusevent-dev (= 0.3.28-1), librust-web-sys-0+focuseventinit-dev (= 0.3.28-1), librust-web-sys-0+fontface-dev (= 0.3.28-1), librust-web-sys-0+fontfacedescriptors-dev (= 0.3.28-1), librust-web-sys-0+fontfaceloadstatus-dev (= 0.3.28-1), librust-web-sys-0+fontfaceset-dev (= 0.3.28-1), librust-web-sys-0+fontfacesetiterator-dev (= 0.3.28-1), librust-web-sys-0+fontfacesetiteratorresult-dev (= 0.3.28-1), librust-web-sys-0+fontfacesetloadevent-dev (= 0.3.28-1), librust-web-sys-0+fontfacesetloadeventinit-dev (= 0.3.28-1), librust-web-sys-0+fontfacesetloadstatus-dev (= 0.3.28-1), librust-web-sys-0+formdata-dev (= 0.3.28-1), librust-web-sys-0+frametype-dev (= 0.3.28-1), librust-web-sys-0+fuzzingfunctions-dev (= 0.3.28-1), librust-web-sys-0+gainnode-dev (= 0.3.28-1), librust-web-sys-0+gainoptions-dev (= 0.3.28-1), librust-web-sys-0+gamepad-dev (= 0.3.28-1), librust-web-sys-0+gamepadaxismoveevent-dev (= 0.3.28-1), librust-web-sys-0+gamepadaxismoveeventinit-dev (= 0.3.28-1), librust-web-sys-0+gamepadbutton-dev (= 0.3.28-1), librust-web-sys-0+gamepadbuttonevent-dev (= 0.3.28-1), librust-web-sys-0+gamepadbuttoneventinit-dev (= 0.3.28-1), librust-web-sys-0+gamepadevent-dev (= 0.3.28-1), librust-web-sys-0+gamepadeventinit-dev (= 0.3.28-1), librust-web-sys-0+gamepadhand-dev (= 0.3.28-1), librust-web-sys-0+gamepadhapticactuator-dev (= 0.3.28-1), librust-web-sys-0+gamepadhapticactuatortype-dev (= 0.3.28-1), librust-web-sys-0+gamepadmappingtype-dev (= 0.3.28-1), librust-web-sys-0+gamepadpose-dev (= 0.3.28-1), librust-web-sys-0+gamepadservicetest-dev (= 0.3.28-1), librust-web-sys-0+geolocation-dev (= 0.3.28-1), librust-web-sys-0+getnotificationoptions-dev (= 0.3.28-1), librust-web-sys-0+getrootnodeoptions-dev (= 0.3.28-1), librust-web-sys-0+getusermediarequest-dev (= 0.3.28-1), librust-web-sys-0+griddeclaration-dev (= 0.3.28-1), librust-web-sys-0+gridtrackstate-dev (= 0.3.28-1), librust-web-sys-0+groupedhistoryeventinit-dev (= 0.3.28-1), librust-web-sys-0+halfopeninfodict-dev (= 0.3.28-1), librust-web-sys-0+hashchangeevent-dev (= 0.3.28-1), librust-web-sys-0+hashchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+headers-dev (= 0.3.28-1), librust-web-sys-0+headersguardenum-dev (= 0.3.28-1), librust-web-sys-0+hiddenplugineventinit-dev (= 0.3.28-1), librust-web-sys-0+history-dev (= 0.3.28-1), librust-web-sys-0+hitregionoptions-dev (= 0.3.28-1), librust-web-sys-0+hkdfparams-dev (= 0.3.28-1), librust-web-sys-0+hmacderivedkeyparams-dev (= 0.3.28-1), librust-web-sys-0+hmacimportparams-dev (= 0.3.28-1), librust-web-sys-0+hmackeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0+hmackeygenparams-dev (= 0.3.28-1), librust-web-sys-0+htmlallcollection-dev (= 0.3.28-1), librust-web-sys-0+htmlanchorelement-dev (= 0.3.28-1), librust-web-sys-0+htmlareaelement-dev (= 0.3.28-1), librust-web-sys-0+htmlaudioelement-dev (= 0.3.28-1), librust-web-sys-0+htmlbaseelement-dev (= 0.3.28-1), librust-web-sys-0+htmlbodyelement-dev (= 0.3.28-1), librust-web-sys-0+htmlbrelement-dev (= 0.3.28-1), librust-web-sys-0+htmlbuttonelement-dev (= 0.3.28-1), librust-web-sys-0+htmlcanvaselement-dev (= 0.3.28-1), librust-web-sys-0+htmlcollection-dev (= 0.3.28-1), librust-web-sys-0+htmldataelement-dev (= 0.3.28-1), librust-web-sys-0+htmldatalistelement-dev (= 0.3.28-1), librust-web-sys-0+htmldetailselement-dev (= 0.3.28-1), librust-web-sys-0+htmldialogelement-dev (= 0.3.28-1), librust-web-sys-0+htmldirectoryelement-dev (= 0.3.28-1), librust-web-sys-0+htmldivelement-dev (= 0.3.28-1), librust-web-sys-0+htmldlistelement-dev (= 0.3.28-1), librust-web-sys-0+htmldocument-dev (= 0.3.28-1), librust-web-sys-0+htmlelement-dev (= 0.3.28-1), librust-web-sys-0+htmlembedelement-dev (= 0.3.28-1), librust-web-sys-0+htmlfieldsetelement-dev (= 0.3.28-1), librust-web-sys-0+htmlfontelement-dev (= 0.3.28-1), librust-web-sys-0+htmlformcontrolscollection-dev (= 0.3.28-1), librust-web-sys-0+htmlformelement-dev (= 0.3.28-1), librust-web-sys-0+htmlframeelement-dev (= 0.3.28-1), librust-web-sys-0+htmlframesetelement-dev (= 0.3.28-1), librust-web-sys-0+htmlheadelement-dev (= 0.3.28-1), librust-web-sys-0+htmlheadingelement-dev (= 0.3.28-1), librust-web-sys-0+htmlhrelement-dev (= 0.3.28-1), librust-web-sys-0+htmlhtmlelement-dev (= 0.3.28-1), librust-web-sys-0+htmlhyperlinkelementutils-dev (= 0.3.28-1), librust-web-sys-0+htmliframeelement-dev (= 0.3.28-1), librust-web-sys-0+htmlimageelement-dev (= 0.3.28-1), librust-web-sys-0+htmlinputelement-dev (= 0.3.28-1), librust-web-sys-0+htmllabelelement-dev (= 0.3.28-1), librust-web-sys-0+htmllegendelement-dev (= 0.3.28-1), librust-web-sys-0+htmllielement-dev (= 0.3.28-1), librust-web-sys-0+htmllinkelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmapelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmediaelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmenuelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmenuitemelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmetaelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmeterelement-dev (= 0.3.28-1), librust-web-sys-0+htmlmodelement-dev (= 0.3.28-1), librust-web-sys-0+htmlobjectelement-dev (= 0.3.28-1), librust-web-sys-0+htmlolistelement-dev (= 0.3.28-1), librust-web-sys-0+htmloptgroupelement-dev (= 0.3.28-1), librust-web-sys-0+htmloptionelement-dev (= 0.3.28-1), librust-web-sys-0+htmloptionscollection-dev (= 0.3.28-1), librust-web-sys-0+htmloutputelement-dev (= 0.3.28-1), librust-web-sys-0+htmlparagraphelement-dev (= 0.3.28-1), librust-web-sys-0+htmlparamelement-dev (= 0.3.28-1), librust-web-sys-0+htmlpictureelement-dev (= 0.3.28-1), librust-web-sys-0+htmlpreelement-dev (= 0.3.28-1), librust-web-sys-0+htmlprogresselement-dev (= 0.3.28-1), librust-web-sys-0+htmlquoteelement-dev (= 0.3.28-1), librust-web-sys-0+htmlscriptelement-dev (= 0.3.28-1), librust-web-sys-0+htmlselectelement-dev (= 0.3.28-1), librust-web-sys-0+htmlslotelement-dev (= 0.3.28-1), librust-web-sys-0+htmlsourceelement-dev (= 0.3.28-1), librust-web-sys-0+htmlspanelement-dev (= 0.3.28-1), librust-web-sys-0+htmlstyleelement-dev (= 0.3.28-1), librust-web-sys-0+htmltablecaptionelement-dev (= 0.3.28-1), librust-web-sys-0+htmltablecellelement-dev (= 0.3.28-1), librust-web-sys-0+htmltablecolelement-dev (= 0.3.28-1), librust-web-sys-0+htmltableelement-dev (= 0.3.28-1), librust-web-sys-0+htmltablerowelement-dev (= 0.3.28-1), librust-web-sys-0+htmltablesectionelement-dev (= 0.3.28-1), librust-web-sys-0+htmltemplateelement-dev (= 0.3.28-1), librust-web-sys-0+htmltextareaelement-dev (= 0.3.28-1), librust-web-sys-0+htmltimeelement-dev (= 0.3.28-1), librust-web-sys-0+htmltitleelement-dev (= 0.3.28-1), librust-web-sys-0+htmltrackelement-dev (= 0.3.28-1), librust-web-sys-0+htmlulistelement-dev (= 0.3.28-1), librust-web-sys-0+htmlunknownelement-dev (= 0.3.28-1), librust-web-sys-0+htmlvideoelement-dev (= 0.3.28-1), librust-web-sys-0+httpconndict-dev (= 0.3.28-1), librust-web-sys-0+httpconnectionelement-dev (= 0.3.28-1), librust-web-sys-0+httpconninfo-dev (= 0.3.28-1), librust-web-sys-0+idbcursor-dev (= 0.3.28-1), librust-web-sys-0+idbcursordirection-dev (= 0.3.28-1), librust-web-sys-0+idbcursorwithvalue-dev (= 0.3.28-1), librust-web-sys-0+idbdatabase-dev (= 0.3.28-1), librust-web-sys-0+idbfactory-dev (= 0.3.28-1), librust-web-sys-0+idbfilehandle-dev (= 0.3.28-1), librust-web-sys-0+idbfilemetadataparameters-dev (= 0.3.28-1), librust-web-sys-0+idbfilerequest-dev (= 0.3.28-1), librust-web-sys-0+idbindex-dev (= 0.3.28-1), librust-web-sys-0+idbindexparameters-dev (= 0.3.28-1), librust-web-sys-0+idbkeyrange-dev (= 0.3.28-1), librust-web-sys-0+idblocaleawarekeyrange-dev (= 0.3.28-1), librust-web-sys-0+idbmutablefile-dev (= 0.3.28-1), librust-web-sys-0+idbobjectstore-dev (= 0.3.28-1), librust-web-sys-0+idbobjectstoreparameters-dev (= 0.3.28-1), librust-web-sys-0+idbopendboptions-dev (= 0.3.28-1), librust-web-sys-0+idbopendbrequest-dev (= 0.3.28-1), librust-web-sys-0+idbrequest-dev (= 0.3.28-1), librust-web-sys-0+idbrequestreadystate-dev (= 0.3.28-1), librust-web-sys-0+idbtransaction-dev (= 0.3.28-1), librust-web-sys-0+idbtransactionmode-dev (= 0.3.28-1), librust-web-sys-0+idbversionchangeevent-dev (= 0.3.28-1), librust-web-sys-0+idbversionchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+idledeadline-dev (= 0.3.28-1), librust-web-sys-0+idlerequestoptions-dev (= 0.3.28-1), librust-web-sys-0+iirfilternode-dev (= 0.3.28-1), librust-web-sys-0+iirfilteroptions-dev (= 0.3.28-1), librust-web-sys-0+imagebitmap-dev (= 0.3.28-1), librust-web-sys-0+imagebitmapformat-dev (= 0.3.28-1), librust-web-sys-0+imagebitmaprenderingcontext-dev (= 0.3.28-1), librust-web-sys-0+imagecapture-dev (= 0.3.28-1), librust-web-sys-0+imagecaptureerror-dev (= 0.3.28-1), librust-web-sys-0+imagecaptureerrorevent-dev (= 0.3.28-1), librust-web-sys-0+imagecaptureerroreventinit-dev (= 0.3.28-1), librust-web-sys-0+imagedata-dev (= 0.3.28-1), librust-web-sys-0+inputevent-dev (= 0.3.28-1), librust-web-sys-0+inputeventinit-dev (= 0.3.28-1), librust-web-sys-0+installtriggerdata-dev (= 0.3.28-1), librust-web-sys-0+intersectionobserver-dev (= 0.3.28-1), librust-web-sys-0+intersectionobserverentry-dev (= 0.3.28-1), librust-web-sys-0+intersectionobserverentryinit-dev (= 0.3.28-1), librust-web-sys-0+intersectionobserverinit-dev (= 0.3.28-1), librust-web-sys-0+intlutils-dev (= 0.3.28-1), librust-web-sys-0+iterablekeyandvalueresult-dev (= 0.3.28-1), librust-web-sys-0+iterablekeyorvalueresult-dev (= 0.3.28-1), librust-web-sys-0+iterationcompositeoperation-dev (= 0.3.28-1), librust-web-sys-0+jsonwebkey-dev (= 0.3.28-1), librust-web-sys-0+keyalgorithm-dev (= 0.3.28-1), librust-web-sys-0+keyboardevent-dev (= 0.3.28-1), librust-web-sys-0+keyboardeventinit-dev (= 0.3.28-1), librust-web-sys-0+keyevent-dev (= 0.3.28-1), librust-web-sys-0+keyframeeffect-dev (= 0.3.28-1), librust-web-sys-0+keyframeeffectoptions-dev (= 0.3.28-1), librust-web-sys-0+keyidsinitdata-dev (= 0.3.28-1), librust-web-sys-0+l10nelement-dev (= 0.3.28-1), librust-web-sys-0+l10nvalue-dev (= 0.3.28-1), librust-web-sys-0+lifecyclecallbacks-dev (= 0.3.28-1), librust-web-sys-0+linealignsetting-dev (= 0.3.28-1), librust-web-sys-0+listboxobject-dev (= 0.3.28-1), librust-web-sys-0+localeinfo-dev (= 0.3.28-1), librust-web-sys-0+localmediastream-dev (= 0.3.28-1), librust-web-sys-0+location-dev (= 0.3.28-1), librust-web-sys-0+mediacapabilities-dev (= 0.3.28-1), librust-web-sys-0+mediacapabilitiesinfo-dev (= 0.3.28-1), librust-web-sys-0+mediaconfiguration-dev (= 0.3.28-1), librust-web-sys-0+mediadecodingconfiguration-dev (= 0.3.28-1), librust-web-sys-0+mediadecodingtype-dev (= 0.3.28-1), librust-web-sys-0+mediadeviceinfo-dev (= 0.3.28-1), librust-web-sys-0+mediadevicekind-dev (= 0.3.28-1), librust-web-sys-0+mediadevices-dev (= 0.3.28-1), librust-web-sys-0+mediaelementaudiosourcenode-dev (= 0.3.28-1), librust-web-sys-0+mediaelementaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys-0+mediaencodingconfiguration-dev (= 0.3.28-1), librust-web-sys-0+mediaencodingtype-dev (= 0.3.28-1), librust-web-sys-0+mediaencryptedevent-dev (= 0.3.28-1), librust-web-sys-0+mediaerror-dev (= 0.3.28-1), librust-web-sys-0+mediakeyerror-dev (= 0.3.28-1), librust-web-sys-0+mediakeymessageevent-dev (= 0.3.28-1), librust-web-sys-0+mediakeymessageeventinit-dev (= 0.3.28-1), librust-web-sys-0+mediakeymessagetype-dev (= 0.3.28-1), librust-web-sys-0+mediakeyneededeventinit-dev (= 0.3.28-1), librust-web-sys-0+mediakeys-dev (= 0.3.28-1), librust-web-sys-0+mediakeysession-dev (= 0.3.28-1), librust-web-sys-0+mediakeysessiontype-dev (= 0.3.28-1), librust-web-sys-0+mediakeyspolicy-dev (= 0.3.28-1), librust-web-sys-0+mediakeysrequirement-dev (= 0.3.28-1), librust-web-sys-0+mediakeystatus-dev (= 0.3.28-1), librust-web-sys-0+mediakeystatusmap-dev (= 0.3.28-1), librust-web-sys-0+mediakeysystemaccess-dev (= 0.3.28-1), librust-web-sys-0+mediakeysystemconfiguration-dev (= 0.3.28-1), librust-web-sys-0+mediakeysystemmediacapability-dev (= 0.3.28-1), librust-web-sys-0+mediakeysystemstatus-dev (= 0.3.28-1), librust-web-sys-0+medialist-dev (= 0.3.28-1), librust-web-sys-0+mediaquerylist-dev (= 0.3.28-1), librust-web-sys-0+mediaquerylistevent-dev (= 0.3.28-1), librust-web-sys-0+mediaquerylisteventinit-dev (= 0.3.28-1), librust-web-sys-0+mediarecorder-dev (= 0.3.28-1), librust-web-sys-0+mediarecordererrorevent-dev (= 0.3.28-1), librust-web-sys-0+mediarecordererroreventinit-dev (= 0.3.28-1), librust-web-sys-0+mediarecorderoptions-dev (= 0.3.28-1), librust-web-sys-0+mediasource-dev (= 0.3.28-1), librust-web-sys-0+mediasourceendofstreamerror-dev (= 0.3.28-1), librust-web-sys-0+mediasourceenum-dev (= 0.3.28-1), librust-web-sys-0+mediasourcereadystate-dev (= 0.3.28-1), librust-web-sys-0+mediastream-dev (= 0.3.28-1), librust-web-sys-0+mediastreamaudiodestinationnode-dev (= 0.3.28-1), librust-web-sys-0+mediastreamaudiosourcenode-dev (= 0.3.28-1), librust-web-sys-0+mediastreamaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys-0+mediastreamconstraints-dev (= 0.3.28-1), librust-web-sys-0+mediastreamerror-dev (= 0.3.28-1), librust-web-sys-0+mediastreamevent-dev (= 0.3.28-1), librust-web-sys-0+mediastreameventinit-dev (= 0.3.28-1), librust-web-sys-0+mediastreamtrack-dev (= 0.3.28-1), librust-web-sys-0+mediastreamtrackevent-dev (= 0.3.28-1), librust-web-sys-0+mediastreamtrackeventinit-dev (= 0.3.28-1), librust-web-sys-0+mediastreamtrackstate-dev (= 0.3.28-1), librust-web-sys-0+mediatrackconstraints-dev (= 0.3.28-1), librust-web-sys-0+mediatrackconstraintset-dev (= 0.3.28-1), librust-web-sys-0+mediatracksettings-dev (= 0.3.28-1), librust-web-sys-0+mediatracksupportedconstraints-dev (= 0.3.28-1), librust-web-sys-0+messagechannel-dev (= 0.3.28-1), librust-web-sys-0+messageevent-dev (= 0.3.28-1), librust-web-sys-0+messageeventinit-dev (= 0.3.28-1), librust-web-sys-0+messageport-dev (= 0.3.28-1), librust-web-sys-0+midiaccess-dev (= 0.3.28-1), librust-web-sys-0+midiconnectionevent-dev (= 0.3.28-1), librust-web-sys-0+midiconnectioneventinit-dev (= 0.3.28-1), librust-web-sys-0+midiinput-dev (= 0.3.28-1), librust-web-sys-0+midiinputmap-dev (= 0.3.28-1), librust-web-sys-0+midimessageevent-dev (= 0.3.28-1), librust-web-sys-0+midimessageeventinit-dev (= 0.3.28-1), librust-web-sys-0+midioptions-dev (= 0.3.28-1), librust-web-sys-0+midioutput-dev (= 0.3.28-1), librust-web-sys-0+midioutputmap-dev (= 0.3.28-1), librust-web-sys-0+midiport-dev (= 0.3.28-1), librust-web-sys-0+midiportconnectionstate-dev (= 0.3.28-1), librust-web-sys-0+midiportdevicestate-dev (= 0.3.28-1), librust-web-sys-0+midiporttype-dev (= 0.3.28-1), librust-web-sys-0+mimetype-dev (= 0.3.28-1), librust-web-sys-0+mimetypearray-dev (= 0.3.28-1), librust-web-sys-0+mouseevent-dev (= 0.3.28-1), librust-web-sys-0+mouseeventinit-dev (= 0.3.28-1), librust-web-sys-0+mousescrollevent-dev (= 0.3.28-1), librust-web-sys-0+mozdebug-dev (= 0.3.28-1), librust-web-sys-0+mutationevent-dev (= 0.3.28-1), librust-web-sys-0+mutationobserver-dev (= 0.3.28-1), librust-web-sys-0+mutationobserverinit-dev (= 0.3.28-1), librust-web-sys-0+mutationobservinginfo-dev (= 0.3.28-1), librust-web-sys-0+mutationrecord-dev (= 0.3.28-1), librust-web-sys-0+namednodemap-dev (= 0.3.28-1), librust-web-sys-0+nativeosfilereadoptions-dev (= 0.3.28-1), librust-web-sys-0+nativeosfilewriteatomicoptions-dev (= 0.3.28-1), librust-web-sys-0+navigationtype-dev (= 0.3.28-1), librust-web-sys-0+navigator-dev (= 0.3.28-1), librust-web-sys-0+navigatorautomationinformation-dev (= 0.3.28-1), librust-web-sys-0+networkcommandoptions-dev (= 0.3.28-1), librust-web-sys-0+networkinformation-dev (= 0.3.28-1), librust-web-sys-0+networkresultoptions-dev (= 0.3.28-1), librust-web-sys-0+node-dev (= 0.3.28-1), librust-web-sys-0+nodefilter-dev (= 0.3.28-1), librust-web-sys-0+nodeiterator-dev (= 0.3.28-1), librust-web-sys-0+nodelist-dev (= 0.3.28-1), librust-web-sys-0+notification-dev (= 0.3.28-1), librust-web-sys-0+notificationbehavior-dev (= 0.3.28-1), librust-web-sys-0+notificationdirection-dev (= 0.3.28-1), librust-web-sys-0+notificationevent-dev (= 0.3.28-1), librust-web-sys-0+notificationeventinit-dev (= 0.3.28-1), librust-web-sys-0+notificationoptions-dev (= 0.3.28-1), librust-web-sys-0+notificationpermission-dev (= 0.3.28-1), librust-web-sys-0+observercallback-dev (= 0.3.28-1), librust-web-sys-0+oeselementindexuint-dev (= 0.3.28-1), librust-web-sys-0+oesstandardderivatives-dev (= 0.3.28-1), librust-web-sys-0+oestexturefloat-dev (= 0.3.28-1), librust-web-sys-0+oestexturefloatlinear-dev (= 0.3.28-1), librust-web-sys-0+oestexturehalffloat-dev (= 0.3.28-1), librust-web-sys-0+oestexturehalffloatlinear-dev (= 0.3.28-1), librust-web-sys-0+oesvertexarrayobject-dev (= 0.3.28-1), librust-web-sys-0+offlineaudiocompletionevent-dev (= 0.3.28-1), librust-web-sys-0+offlineaudiocompletioneventinit-dev (= 0.3.28-1), librust-web-sys-0+offlineaudiocontext-dev (= 0.3.28-1), librust-web-sys-0+offlineaudiocontextoptions-dev (= 0.3.28-1), librust-web-sys-0+offlineresourcelist-dev (= 0.3.28-1), librust-web-sys-0+offscreencanvas-dev (= 0.3.28-1), librust-web-sys-0+openwindoweventdetail-dev (= 0.3.28-1), librust-web-sys-0+optionaleffecttiming-dev (= 0.3.28-1), librust-web-sys-0+orientationlocktype-dev (= 0.3.28-1), librust-web-sys-0+orientationtype-dev (= 0.3.28-1), librust-web-sys-0+oscillatornode-dev (= 0.3.28-1), librust-web-sys-0+oscillatoroptions-dev (= 0.3.28-1), librust-web-sys-0+oscillatortype-dev (= 0.3.28-1), librust-web-sys-0+oversampletype-dev (= 0.3.28-1), librust-web-sys-0+pagetransitionevent-dev (= 0.3.28-1), librust-web-sys-0+pagetransitioneventinit-dev (= 0.3.28-1), librust-web-sys-0+paintrequest-dev (= 0.3.28-1), librust-web-sys-0+paintrequestlist-dev (= 0.3.28-1), librust-web-sys-0+paintworkletglobalscope-dev (= 0.3.28-1), librust-web-sys-0+pannernode-dev (= 0.3.28-1), librust-web-sys-0+panneroptions-dev (= 0.3.28-1), librust-web-sys-0+panningmodeltype-dev (= 0.3.28-1), librust-web-sys-0+path2d-dev (= 0.3.28-1), librust-web-sys-0+paymentaddress-dev (= 0.3.28-1), librust-web-sys-0+paymentcomplete-dev (= 0.3.28-1), librust-web-sys-0+paymentmethodchangeevent-dev (= 0.3.28-1), librust-web-sys-0+paymentmethodchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+paymentrequestupdateevent-dev (= 0.3.28-1), librust-web-sys-0+paymentrequestupdateeventinit-dev (= 0.3.28-1), librust-web-sys-0+paymentresponse-dev (= 0.3.28-1), librust-web-sys-0+pbkdf2params-dev (= 0.3.28-1), librust-web-sys-0+pcimpliceconnectionstate-dev (= 0.3.28-1), librust-web-sys-0+pcimplicegatheringstate-dev (= 0.3.28-1), librust-web-sys-0+pcimplsignalingstate-dev (= 0.3.28-1), librust-web-sys-0+pcobserverstatetype-dev (= 0.3.28-1), librust-web-sys-0+performance-dev (= 0.3.28-1), librust-web-sys-0+performanceentry-dev (= 0.3.28-1), librust-web-sys-0+performanceentryeventinit-dev (= 0.3.28-1), librust-web-sys-0+performanceentryfilteroptions-dev (= 0.3.28-1), librust-web-sys-0+performancemark-dev (= 0.3.28-1), librust-web-sys-0+performancemeasure-dev (= 0.3.28-1), librust-web-sys-0+performancenavigation-dev (= 0.3.28-1), librust-web-sys-0+performancenavigationtiming-dev (= 0.3.28-1), librust-web-sys-0+performanceobserver-dev (= 0.3.28-1), librust-web-sys-0+performanceobserverentrylist-dev (= 0.3.28-1), librust-web-sys-0+performanceobserverinit-dev (= 0.3.28-1), librust-web-sys-0+performanceresourcetiming-dev (= 0.3.28-1), librust-web-sys-0+performanceservertiming-dev (= 0.3.28-1), librust-web-sys-0+performancetiming-dev (= 0.3.28-1), librust-web-sys-0+periodicwave-dev (= 0.3.28-1), librust-web-sys-0+periodicwaveconstraints-dev (= 0.3.28-1), librust-web-sys-0+periodicwaveoptions-dev (= 0.3.28-1), librust-web-sys-0+permissiondescriptor-dev (= 0.3.28-1), librust-web-sys-0+permissionname-dev (= 0.3.28-1), librust-web-sys-0+permissions-dev (= 0.3.28-1), librust-web-sys-0+permissionstate-dev (= 0.3.28-1), librust-web-sys-0+permissionstatus-dev (= 0.3.28-1), librust-web-sys-0+playbackdirection-dev (= 0.3.28-1), librust-web-sys-0+plugin-dev (= 0.3.28-1), librust-web-sys-0+pluginarray-dev (= 0.3.28-1), librust-web-sys-0+plugincrashedeventinit-dev (= 0.3.28-1), librust-web-sys-0+pointerevent-dev (= 0.3.28-1), librust-web-sys-0+pointereventinit-dev (= 0.3.28-1), librust-web-sys-0+popstateevent-dev (= 0.3.28-1), librust-web-sys-0+popstateeventinit-dev (= 0.3.28-1), librust-web-sys-0+popupblockedevent-dev (= 0.3.28-1), librust-web-sys-0+popupblockedeventinit-dev (= 0.3.28-1), librust-web-sys-0+position-dev (= 0.3.28-1), librust-web-sys-0+positionalignsetting-dev (= 0.3.28-1), librust-web-sys-0+positionerror-dev (= 0.3.28-1), librust-web-sys-0+positionoptions-dev (= 0.3.28-1), librust-web-sys-0+presentation-dev (= 0.3.28-1), librust-web-sys-0+presentationavailability-dev (= 0.3.28-1), librust-web-sys-0+presentationconnection-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectionavailableevent-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectionavailableeventinit-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectionbinarytype-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectionclosedreason-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectioncloseevent-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectioncloseeventinit-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectionlist-dev (= 0.3.28-1), librust-web-sys-0+presentationconnectionstate-dev (= 0.3.28-1), librust-web-sys-0+presentationreceiver-dev (= 0.3.28-1), librust-web-sys-0+presentationrequest-dev (= 0.3.28-1), librust-web-sys-0+processinginstruction-dev (= 0.3.28-1), librust-web-sys-0+profiletimelinelayerrect-dev (= 0.3.28-1), librust-web-sys-0+profiletimelinemarker-dev (= 0.3.28-1), librust-web-sys-0+profiletimelinemessageportoperationtype-dev (= 0.3.28-1), librust-web-sys-0+profiletimelinestackframe-dev (= 0.3.28-1), librust-web-sys-0+profiletimelineworkeroperationtype-dev (= 0.3.28-1), librust-web-sys-0+progressevent-dev (= 0.3.28-1), librust-web-sys-0+progresseventinit-dev (= 0.3.28-1), librust-web-sys-0+promisenativehandler-dev (= 0.3.28-1), librust-web-sys-0+promiserejectionevent-dev (= 0.3.28-1), librust-web-sys-0+promiserejectioneventinit-dev (= 0.3.28-1), librust-web-sys-0+publickeycredential-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialcreationoptions-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialdescriptor-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialentity-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialparameters-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialrequestoptions-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialrpentity-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialtype-dev (= 0.3.28-1), librust-web-sys-0+publickeycredentialuserentity-dev (= 0.3.28-1), librust-web-sys-0+pushencryptionkeyname-dev (= 0.3.28-1), librust-web-sys-0+pushevent-dev (= 0.3.28-1), librust-web-sys-0+pusheventinit-dev (= 0.3.28-1), librust-web-sys-0+pushmanager-dev (= 0.3.28-1), librust-web-sys-0+pushmessagedata-dev (= 0.3.28-1), librust-web-sys-0+pushpermissionstate-dev (= 0.3.28-1), librust-web-sys-0+pushsubscription-dev (= 0.3.28-1), librust-web-sys-0+pushsubscriptioninit-dev (= 0.3.28-1), librust-web-sys-0+pushsubscriptionjson-dev (= 0.3.28-1), librust-web-sys-0+pushsubscriptionkeys-dev (= 0.3.28-1), librust-web-sys-0+pushsubscriptionoptions-dev (= 0.3.28-1), librust-web-sys-0+pushsubscriptionoptionsinit-dev (= 0.3.28-1), librust-web-sys-0+radionodelist-dev (= 0.3.28-1), librust-web-sys-0+range-dev (= 0.3.28-1), librust-web-sys-0+rcwnperfstats-dev (= 0.3.28-1), librust-web-sys-0+rcwnstatus-dev (= 0.3.28-1), librust-web-sys-0+readablestream-dev (= 0.3.28-1), librust-web-sys-0+recordingstate-dev (= 0.3.28-1), librust-web-sys-0+referrerpolicy-dev (= 0.3.28-1), librust-web-sys-0+registeredkey-dev (= 0.3.28-1), librust-web-sys-0+registerrequest-dev (= 0.3.28-1), librust-web-sys-0+registerresponse-dev (= 0.3.28-1), librust-web-sys-0+registrationoptions-dev (= 0.3.28-1), librust-web-sys-0+request-dev (= 0.3.28-1), librust-web-sys-0+requestcache-dev (= 0.3.28-1), librust-web-sys-0+requestcredentials-dev (= 0.3.28-1), librust-web-sys-0+requestdestination-dev (= 0.3.28-1), librust-web-sys-0+requestinit-dev (= 0.3.28-1), librust-web-sys-0+requestmediakeysystemaccessnotification-dev (= 0.3.28-1), librust-web-sys-0+requestmode-dev (= 0.3.28-1), librust-web-sys-0+requestredirect-dev (= 0.3.28-1), librust-web-sys-0+response-dev (= 0.3.28-1), librust-web-sys-0+responseinit-dev (= 0.3.28-1), librust-web-sys-0+responsetype-dev (= 0.3.28-1), librust-web-sys-0+rsahashedimportparams-dev (= 0.3.28-1), librust-web-sys-0+rsaoaepparams-dev (= 0.3.28-1), librust-web-sys-0+rsaotherprimesinfo-dev (= 0.3.28-1), librust-web-sys-0+rsapssparams-dev (= 0.3.28-1), librust-web-sys-0+rtcansweroptions-dev (= 0.3.28-1), librust-web-sys-0+rtcbundlepolicy-dev (= 0.3.28-1), librust-web-sys-0+rtccertificate-dev (= 0.3.28-1), librust-web-sys-0+rtccertificateexpiration-dev (= 0.3.28-1), librust-web-sys-0+rtccodecstats-dev (= 0.3.28-1), librust-web-sys-0+rtcconfiguration-dev (= 0.3.28-1), librust-web-sys-0+rtcdatachannel-dev (= 0.3.28-1), librust-web-sys-0+rtcdatachannelevent-dev (= 0.3.28-1), librust-web-sys-0+rtcdatachanneleventinit-dev (= 0.3.28-1), librust-web-sys-0+rtcdatachannelinit-dev (= 0.3.28-1), librust-web-sys-0+rtcdatachannelstate-dev (= 0.3.28-1), librust-web-sys-0+rtcdatachanneltype-dev (= 0.3.28-1), librust-web-sys-0+rtcdegradationpreference-dev (= 0.3.28-1), librust-web-sys-0+rtcdtmfsender-dev (= 0.3.28-1), librust-web-sys-0+rtcdtmftonechangeevent-dev (= 0.3.28-1), librust-web-sys-0+rtcdtmftonechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+rtcfecparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcicecandidate-dev (= 0.3.28-1), librust-web-sys-0+rtcicecandidateinit-dev (= 0.3.28-1), librust-web-sys-0+rtcicecandidatepairstats-dev (= 0.3.28-1), librust-web-sys-0+rtcicecandidatestats-dev (= 0.3.28-1), librust-web-sys-0+rtcicecomponentstats-dev (= 0.3.28-1), librust-web-sys-0+rtciceconnectionstate-dev (= 0.3.28-1), librust-web-sys-0+rtcicecredentialtype-dev (= 0.3.28-1), librust-web-sys-0+rtcicegatheringstate-dev (= 0.3.28-1), librust-web-sys-0+rtciceserver-dev (= 0.3.28-1), librust-web-sys-0+rtcicetransportpolicy-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityassertion-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityassertionresult-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityprovider-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityproviderdetails-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityprovideroptions-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityproviderregistrar-dev (= 0.3.28-1), librust-web-sys-0+rtcidentityvalidationresult-dev (= 0.3.28-1), librust-web-sys-0+rtcinboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0+rtclifecycleevent-dev (= 0.3.28-1), librust-web-sys-0+rtcmediastreamstats-dev (= 0.3.28-1), librust-web-sys-0+rtcmediastreamtrackstats-dev (= 0.3.28-1), librust-web-sys-0+rtcofferansweroptions-dev (= 0.3.28-1), librust-web-sys-0+rtcofferoptions-dev (= 0.3.28-1), librust-web-sys-0+rtcoutboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0+rtcpeerconnection-dev (= 0.3.28-1), librust-web-sys-0+rtcpeerconnectioniceevent-dev (= 0.3.28-1), librust-web-sys-0+rtcpeerconnectioniceeventinit-dev (= 0.3.28-1), librust-web-sys-0+rtcprioritytype-dev (= 0.3.28-1), librust-web-sys-0+rtcrtcpparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpcodecparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpcontributingsource-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpcontributingsourcestats-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpencodingparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpheaderextensionparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpreceiver-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpsender-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpsourceentry-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpsourceentrytype-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0+rtcrtpsynchronizationsource-dev (= 0.3.28-1), librust-web-sys-0+rtcrtptransceiver-dev (= 0.3.28-1), librust-web-sys-0+rtcrtptransceiverdirection-dev (= 0.3.28-1), librust-web-sys-0+rtcrtptransceiverinit-dev (= 0.3.28-1), librust-web-sys-0+rtcrtxparameters-dev (= 0.3.28-1), librust-web-sys-0+rtcsdptype-dev (= 0.3.28-1), librust-web-sys-0+rtcsessiondescription-dev (= 0.3.28-1), librust-web-sys-0+rtcsessiondescriptioninit-dev (= 0.3.28-1), librust-web-sys-0+rtcsignalingstate-dev (= 0.3.28-1), librust-web-sys-0+rtcstats-dev (= 0.3.28-1), librust-web-sys-0+rtcstatsicecandidatepairstate-dev (= 0.3.28-1), librust-web-sys-0+rtcstatsicecandidatetype-dev (= 0.3.28-1), librust-web-sys-0+rtcstatsreport-dev (= 0.3.28-1), librust-web-sys-0+rtcstatsreportinternal-dev (= 0.3.28-1), librust-web-sys-0+rtcstatstype-dev (= 0.3.28-1), librust-web-sys-0+rtctrackevent-dev (= 0.3.28-1), librust-web-sys-0+rtctrackeventinit-dev (= 0.3.28-1), librust-web-sys-0+rtctransportstats-dev (= 0.3.28-1), librust-web-sys-0+screen-dev (= 0.3.28-1), librust-web-sys-0+screencolorgamut-dev (= 0.3.28-1), librust-web-sys-0+screenluminance-dev (= 0.3.28-1), librust-web-sys-0+screenorientation-dev (= 0.3.28-1), librust-web-sys-0+scriptprocessornode-dev (= 0.3.28-1), librust-web-sys-0+scrollareaevent-dev (= 0.3.28-1), librust-web-sys-0+scrollbehavior-dev (= 0.3.28-1), librust-web-sys-0+scrollboxobject-dev (= 0.3.28-1), librust-web-sys-0+scrollintoviewoptions-dev (= 0.3.28-1), librust-web-sys-0+scrolllogicalposition-dev (= 0.3.28-1), librust-web-sys-0+scrolloptions-dev (= 0.3.28-1), librust-web-sys-0+scrollrestoration-dev (= 0.3.28-1), librust-web-sys-0+scrollsetting-dev (= 0.3.28-1), librust-web-sys-0+scrollstate-dev (= 0.3.28-1), librust-web-sys-0+scrolltooptions-dev (= 0.3.28-1), librust-web-sys-0+scrollviewchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+securitypolicyviolationevent-dev (= 0.3.28-1), librust-web-sys-0+securitypolicyviolationeventdisposition-dev (= 0.3.28-1), librust-web-sys-0+securitypolicyviolationeventinit-dev (= 0.3.28-1), librust-web-sys-0+selection-dev (= 0.3.28-1), librust-web-sys-0+serversocketoptions-dev (= 0.3.28-1), librust-web-sys-0+serviceworker-dev (= 0.3.28-1), librust-web-sys-0+serviceworkercontainer-dev (= 0.3.28-1), librust-web-sys-0+serviceworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0+serviceworkerregistration-dev (= 0.3.28-1), librust-web-sys-0+serviceworkerstate-dev (= 0.3.28-1), librust-web-sys-0+serviceworkerupdateviacache-dev (= 0.3.28-1), librust-web-sys-0+shadowroot-dev (= 0.3.28-1), librust-web-sys-0+shadowrootinit-dev (= 0.3.28-1), librust-web-sys-0+shadowrootmode-dev (= 0.3.28-1), librust-web-sys-0+sharedworker-dev (= 0.3.28-1), librust-web-sys-0+sharedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0+signresponse-dev (= 0.3.28-1), librust-web-sys-0+socketelement-dev (= 0.3.28-1), librust-web-sys-0+socketoptions-dev (= 0.3.28-1), librust-web-sys-0+socketreadystate-dev (= 0.3.28-1), librust-web-sys-0+socketsdict-dev (= 0.3.28-1), librust-web-sys-0+sourcebuffer-dev (= 0.3.28-1), librust-web-sys-0+sourcebufferappendmode-dev (= 0.3.28-1), librust-web-sys-0+sourcebufferlist-dev (= 0.3.28-1), librust-web-sys-0+speechgrammar-dev (= 0.3.28-1), librust-web-sys-0+speechgrammarlist-dev (= 0.3.28-1), librust-web-sys-0+speechrecognition-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionalternative-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionerror-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionerrorcode-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionerrorinit-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionevent-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitioneventinit-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionresult-dev (= 0.3.28-1), librust-web-sys-0+speechrecognitionresultlist-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesis-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesiserrorcode-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesiserrorevent-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesiserroreventinit-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesisevent-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesiseventinit-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesisutterance-dev (= 0.3.28-1), librust-web-sys-0+speechsynthesisvoice-dev (= 0.3.28-1), librust-web-sys-0+stereopannernode-dev (= 0.3.28-1), librust-web-sys-0+stereopanneroptions-dev (= 0.3.28-1), librust-web-sys-0+storage-dev (= 0.3.28-1), librust-web-sys-0+storageestimate-dev (= 0.3.28-1), librust-web-sys-0+storageevent-dev (= 0.3.28-1), librust-web-sys-0+storageeventinit-dev (= 0.3.28-1), librust-web-sys-0+storagemanager-dev (= 0.3.28-1), librust-web-sys-0+storagetype-dev (= 0.3.28-1), librust-web-sys-0+stylerulechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+stylesheet-dev (= 0.3.28-1), librust-web-sys-0+stylesheetapplicablestatechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+stylesheetchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0+stylesheetlist-dev (= 0.3.28-1), librust-web-sys-0+subtlecrypto-dev (= 0.3.28-1), librust-web-sys-0+supportedtype-dev (= 0.3.28-1), librust-web-sys-0+svgaelement-dev (= 0.3.28-1), librust-web-sys-0+svgangle-dev (= 0.3.28-1), librust-web-sys-0+svganimatedangle-dev (= 0.3.28-1), librust-web-sys-0+svganimatedboolean-dev (= 0.3.28-1), librust-web-sys-0+svganimatedenumeration-dev (= 0.3.28-1), librust-web-sys-0+svganimatedinteger-dev (= 0.3.28-1), librust-web-sys-0+svganimatedlength-dev (= 0.3.28-1), librust-web-sys-0+svganimatedlengthlist-dev (= 0.3.28-1), librust-web-sys-0+svganimatednumber-dev (= 0.3.28-1), librust-web-sys-0+svganimatednumberlist-dev (= 0.3.28-1), librust-web-sys-0+svganimatedpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys-0+svganimatedrect-dev (= 0.3.28-1), librust-web-sys-0+svganimatedstring-dev (= 0.3.28-1), librust-web-sys-0+svganimatedtransformlist-dev (= 0.3.28-1), librust-web-sys-0+svganimateelement-dev (= 0.3.28-1), librust-web-sys-0+svganimatemotionelement-dev (= 0.3.28-1), librust-web-sys-0+svganimatetransformelement-dev (= 0.3.28-1), librust-web-sys-0+svganimationelement-dev (= 0.3.28-1), librust-web-sys-0+svgboundingboxoptions-dev (= 0.3.28-1), librust-web-sys-0+svgcircleelement-dev (= 0.3.28-1), librust-web-sys-0+svgclippathelement-dev (= 0.3.28-1), librust-web-sys-0+svgcomponenttransferfunctionelement-dev (= 0.3.28-1), librust-web-sys-0+svgdefselement-dev (= 0.3.28-1), librust-web-sys-0+svgdescelement-dev (= 0.3.28-1), librust-web-sys-0+svgelement-dev (= 0.3.28-1), librust-web-sys-0+svgellipseelement-dev (= 0.3.28-1), librust-web-sys-0+svgfeblendelement-dev (= 0.3.28-1), librust-web-sys-0+svgfecolormatrixelement-dev (= 0.3.28-1), librust-web-sys-0+svgfecomponenttransferelement-dev (= 0.3.28-1), librust-web-sys-0+svgfecompositeelement-dev (= 0.3.28-1), librust-web-sys-0+svgfeconvolvematrixelement-dev (= 0.3.28-1), librust-web-sys-0+svgfediffuselightingelement-dev (= 0.3.28-1), librust-web-sys-0+svgfedisplacementmapelement-dev (= 0.3.28-1), librust-web-sys-0+svgfedistantlightelement-dev (= 0.3.28-1), librust-web-sys-0+svgfedropshadowelement-dev (= 0.3.28-1), librust-web-sys-0+svgfefloodelement-dev (= 0.3.28-1), librust-web-sys-0+svgfefuncaelement-dev (= 0.3.28-1), librust-web-sys-0+svgfefuncbelement-dev (= 0.3.28-1), librust-web-sys-0+svgfefuncgelement-dev (= 0.3.28-1), librust-web-sys-0+svgfefuncrelement-dev (= 0.3.28-1), librust-web-sys-0+svgfegaussianblurelement-dev (= 0.3.28-1), librust-web-sys-0+svgfeimageelement-dev (= 0.3.28-1), librust-web-sys-0+svgfemergeelement-dev (= 0.3.28-1), librust-web-sys-0+svgfemergenodeelement-dev (= 0.3.28-1), librust-web-sys-0+svgfemorphologyelement-dev (= 0.3.28-1), librust-web-sys-0+svgfeoffsetelement-dev (= 0.3.28-1), librust-web-sys-0+svgfepointlightelement-dev (= 0.3.28-1), librust-web-sys-0+svgfespecularlightingelement-dev (= 0.3.28-1), librust-web-sys-0+svgfespotlightelement-dev (= 0.3.28-1), librust-web-sys-0+svgfetileelement-dev (= 0.3.28-1), librust-web-sys-0+svgfeturbulenceelement-dev (= 0.3.28-1), librust-web-sys-0+svgfilterelement-dev (= 0.3.28-1), librust-web-sys-0+svgforeignobjectelement-dev (= 0.3.28-1), librust-web-sys-0+svggelement-dev (= 0.3.28-1), librust-web-sys-0+svggeometryelement-dev (= 0.3.28-1), librust-web-sys-0+svggradientelement-dev (= 0.3.28-1), librust-web-sys-0+svggraphicselement-dev (= 0.3.28-1), librust-web-sys-0+svgimageelement-dev (= 0.3.28-1), librust-web-sys-0+svglength-dev (= 0.3.28-1), librust-web-sys-0+svglengthlist-dev (= 0.3.28-1), librust-web-sys-0+svglineargradientelement-dev (= 0.3.28-1), librust-web-sys-0+svglineelement-dev (= 0.3.28-1), librust-web-sys-0+svgmarkerelement-dev (= 0.3.28-1), librust-web-sys-0+svgmaskelement-dev (= 0.3.28-1), librust-web-sys-0+svgmatrix-dev (= 0.3.28-1), librust-web-sys-0+svgmetadataelement-dev (= 0.3.28-1), librust-web-sys-0+svgmpathelement-dev (= 0.3.28-1), librust-web-sys-0+svgnumber-dev (= 0.3.28-1), librust-web-sys-0+svgnumberlist-dev (= 0.3.28-1), librust-web-sys-0+svgpathelement-dev (= 0.3.28-1), librust-web-sys-0+svgpathseg-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegarcabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegarcrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegclosepath-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetocubicabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetocubicrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetocubicsmoothabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetocubicsmoothrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetoquadraticabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetoquadraticrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetoquadraticsmoothabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegcurvetoquadraticsmoothrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglinetoabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglinetohorizontalabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglinetohorizontalrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglinetorel-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglinetoverticalabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglinetoverticalrel-dev (= 0.3.28-1), librust-web-sys-0+svgpathseglist-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegmovetoabs-dev (= 0.3.28-1), librust-web-sys-0+svgpathsegmovetorel-dev (= 0.3.28-1), librust-web-sys-0+svgpatternelement-dev (= 0.3.28-1), librust-web-sys-0+svgpoint-dev (= 0.3.28-1), librust-web-sys-0+svgpointlist-dev (= 0.3.28-1), librust-web-sys-0+svgpolygonelement-dev (= 0.3.28-1), librust-web-sys-0+svgpolylineelement-dev (= 0.3.28-1), librust-web-sys-0+svgpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys-0+svgradialgradientelement-dev (= 0.3.28-1), librust-web-sys-0+svgrect-dev (= 0.3.28-1), librust-web-sys-0+svgrectelement-dev (= 0.3.28-1), librust-web-sys-0+svgscriptelement-dev (= 0.3.28-1), librust-web-sys-0+svgsetelement-dev (= 0.3.28-1), librust-web-sys-0+svgstopelement-dev (= 0.3.28-1), librust-web-sys-0+svgstringlist-dev (= 0.3.28-1), librust-web-sys-0+svgstyleelement-dev (= 0.3.28-1), librust-web-sys-0+svgsvgelement-dev (= 0.3.28-1), librust-web-sys-0+svgswitchelement-dev (= 0.3.28-1), librust-web-sys-0+svgsymbolelement-dev (= 0.3.28-1), librust-web-sys-0+svgtextcontentelement-dev (= 0.3.28-1), librust-web-sys-0+svgtextelement-dev (= 0.3.28-1), librust-web-sys-0+svgtextpathelement-dev (= 0.3.28-1), librust-web-sys-0+svgtextpositioningelement-dev (= 0.3.28-1), librust-web-sys-0+svgtitleelement-dev (= 0.3.28-1), librust-web-sys-0+svgtransform-dev (= 0.3.28-1), librust-web-sys-0+svgtransformlist-dev (= 0.3.28-1), librust-web-sys-0+svgtspanelement-dev (= 0.3.28-1), librust-web-sys-0+svgunittypes-dev (= 0.3.28-1), librust-web-sys-0+svguseelement-dev (= 0.3.28-1), librust-web-sys-0+svgviewelement-dev (= 0.3.28-1), librust-web-sys-0+svgzoomandpan-dev (= 0.3.28-1), librust-web-sys-0+tcpreadystate-dev (= 0.3.28-1), librust-web-sys-0+tcpserversocket-dev (= 0.3.28-1), librust-web-sys-0+tcpserversocketevent-dev (= 0.3.28-1), librust-web-sys-0+tcpserversocketeventinit-dev (= 0.3.28-1), librust-web-sys-0+tcpsocket-dev (= 0.3.28-1), librust-web-sys-0+tcpsocketbinarytype-dev (= 0.3.28-1), librust-web-sys-0+tcpsocketerrorevent-dev (= 0.3.28-1), librust-web-sys-0+tcpsocketerroreventinit-dev (= 0.3.28-1), librust-web-sys-0+tcpsocketevent-dev (= 0.3.28-1), librust-web-sys-0+tcpsocketeventinit-dev (= 0.3.28-1), librust-web-sys-0+text-dev (= 0.3.28-1), librust-web-sys-0+textdecodeoptions-dev (= 0.3.28-1), librust-web-sys-0+textdecoder-dev (= 0.3.28-1), librust-web-sys-0+textdecoderoptions-dev (= 0.3.28-1), librust-web-sys-0+textencoder-dev (= 0.3.28-1), librust-web-sys-0+textmetrics-dev (= 0.3.28-1), librust-web-sys-0+texttrack-dev (= 0.3.28-1), librust-web-sys-0+texttrackcue-dev (= 0.3.28-1), librust-web-sys-0+texttrackcuelist-dev (= 0.3.28-1), librust-web-sys-0+texttrackkind-dev (= 0.3.28-1), librust-web-sys-0+texttracklist-dev (= 0.3.28-1), librust-web-sys-0+texttrackmode-dev (= 0.3.28-1), librust-web-sys-0+timeevent-dev (= 0.3.28-1), librust-web-sys-0+timeranges-dev (= 0.3.28-1), librust-web-sys-0+touch-dev (= 0.3.28-1), librust-web-sys-0+touchevent-dev (= 0.3.28-1), librust-web-sys-0+toucheventinit-dev (= 0.3.28-1), librust-web-sys-0+touchinit-dev (= 0.3.28-1), librust-web-sys-0+touchlist-dev (= 0.3.28-1), librust-web-sys-0+trackevent-dev (= 0.3.28-1), librust-web-sys-0+trackeventinit-dev (= 0.3.28-1), librust-web-sys-0+transitionevent-dev (= 0.3.28-1), librust-web-sys-0+transitioneventinit-dev (= 0.3.28-1), librust-web-sys-0+transport-dev (= 0.3.28-1), librust-web-sys-0+treeboxobject-dev (= 0.3.28-1), librust-web-sys-0+treecellinfo-dev (= 0.3.28-1), librust-web-sys-0+treeview-dev (= 0.3.28-1), librust-web-sys-0+treewalker-dev (= 0.3.28-1), librust-web-sys-0+u2f-dev (= 0.3.28-1), librust-web-sys-0+u2fclientdata-dev (= 0.3.28-1), librust-web-sys-0+udpmessageeventinit-dev (= 0.3.28-1), librust-web-sys-0+udpoptions-dev (= 0.3.28-1), librust-web-sys-0+uievent-dev (= 0.3.28-1), librust-web-sys-0+uieventinit-dev (= 0.3.28-1), librust-web-sys-0+url-dev (= 0.3.28-1), librust-web-sys-0+urlsearchparams-dev (= 0.3.28-1), librust-web-sys-0+userproximityevent-dev (= 0.3.28-1), librust-web-sys-0+userproximityeventinit-dev (= 0.3.28-1), librust-web-sys-0+userverificationrequirement-dev (= 0.3.28-1), librust-web-sys-0+validitystate-dev (= 0.3.28-1), librust-web-sys-0+videoconfiguration-dev (= 0.3.28-1), librust-web-sys-0+videofacingmodeenum-dev (= 0.3.28-1), librust-web-sys-0+videoplaybackquality-dev (= 0.3.28-1), librust-web-sys-0+videostreamtrack-dev (= 0.3.28-1), librust-web-sys-0+videotrack-dev (= 0.3.28-1), librust-web-sys-0+videotracklist-dev (= 0.3.28-1), librust-web-sys-0+visibilitystate-dev (= 0.3.28-1), librust-web-sys-0+voidcallback-dev (= 0.3.28-1), librust-web-sys-0+vrdisplay-dev (= 0.3.28-1), librust-web-sys-0+vrdisplaycapabilities-dev (= 0.3.28-1), librust-web-sys-0+vreye-dev (= 0.3.28-1), librust-web-sys-0+vreyeparameters-dev (= 0.3.28-1), librust-web-sys-0+vrfieldofview-dev (= 0.3.28-1), librust-web-sys-0+vrframedata-dev (= 0.3.28-1), librust-web-sys-0+vrlayer-dev (= 0.3.28-1), librust-web-sys-0+vrmockcontroller-dev (= 0.3.28-1), librust-web-sys-0+vrmockdisplay-dev (= 0.3.28-1), librust-web-sys-0+vrpose-dev (= 0.3.28-1), librust-web-sys-0+vrservicetest-dev (= 0.3.28-1), librust-web-sys-0+vrstageparameters-dev (= 0.3.28-1), librust-web-sys-0+vrsubmitframeresult-dev (= 0.3.28-1), librust-web-sys-0+vttcue-dev (= 0.3.28-1), librust-web-sys-0+vttregion-dev (= 0.3.28-1), librust-web-sys-0+waveshapernode-dev (= 0.3.28-1), librust-web-sys-0+waveshaperoptions-dev (= 0.3.28-1), librust-web-sys-0+webgl2renderingcontext-dev (= 0.3.28-1), librust-web-sys-0+webglactiveinfo-dev (= 0.3.28-1), librust-web-sys-0+webglbuffer-dev (= 0.3.28-1), librust-web-sys-0+webglcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtextureastc-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtextureatc-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtextureetc-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtextureetc1-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtexturepvrtc-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtextures3tc-dev (= 0.3.28-1), librust-web-sys-0+webglcompressedtextures3tcsrgb-dev (= 0.3.28-1), librust-web-sys-0+webglcontextattributes-dev (= 0.3.28-1), librust-web-sys-0+webglcontextevent-dev (= 0.3.28-1), librust-web-sys-0+webglcontexteventinit-dev (= 0.3.28-1), librust-web-sys-0+webgldebugrendererinfo-dev (= 0.3.28-1), librust-web-sys-0+webgldebugshaders-dev (= 0.3.28-1), librust-web-sys-0+webgldepthtexture-dev (= 0.3.28-1), librust-web-sys-0+webgldrawbuffers-dev (= 0.3.28-1), librust-web-sys-0+webglframebuffer-dev (= 0.3.28-1), librust-web-sys-0+webgllosecontext-dev (= 0.3.28-1), librust-web-sys-0+webglpowerpreference-dev (= 0.3.28-1), librust-web-sys-0+webglprogram-dev (= 0.3.28-1), librust-web-sys-0+webglquery-dev (= 0.3.28-1), librust-web-sys-0+webglrenderbuffer-dev (= 0.3.28-1), librust-web-sys-0+webglrenderingcontext-dev (= 0.3.28-1), librust-web-sys-0+webglsampler-dev (= 0.3.28-1), librust-web-sys-0+webglshader-dev (= 0.3.28-1), librust-web-sys-0+webglshaderprecisionformat-dev (= 0.3.28-1), librust-web-sys-0+webglsync-dev (= 0.3.28-1), librust-web-sys-0+webgltexture-dev (= 0.3.28-1), librust-web-sys-0+webgltransformfeedback-dev (= 0.3.28-1), librust-web-sys-0+webgluniformlocation-dev (= 0.3.28-1), librust-web-sys-0+webglvertexarrayobject-dev (= 0.3.28-1), librust-web-sys-0+webgpu-dev (= 0.3.28-1), librust-web-sys-0+webgpuadapter-dev (= 0.3.28-1), librust-web-sys-0+webgpuadapterdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpuattachmentstate-dev (= 0.3.28-1), librust-web-sys-0+webgpuattachmentstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpubindgroup-dev (= 0.3.28-1), librust-web-sys-0+webgpubindgroupbinding-dev (= 0.3.28-1), librust-web-sys-0+webgpubindgroupdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpubindgrouplayout-dev (= 0.3.28-1), librust-web-sys-0+webgpubindgrouplayoutdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpubinding-dev (= 0.3.28-1), librust-web-sys-0+webgpubindingtype-dev (= 0.3.28-1), librust-web-sys-0+webgpublenddescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpublendfactor-dev (= 0.3.28-1), librust-web-sys-0+webgpublendoperation-dev (= 0.3.28-1), librust-web-sys-0+webgpublendstate-dev (= 0.3.28-1), librust-web-sys-0+webgpublendstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpubuffer-dev (= 0.3.28-1), librust-web-sys-0+webgpubufferbinding-dev (= 0.3.28-1), librust-web-sys-0+webgpubufferdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpubufferusage-dev (= 0.3.28-1), librust-web-sys-0+webgpucolorwritebits-dev (= 0.3.28-1), librust-web-sys-0+webgpucommandbuffer-dev (= 0.3.28-1), librust-web-sys-0+webgpucommandencoder-dev (= 0.3.28-1), librust-web-sys-0+webgpucommandencoderdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpucomparefunction-dev (= 0.3.28-1), librust-web-sys-0+webgpucomputepipeline-dev (= 0.3.28-1), librust-web-sys-0+webgpucomputepipelinedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpudepthstencilstate-dev (= 0.3.28-1), librust-web-sys-0+webgpudepthstencilstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpudevice-dev (= 0.3.28-1), librust-web-sys-0+webgpudevicedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpuextensions-dev (= 0.3.28-1), librust-web-sys-0+webgpufence-dev (= 0.3.28-1), librust-web-sys-0+webgpufiltermode-dev (= 0.3.28-1), librust-web-sys-0+webgpuindexformat-dev (= 0.3.28-1), librust-web-sys-0+webgpuinputstate-dev (= 0.3.28-1), librust-web-sys-0+webgpuinputstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpuinputstepmode-dev (= 0.3.28-1), librust-web-sys-0+webgpulimits-dev (= 0.3.28-1), librust-web-sys-0+webgpuloadop-dev (= 0.3.28-1), librust-web-sys-0+webgpulogentry-dev (= 0.3.28-1), librust-web-sys-0+webgpulogentrytype-dev (= 0.3.28-1), librust-web-sys-0+webgpuobjectstatus-dev (= 0.3.28-1), librust-web-sys-0+webgpupipelinedescriptorbase-dev (= 0.3.28-1), librust-web-sys-0+webgpupipelinelayout-dev (= 0.3.28-1), librust-web-sys-0+webgpupipelinelayoutdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpupipelinestagedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpupowerpreference-dev (= 0.3.28-1), librust-web-sys-0+webgpuprimitivetopology-dev (= 0.3.28-1), librust-web-sys-0+webgpuqueue-dev (= 0.3.28-1), librust-web-sys-0+webgpurenderpassattachmentdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpurenderpassdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpurenderpipeline-dev (= 0.3.28-1), librust-web-sys-0+webgpurenderpipelinedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpusampler-dev (= 0.3.28-1), librust-web-sys-0+webgpusamplerdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpushadermodule-dev (= 0.3.28-1), librust-web-sys-0+webgpushadermoduledescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpushaderstage-dev (= 0.3.28-1), librust-web-sys-0+webgpushaderstagebit-dev (= 0.3.28-1), librust-web-sys-0+webgpustenciloperation-dev (= 0.3.28-1), librust-web-sys-0+webgpustencilstatefacedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpustoreop-dev (= 0.3.28-1), librust-web-sys-0+webgpuswapchain-dev (= 0.3.28-1), librust-web-sys-0+webgpuswapchaindescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgputexture-dev (= 0.3.28-1), librust-web-sys-0+webgputexturedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgputexturedimension-dev (= 0.3.28-1), librust-web-sys-0+webgputextureformat-dev (= 0.3.28-1), librust-web-sys-0+webgputextureusage-dev (= 0.3.28-1), librust-web-sys-0+webgputextureview-dev (= 0.3.28-1), librust-web-sys-0+webgputextureviewdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpuvertexattributedescriptor-dev (= 0.3.28-1), librust-web-sys-0+webgpuvertexformat-dev (= 0.3.28-1), librust-web-sys-0+webgpuvertexinputdescriptor-dev (= 0.3.28-1), librust-web-sys-0+webkitcssmatrix-dev (= 0.3.28-1), librust-web-sys-0+webrtcglobalstatisticsreport-dev (= 0.3.28-1), librust-web-sys-0+websocket-dev (= 0.3.28-1), librust-web-sys-0+websocketdict-dev (= 0.3.28-1), librust-web-sys-0+websocketelement-dev (= 0.3.28-1), librust-web-sys-0+wheelevent-dev (= 0.3.28-1), librust-web-sys-0+wheeleventinit-dev (= 0.3.28-1), librust-web-sys-0+widevinecdmmanifest-dev (= 0.3.28-1), librust-web-sys-0+window-dev (= 0.3.28-1), librust-web-sys-0+windowclient-dev (= 0.3.28-1), librust-web-sys-0+worker-dev (= 0.3.28-1), librust-web-sys-0+workerdebuggerglobalscope-dev (= 0.3.28-1), librust-web-sys-0+workerglobalscope-dev (= 0.3.28-1), librust-web-sys-0+workerlocation-dev (= 0.3.28-1), librust-web-sys-0+workernavigator-dev (= 0.3.28-1), librust-web-sys-0+workeroptions-dev (= 0.3.28-1), librust-web-sys-0+worklet-dev (= 0.3.28-1), librust-web-sys-0+workletglobalscope-dev (= 0.3.28-1), librust-web-sys-0+xmldocument-dev (= 0.3.28-1), librust-web-sys-0+xmlhttprequest-dev (= 0.3.28-1), librust-web-sys-0+xmlhttprequesteventtarget-dev (= 0.3.28-1), librust-web-sys-0+xmlhttprequestresponsetype-dev (= 0.3.28-1), librust-web-sys-0+xmlhttprequestupload-dev (= 0.3.28-1), librust-web-sys-0+xmlserializer-dev (= 0.3.28-1), librust-web-sys-0+xpathexpression-dev (= 0.3.28-1), librust-web-sys-0+xpathnsresolver-dev (= 0.3.28-1), librust-web-sys-0+xpathresult-dev (= 0.3.28-1), librust-web-sys-0+xsltprocessor-dev (= 0.3.28-1), librust-web-sys-0-dev (= 0.3.28-1), librust-web-sys-0.3+abortcontroller-dev (= 0.3.28-1), librust-web-sys-0.3+abortsignal-dev (= 0.3.28-1), librust-web-sys-0.3+addeventlisteneroptions-dev (= 0.3.28-1), librust-web-sys-0.3+aescbcparams-dev (= 0.3.28-1), librust-web-sys-0.3+aesctrparams-dev (= 0.3.28-1), librust-web-sys-0.3+aesderivedkeyparams-dev (= 0.3.28-1), librust-web-sys-0.3+aesgcmparams-dev (= 0.3.28-1), librust-web-sys-0.3+aeskeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3+aeskeygenparams-dev (= 0.3.28-1), librust-web-sys-0.3+algorithm-dev (= 0.3.28-1), librust-web-sys-0.3+alignsetting-dev (= 0.3.28-1), librust-web-sys-0.3+analysernode-dev (= 0.3.28-1), librust-web-sys-0.3+analyseroptions-dev (= 0.3.28-1), librust-web-sys-0.3+angleinstancedarrays-dev (= 0.3.28-1), librust-web-sys-0.3+animation-dev (= 0.3.28-1), librust-web-sys-0.3+animationeffect-dev (= 0.3.28-1), librust-web-sys-0.3+animationevent-dev (= 0.3.28-1), librust-web-sys-0.3+animationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+animationplaybackevent-dev (= 0.3.28-1), librust-web-sys-0.3+animationplaybackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+animationplaystate-dev (= 0.3.28-1), librust-web-sys-0.3+animationpropertydetails-dev (= 0.3.28-1), librust-web-sys-0.3+animationpropertyvaluedetails-dev (= 0.3.28-1), librust-web-sys-0.3+animationtimeline-dev (= 0.3.28-1), librust-web-sys-0.3+assignednodesoptions-dev (= 0.3.28-1), librust-web-sys-0.3+attestationconveyancepreference-dev (= 0.3.28-1), librust-web-sys-0.3+attr-dev (= 0.3.28-1), librust-web-sys-0.3+attributenamevalue-dev (= 0.3.28-1), librust-web-sys-0.3+audiobuffer-dev (= 0.3.28-1), librust-web-sys-0.3+audiobufferoptions-dev (= 0.3.28-1), librust-web-sys-0.3+audiobuffersourcenode-dev (= 0.3.28-1), librust-web-sys-0.3+audiobuffersourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3+audioconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+audiocontext-dev (= 0.3.28-1), librust-web-sys-0.3+audiocontextoptions-dev (= 0.3.28-1), librust-web-sys-0.3+audiocontextstate-dev (= 0.3.28-1), librust-web-sys-0.3+audiodestinationnode-dev (= 0.3.28-1), librust-web-sys-0.3+audiolistener-dev (= 0.3.28-1), librust-web-sys-0.3+audionode-dev (= 0.3.28-1), librust-web-sys-0.3+audionodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3+audioparam-dev (= 0.3.28-1), librust-web-sys-0.3+audioparammap-dev (= 0.3.28-1), librust-web-sys-0.3+audioprocessingevent-dev (= 0.3.28-1), librust-web-sys-0.3+audioscheduledsourcenode-dev (= 0.3.28-1), librust-web-sys-0.3+audiostreamtrack-dev (= 0.3.28-1), librust-web-sys-0.3+audiotrack-dev (= 0.3.28-1), librust-web-sys-0.3+audiotracklist-dev (= 0.3.28-1), librust-web-sys-0.3+audioworklet-dev (= 0.3.28-1), librust-web-sys-0.3+audioworkletglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+audioworkletnode-dev (= 0.3.28-1), librust-web-sys-0.3+audioworkletnodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3+audioworkletprocessor-dev (= 0.3.28-1), librust-web-sys-0.3+authenticationextensionsclientinputs-dev (= 0.3.28-1), librust-web-sys-0.3+authenticationextensionsclientoutputs-dev (= 0.3.28-1), librust-web-sys-0.3+authenticatorassertionresponse-dev (= 0.3.28-1), librust-web-sys-0.3+authenticatorattachment-dev (= 0.3.28-1), librust-web-sys-0.3+authenticatorattestationresponse-dev (= 0.3.28-1), librust-web-sys-0.3+authenticatorresponse-dev (= 0.3.28-1), librust-web-sys-0.3+authenticatorselectioncriteria-dev (= 0.3.28-1), librust-web-sys-0.3+authenticatortransport-dev (= 0.3.28-1), librust-web-sys-0.3+autocompleteinfo-dev (= 0.3.28-1), librust-web-sys-0.3+autokeyword-dev (= 0.3.28-1), librust-web-sys-0.3+barprop-dev (= 0.3.28-1), librust-web-sys-0.3+baseaudiocontext-dev (= 0.3.28-1), librust-web-sys-0.3+basecomputedkeyframe-dev (= 0.3.28-1), librust-web-sys-0.3+basekeyframe-dev (= 0.3.28-1), librust-web-sys-0.3+basepropertyindexedkeyframe-dev (= 0.3.28-1), librust-web-sys-0.3+basiccardrequest-dev (= 0.3.28-1), librust-web-sys-0.3+basiccardresponse-dev (= 0.3.28-1), librust-web-sys-0.3+basiccardtype-dev (= 0.3.28-1), librust-web-sys-0.3+batterymanager-dev (= 0.3.28-1), librust-web-sys-0.3+beforeunloadevent-dev (= 0.3.28-1), librust-web-sys-0.3+binarytype-dev (= 0.3.28-1), librust-web-sys-0.3+biquadfilternode-dev (= 0.3.28-1), librust-web-sys-0.3+biquadfilteroptions-dev (= 0.3.28-1), librust-web-sys-0.3+biquadfiltertype-dev (= 0.3.28-1), librust-web-sys-0.3+blob-dev (= 0.3.28-1), librust-web-sys-0.3+blobevent-dev (= 0.3.28-1), librust-web-sys-0.3+blobeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+blobpropertybag-dev (= 0.3.28-1), librust-web-sys-0.3+blockparsingoptions-dev (= 0.3.28-1), librust-web-sys-0.3+boxquadoptions-dev (= 0.3.28-1), librust-web-sys-0.3+broadcastchannel-dev (= 0.3.28-1), librust-web-sys-0.3+browserelementdownloadoptions-dev (= 0.3.28-1), librust-web-sys-0.3+browserelementexecutescriptoptions-dev (= 0.3.28-1), librust-web-sys-0.3+browserfeedwriter-dev (= 0.3.28-1), librust-web-sys-0.3+browserfindcasesensitivity-dev (= 0.3.28-1), librust-web-sys-0.3+browserfinddirection-dev (= 0.3.28-1), librust-web-sys-0.3+cache-dev (= 0.3.28-1), librust-web-sys-0.3+cachebatchoperation-dev (= 0.3.28-1), librust-web-sys-0.3+cachequeryoptions-dev (= 0.3.28-1), librust-web-sys-0.3+cachestorage-dev (= 0.3.28-1), librust-web-sys-0.3+cachestoragenamespace-dev (= 0.3.28-1), librust-web-sys-0.3+canvascapturemediastream-dev (= 0.3.28-1), librust-web-sys-0.3+canvasgradient-dev (= 0.3.28-1), librust-web-sys-0.3+canvaspattern-dev (= 0.3.28-1), librust-web-sys-0.3+canvasrenderingcontext2d-dev (= 0.3.28-1), librust-web-sys-0.3+canvaswindingrule-dev (= 0.3.28-1), librust-web-sys-0.3+caretchangedreason-dev (= 0.3.28-1), librust-web-sys-0.3+caretposition-dev (= 0.3.28-1), librust-web-sys-0.3+caretstatechangedeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+cdatasection-dev (= 0.3.28-1), librust-web-sys-0.3+channelcountmode-dev (= 0.3.28-1), librust-web-sys-0.3+channelinterpretation-dev (= 0.3.28-1), librust-web-sys-0.3+channelmergernode-dev (= 0.3.28-1), librust-web-sys-0.3+channelmergeroptions-dev (= 0.3.28-1), librust-web-sys-0.3+channelpixellayout-dev (= 0.3.28-1), librust-web-sys-0.3+channelpixellayoutdatatype-dev (= 0.3.28-1), librust-web-sys-0.3+channelsplitternode-dev (= 0.3.28-1), librust-web-sys-0.3+channelsplitteroptions-dev (= 0.3.28-1), librust-web-sys-0.3+characterdata-dev (= 0.3.28-1), librust-web-sys-0.3+checkerboardreason-dev (= 0.3.28-1), librust-web-sys-0.3+checkerboardreport-dev (= 0.3.28-1), librust-web-sys-0.3+checkerboardreportservice-dev (= 0.3.28-1), librust-web-sys-0.3+chromefilepropertybag-dev (= 0.3.28-1), librust-web-sys-0.3+chromeworker-dev (= 0.3.28-1), librust-web-sys-0.3+client-dev (= 0.3.28-1), librust-web-sys-0.3+clientqueryoptions-dev (= 0.3.28-1), librust-web-sys-0.3+clientrectsandtexts-dev (= 0.3.28-1), librust-web-sys-0.3+clients-dev (= 0.3.28-1), librust-web-sys-0.3+clienttype-dev (= 0.3.28-1), librust-web-sys-0.3+clipboardevent-dev (= 0.3.28-1), librust-web-sys-0.3+clipboardeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+closeevent-dev (= 0.3.28-1), librust-web-sys-0.3+closeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+collectedclientdata-dev (= 0.3.28-1), librust-web-sys-0.3+comment-dev (= 0.3.28-1), librust-web-sys-0.3+compositeoperation-dev (= 0.3.28-1), librust-web-sys-0.3+compositionevent-dev (= 0.3.28-1), librust-web-sys-0.3+compositioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+computedeffecttiming-dev (= 0.3.28-1), librust-web-sys-0.3+connectiontype-dev (= 0.3.28-1), librust-web-sys-0.3+connstatusdict-dev (= 0.3.28-1), librust-web-sys-0.3+console-dev (= 0.3.28-1), librust-web-sys-0.3+consolecounter-dev (= 0.3.28-1), librust-web-sys-0.3+consolecountererror-dev (= 0.3.28-1), librust-web-sys-0.3+consoleevent-dev (= 0.3.28-1), librust-web-sys-0.3+consoleinstance-dev (= 0.3.28-1), librust-web-sys-0.3+consoleinstanceoptions-dev (= 0.3.28-1), librust-web-sys-0.3+consolelevel-dev (= 0.3.28-1), librust-web-sys-0.3+consoleloglevel-dev (= 0.3.28-1), librust-web-sys-0.3+consoleprofileevent-dev (= 0.3.28-1), librust-web-sys-0.3+consolestackentry-dev (= 0.3.28-1), librust-web-sys-0.3+consoletimererror-dev (= 0.3.28-1), librust-web-sys-0.3+consoletimerlogorend-dev (= 0.3.28-1), librust-web-sys-0.3+consoletimerstart-dev (= 0.3.28-1), librust-web-sys-0.3+constantsourcenode-dev (= 0.3.28-1), librust-web-sys-0.3+constantsourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3+constrainbooleanparameters-dev (= 0.3.28-1), librust-web-sys-0.3+constraindomstringparameters-dev (= 0.3.28-1), librust-web-sys-0.3+constraindoublerange-dev (= 0.3.28-1), librust-web-sys-0.3+constrainlongrange-dev (= 0.3.28-1), librust-web-sys-0.3+contextattributes2d-dev (= 0.3.28-1), librust-web-sys-0.3+convertcoordinateoptions-dev (= 0.3.28-1), librust-web-sys-0.3+convolvernode-dev (= 0.3.28-1), librust-web-sys-0.3+convolveroptions-dev (= 0.3.28-1), librust-web-sys-0.3+coordinates-dev (= 0.3.28-1), librust-web-sys-0.3+credential-dev (= 0.3.28-1), librust-web-sys-0.3+credentialcreationoptions-dev (= 0.3.28-1), librust-web-sys-0.3+credentialrequestoptions-dev (= 0.3.28-1), librust-web-sys-0.3+credentialscontainer-dev (= 0.3.28-1), librust-web-sys-0.3+crypto-dev (= 0.3.28-1), librust-web-sys-0.3+cryptokey-dev (= 0.3.28-1), librust-web-sys-0.3+cryptokeypair-dev (= 0.3.28-1), librust-web-sys-0.3+csp-dev (= 0.3.28-1), librust-web-sys-0.3+csppolicies-dev (= 0.3.28-1), librust-web-sys-0.3+cspreport-dev (= 0.3.28-1), librust-web-sys-0.3+cspreportproperties-dev (= 0.3.28-1), librust-web-sys-0.3+css-dev (= 0.3.28-1), librust-web-sys-0.3+cssanimation-dev (= 0.3.28-1), librust-web-sys-0.3+cssboxtype-dev (= 0.3.28-1), librust-web-sys-0.3+cssconditionrule-dev (= 0.3.28-1), librust-web-sys-0.3+csscounterstylerule-dev (= 0.3.28-1), librust-web-sys-0.3+cssfontfacerule-dev (= 0.3.28-1), librust-web-sys-0.3+cssfontfeaturevaluesrule-dev (= 0.3.28-1), librust-web-sys-0.3+cssgroupingrule-dev (= 0.3.28-1), librust-web-sys-0.3+cssimportrule-dev (= 0.3.28-1), librust-web-sys-0.3+csskeyframerule-dev (= 0.3.28-1), librust-web-sys-0.3+csskeyframesrule-dev (= 0.3.28-1), librust-web-sys-0.3+cssmediarule-dev (= 0.3.28-1), librust-web-sys-0.3+cssnamespacerule-dev (= 0.3.28-1), librust-web-sys-0.3+csspagerule-dev (= 0.3.28-1), librust-web-sys-0.3+csspseudoelement-dev (= 0.3.28-1), librust-web-sys-0.3+cssrule-dev (= 0.3.28-1), librust-web-sys-0.3+cssrulelist-dev (= 0.3.28-1), librust-web-sys-0.3+cssstyledeclaration-dev (= 0.3.28-1), librust-web-sys-0.3+cssstylerule-dev (= 0.3.28-1), librust-web-sys-0.3+cssstylesheet-dev (= 0.3.28-1), librust-web-sys-0.3+cssstylesheetparsingmode-dev (= 0.3.28-1), librust-web-sys-0.3+csssupportsrule-dev (= 0.3.28-1), librust-web-sys-0.3+csstransition-dev (= 0.3.28-1), librust-web-sys-0.3+customelementregistry-dev (= 0.3.28-1), librust-web-sys-0.3+customevent-dev (= 0.3.28-1), librust-web-sys-0.3+customeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+datatransfer-dev (= 0.3.28-1), librust-web-sys-0.3+datatransferitem-dev (= 0.3.28-1), librust-web-sys-0.3+datatransferitemlist-dev (= 0.3.28-1), librust-web-sys-0.3+datetimevalue-dev (= 0.3.28-1), librust-web-sys-0.3+decoderdoctornotification-dev (= 0.3.28-1), librust-web-sys-0.3+decoderdoctornotificationtype-dev (= 0.3.28-1), librust-web-sys-0.3+dedicatedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+default-dev (= 0.3.28-1), librust-web-sys-0.3+delaynode-dev (= 0.3.28-1), librust-web-sys-0.3+delayoptions-dev (= 0.3.28-1), librust-web-sys-0.3+deviceacceleration-dev (= 0.3.28-1), librust-web-sys-0.3+deviceaccelerationinit-dev (= 0.3.28-1), librust-web-sys-0.3+devicelightevent-dev (= 0.3.28-1), librust-web-sys-0.3+devicelighteventinit-dev (= 0.3.28-1), librust-web-sys-0.3+devicemotionevent-dev (= 0.3.28-1), librust-web-sys-0.3+devicemotioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+deviceorientationevent-dev (= 0.3.28-1), librust-web-sys-0.3+deviceorientationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+deviceproximityevent-dev (= 0.3.28-1), librust-web-sys-0.3+deviceproximityeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+devicerotationrate-dev (= 0.3.28-1), librust-web-sys-0.3+devicerotationrateinit-dev (= 0.3.28-1), librust-web-sys-0.3+dhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys-0.3+directionsetting-dev (= 0.3.28-1), librust-web-sys-0.3+directory-dev (= 0.3.28-1), librust-web-sys-0.3+displaynameoptions-dev (= 0.3.28-1), librust-web-sys-0.3+displaynameresult-dev (= 0.3.28-1), librust-web-sys-0.3+distancemodeltype-dev (= 0.3.28-1), librust-web-sys-0.3+dnscachedict-dev (= 0.3.28-1), librust-web-sys-0.3+dnscacheentry-dev (= 0.3.28-1), librust-web-sys-0.3+dnslookupdict-dev (= 0.3.28-1), librust-web-sys-0.3+document-dev (= 0.3.28-1), librust-web-sys-0.3+documentfragment-dev (= 0.3.28-1), librust-web-sys-0.3+documenttimeline-dev (= 0.3.28-1), librust-web-sys-0.3+documenttimelineoptions-dev (= 0.3.28-1), librust-web-sys-0.3+documenttype-dev (= 0.3.28-1), librust-web-sys-0.3+domerror-dev (= 0.3.28-1), librust-web-sys-0.3+domexception-dev (= 0.3.28-1), librust-web-sys-0.3+domimplementation-dev (= 0.3.28-1), librust-web-sys-0.3+dommatrix-dev (= 0.3.28-1), librust-web-sys-0.3+dommatrixreadonly-dev (= 0.3.28-1), librust-web-sys-0.3+domparser-dev (= 0.3.28-1), librust-web-sys-0.3+dompoint-dev (= 0.3.28-1), librust-web-sys-0.3+dompointinit-dev (= 0.3.28-1), librust-web-sys-0.3+dompointreadonly-dev (= 0.3.28-1), librust-web-sys-0.3+domquad-dev (= 0.3.28-1), librust-web-sys-0.3+domquadinit-dev (= 0.3.28-1), librust-web-sys-0.3+domquadjson-dev (= 0.3.28-1), librust-web-sys-0.3+domrect-dev (= 0.3.28-1), librust-web-sys-0.3+domrectinit-dev (= 0.3.28-1), librust-web-sys-0.3+domrectlist-dev (= 0.3.28-1), librust-web-sys-0.3+domrectreadonly-dev (= 0.3.28-1), librust-web-sys-0.3+domrequest-dev (= 0.3.28-1), librust-web-sys-0.3+domrequestreadystate-dev (= 0.3.28-1), librust-web-sys-0.3+domstringlist-dev (= 0.3.28-1), librust-web-sys-0.3+domstringmap-dev (= 0.3.28-1), librust-web-sys-0.3+domtokenlist-dev (= 0.3.28-1), librust-web-sys-0.3+domwindowresizeeventdetail-dev (= 0.3.28-1), librust-web-sys-0.3+dragevent-dev (= 0.3.28-1), librust-web-sys-0.3+drageventinit-dev (= 0.3.28-1), librust-web-sys-0.3+dynamicscompressornode-dev (= 0.3.28-1), librust-web-sys-0.3+dynamicscompressoroptions-dev (= 0.3.28-1), librust-web-sys-0.3+ecdhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys-0.3+ecdsaparams-dev (= 0.3.28-1), librust-web-sys-0.3+eckeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3+eckeygenparams-dev (= 0.3.28-1), librust-web-sys-0.3+eckeyimportparams-dev (= 0.3.28-1), librust-web-sys-0.3+effecttiming-dev (= 0.3.28-1), librust-web-sys-0.3+element-dev (= 0.3.28-1), librust-web-sys-0.3+elementcreationoptions-dev (= 0.3.28-1), librust-web-sys-0.3+elementdefinitionoptions-dev (= 0.3.28-1), librust-web-sys-0.3+endingtypes-dev (= 0.3.28-1), librust-web-sys-0.3+errorcallback-dev (= 0.3.28-1), librust-web-sys-0.3+errorevent-dev (= 0.3.28-1), librust-web-sys-0.3+erroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3+event-dev (= 0.3.28-1), librust-web-sys-0.3+eventinit-dev (= 0.3.28-1), librust-web-sys-0.3+eventlistener-dev (= 0.3.28-1), librust-web-sys-0.3+eventlisteneroptions-dev (= 0.3.28-1), librust-web-sys-0.3+eventmodifierinit-dev (= 0.3.28-1), librust-web-sys-0.3+eventsource-dev (= 0.3.28-1), librust-web-sys-0.3+eventsourceinit-dev (= 0.3.28-1), librust-web-sys-0.3+eventtarget-dev (= 0.3.28-1), librust-web-sys-0.3+exception-dev (= 0.3.28-1), librust-web-sys-0.3+extblendminmax-dev (= 0.3.28-1), librust-web-sys-0.3+extcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys-0.3+extcolorbufferhalffloat-dev (= 0.3.28-1), librust-web-sys-0.3+extdisjointtimerquery-dev (= 0.3.28-1), librust-web-sys-0.3+extendableevent-dev (= 0.3.28-1), librust-web-sys-0.3+extendableeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+extendablemessageevent-dev (= 0.3.28-1), librust-web-sys-0.3+extendablemessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+external-dev (= 0.3.28-1), librust-web-sys-0.3+extfragdepth-dev (= 0.3.28-1), librust-web-sys-0.3+extshadertexturelod-dev (= 0.3.28-1), librust-web-sys-0.3+extsrgb-dev (= 0.3.28-1), librust-web-sys-0.3+exttexturefilteranisotropic-dev (= 0.3.28-1), librust-web-sys-0.3+fakepluginmimeentry-dev (= 0.3.28-1), librust-web-sys-0.3+fakeplugintaginit-dev (= 0.3.28-1), librust-web-sys-0.3+fetchevent-dev (= 0.3.28-1), librust-web-sys-0.3+fetcheventinit-dev (= 0.3.28-1), librust-web-sys-0.3+fetchobserver-dev (= 0.3.28-1), librust-web-sys-0.3+fetchreadablestreamreaddataarray-dev (= 0.3.28-1), librust-web-sys-0.3+fetchreadablestreamreaddatadone-dev (= 0.3.28-1), librust-web-sys-0.3+fetchstate-dev (= 0.3.28-1), librust-web-sys-0.3+file-dev (= 0.3.28-1), librust-web-sys-0.3+filecallback-dev (= 0.3.28-1), librust-web-sys-0.3+filelist-dev (= 0.3.28-1), librust-web-sys-0.3+filepropertybag-dev (= 0.3.28-1), librust-web-sys-0.3+filereader-dev (= 0.3.28-1), librust-web-sys-0.3+filereadersync-dev (= 0.3.28-1), librust-web-sys-0.3+filesystem-dev (= 0.3.28-1), librust-web-sys-0.3+filesystemdirectoryentry-dev (= 0.3.28-1), librust-web-sys-0.3+filesystemdirectoryreader-dev (= 0.3.28-1), librust-web-sys-0.3+filesystementriescallback-dev (= 0.3.28-1), librust-web-sys-0.3+filesystementry-dev (= 0.3.28-1), librust-web-sys-0.3+filesystementrycallback-dev (= 0.3.28-1), librust-web-sys-0.3+filesystemfileentry-dev (= 0.3.28-1), librust-web-sys-0.3+filesystemflags-dev (= 0.3.28-1), librust-web-sys-0.3+fillmode-dev (= 0.3.28-1), librust-web-sys-0.3+flashclassification-dev (= 0.3.28-1), librust-web-sys-0.3+flexlinegrowthstate-dev (= 0.3.28-1), librust-web-sys-0.3+focusevent-dev (= 0.3.28-1), librust-web-sys-0.3+focuseventinit-dev (= 0.3.28-1), librust-web-sys-0.3+fontface-dev (= 0.3.28-1), librust-web-sys-0.3+fontfacedescriptors-dev (= 0.3.28-1), librust-web-sys-0.3+fontfaceloadstatus-dev (= 0.3.28-1), librust-web-sys-0.3+fontfaceset-dev (= 0.3.28-1), librust-web-sys-0.3+fontfacesetiterator-dev (= 0.3.28-1), librust-web-sys-0.3+fontfacesetiteratorresult-dev (= 0.3.28-1), librust-web-sys-0.3+fontfacesetloadevent-dev (= 0.3.28-1), librust-web-sys-0.3+fontfacesetloadeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+fontfacesetloadstatus-dev (= 0.3.28-1), librust-web-sys-0.3+formdata-dev (= 0.3.28-1), librust-web-sys-0.3+frametype-dev (= 0.3.28-1), librust-web-sys-0.3+fuzzingfunctions-dev (= 0.3.28-1), librust-web-sys-0.3+gainnode-dev (= 0.3.28-1), librust-web-sys-0.3+gainoptions-dev (= 0.3.28-1), librust-web-sys-0.3+gamepad-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadaxismoveevent-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadaxismoveeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadbutton-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadbuttonevent-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadbuttoneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadevent-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadhand-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadhapticactuator-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadhapticactuatortype-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadmappingtype-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadpose-dev (= 0.3.28-1), librust-web-sys-0.3+gamepadservicetest-dev (= 0.3.28-1), librust-web-sys-0.3+geolocation-dev (= 0.3.28-1), librust-web-sys-0.3+getnotificationoptions-dev (= 0.3.28-1), librust-web-sys-0.3+getrootnodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3+getusermediarequest-dev (= 0.3.28-1), librust-web-sys-0.3+griddeclaration-dev (= 0.3.28-1), librust-web-sys-0.3+gridtrackstate-dev (= 0.3.28-1), librust-web-sys-0.3+groupedhistoryeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+halfopeninfodict-dev (= 0.3.28-1), librust-web-sys-0.3+hashchangeevent-dev (= 0.3.28-1), librust-web-sys-0.3+hashchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+headers-dev (= 0.3.28-1), librust-web-sys-0.3+headersguardenum-dev (= 0.3.28-1), librust-web-sys-0.3+hiddenplugineventinit-dev (= 0.3.28-1), librust-web-sys-0.3+history-dev (= 0.3.28-1), librust-web-sys-0.3+hitregionoptions-dev (= 0.3.28-1), librust-web-sys-0.3+hkdfparams-dev (= 0.3.28-1), librust-web-sys-0.3+hmacderivedkeyparams-dev (= 0.3.28-1), librust-web-sys-0.3+hmacimportparams-dev (= 0.3.28-1), librust-web-sys-0.3+hmackeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3+hmackeygenparams-dev (= 0.3.28-1), librust-web-sys-0.3+htmlallcollection-dev (= 0.3.28-1), librust-web-sys-0.3+htmlanchorelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlareaelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlaudioelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlbaseelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlbodyelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlbrelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlbuttonelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlcanvaselement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlcollection-dev (= 0.3.28-1), librust-web-sys-0.3+htmldataelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldatalistelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldetailselement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldialogelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldirectoryelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldivelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldlistelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmldocument-dev (= 0.3.28-1), librust-web-sys-0.3+htmlelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlembedelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlfieldsetelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlfontelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlformcontrolscollection-dev (= 0.3.28-1), librust-web-sys-0.3+htmlformelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlframeelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlframesetelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlheadelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlheadingelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlhrelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlhtmlelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlhyperlinkelementutils-dev (= 0.3.28-1), librust-web-sys-0.3+htmliframeelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlimageelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlinputelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmllabelelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmllegendelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmllielement-dev (= 0.3.28-1), librust-web-sys-0.3+htmllinkelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmapelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmediaelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmenuelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmenuitemelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmetaelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmeterelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlmodelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlobjectelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlolistelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmloptgroupelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmloptionelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmloptionscollection-dev (= 0.3.28-1), librust-web-sys-0.3+htmloutputelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlparagraphelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlparamelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlpictureelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlpreelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlprogresselement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlquoteelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlscriptelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlselectelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlslotelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlsourceelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlspanelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlstyleelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltablecaptionelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltablecellelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltablecolelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltableelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltablerowelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltablesectionelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltemplateelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltextareaelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltimeelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltitleelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmltrackelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlulistelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlunknownelement-dev (= 0.3.28-1), librust-web-sys-0.3+htmlvideoelement-dev (= 0.3.28-1), librust-web-sys-0.3+httpconndict-dev (= 0.3.28-1), librust-web-sys-0.3+httpconnectionelement-dev (= 0.3.28-1), librust-web-sys-0.3+httpconninfo-dev (= 0.3.28-1), librust-web-sys-0.3+idbcursor-dev (= 0.3.28-1), librust-web-sys-0.3+idbcursordirection-dev (= 0.3.28-1), librust-web-sys-0.3+idbcursorwithvalue-dev (= 0.3.28-1), librust-web-sys-0.3+idbdatabase-dev (= 0.3.28-1), librust-web-sys-0.3+idbfactory-dev (= 0.3.28-1), librust-web-sys-0.3+idbfilehandle-dev (= 0.3.28-1), librust-web-sys-0.3+idbfilemetadataparameters-dev (= 0.3.28-1), librust-web-sys-0.3+idbfilerequest-dev (= 0.3.28-1), librust-web-sys-0.3+idbindex-dev (= 0.3.28-1), librust-web-sys-0.3+idbindexparameters-dev (= 0.3.28-1), librust-web-sys-0.3+idbkeyrange-dev (= 0.3.28-1), librust-web-sys-0.3+idblocaleawarekeyrange-dev (= 0.3.28-1), librust-web-sys-0.3+idbmutablefile-dev (= 0.3.28-1), librust-web-sys-0.3+idbobjectstore-dev (= 0.3.28-1), librust-web-sys-0.3+idbobjectstoreparameters-dev (= 0.3.28-1), librust-web-sys-0.3+idbopendboptions-dev (= 0.3.28-1), librust-web-sys-0.3+idbopendbrequest-dev (= 0.3.28-1), librust-web-sys-0.3+idbrequest-dev (= 0.3.28-1), librust-web-sys-0.3+idbrequestreadystate-dev (= 0.3.28-1), librust-web-sys-0.3+idbtransaction-dev (= 0.3.28-1), librust-web-sys-0.3+idbtransactionmode-dev (= 0.3.28-1), librust-web-sys-0.3+idbversionchangeevent-dev (= 0.3.28-1), librust-web-sys-0.3+idbversionchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+idledeadline-dev (= 0.3.28-1), librust-web-sys-0.3+idlerequestoptions-dev (= 0.3.28-1), librust-web-sys-0.3+iirfilternode-dev (= 0.3.28-1), librust-web-sys-0.3+iirfilteroptions-dev (= 0.3.28-1), librust-web-sys-0.3+imagebitmap-dev (= 0.3.28-1), librust-web-sys-0.3+imagebitmapformat-dev (= 0.3.28-1), librust-web-sys-0.3+imagebitmaprenderingcontext-dev (= 0.3.28-1), librust-web-sys-0.3+imagecapture-dev (= 0.3.28-1), librust-web-sys-0.3+imagecaptureerror-dev (= 0.3.28-1), librust-web-sys-0.3+imagecaptureerrorevent-dev (= 0.3.28-1), librust-web-sys-0.3+imagecaptureerroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3+imagedata-dev (= 0.3.28-1), librust-web-sys-0.3+inputevent-dev (= 0.3.28-1), librust-web-sys-0.3+inputeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+installtriggerdata-dev (= 0.3.28-1), librust-web-sys-0.3+intersectionobserver-dev (= 0.3.28-1), librust-web-sys-0.3+intersectionobserverentry-dev (= 0.3.28-1), librust-web-sys-0.3+intersectionobserverentryinit-dev (= 0.3.28-1), librust-web-sys-0.3+intersectionobserverinit-dev (= 0.3.28-1), librust-web-sys-0.3+intlutils-dev (= 0.3.28-1), librust-web-sys-0.3+iterablekeyandvalueresult-dev (= 0.3.28-1), librust-web-sys-0.3+iterablekeyorvalueresult-dev (= 0.3.28-1), librust-web-sys-0.3+iterationcompositeoperation-dev (= 0.3.28-1), librust-web-sys-0.3+jsonwebkey-dev (= 0.3.28-1), librust-web-sys-0.3+keyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3+keyboardevent-dev (= 0.3.28-1), librust-web-sys-0.3+keyboardeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+keyevent-dev (= 0.3.28-1), librust-web-sys-0.3+keyframeeffect-dev (= 0.3.28-1), librust-web-sys-0.3+keyframeeffectoptions-dev (= 0.3.28-1), librust-web-sys-0.3+keyidsinitdata-dev (= 0.3.28-1), librust-web-sys-0.3+l10nelement-dev (= 0.3.28-1), librust-web-sys-0.3+l10nvalue-dev (= 0.3.28-1), librust-web-sys-0.3+lifecyclecallbacks-dev (= 0.3.28-1), librust-web-sys-0.3+linealignsetting-dev (= 0.3.28-1), librust-web-sys-0.3+listboxobject-dev (= 0.3.28-1), librust-web-sys-0.3+localeinfo-dev (= 0.3.28-1), librust-web-sys-0.3+localmediastream-dev (= 0.3.28-1), librust-web-sys-0.3+location-dev (= 0.3.28-1), librust-web-sys-0.3+mediacapabilities-dev (= 0.3.28-1), librust-web-sys-0.3+mediacapabilitiesinfo-dev (= 0.3.28-1), librust-web-sys-0.3+mediaconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+mediadecodingconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+mediadecodingtype-dev (= 0.3.28-1), librust-web-sys-0.3+mediadeviceinfo-dev (= 0.3.28-1), librust-web-sys-0.3+mediadevicekind-dev (= 0.3.28-1), librust-web-sys-0.3+mediadevices-dev (= 0.3.28-1), librust-web-sys-0.3+mediaelementaudiosourcenode-dev (= 0.3.28-1), librust-web-sys-0.3+mediaelementaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3+mediaencodingconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+mediaencodingtype-dev (= 0.3.28-1), librust-web-sys-0.3+mediaencryptedevent-dev (= 0.3.28-1), librust-web-sys-0.3+mediaerror-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeyerror-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeymessageevent-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeymessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeymessagetype-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeyneededeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeys-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysession-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysessiontype-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeyspolicy-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysrequirement-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeystatus-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeystatusmap-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysystemaccess-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysystemconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysystemmediacapability-dev (= 0.3.28-1), librust-web-sys-0.3+mediakeysystemstatus-dev (= 0.3.28-1), librust-web-sys-0.3+medialist-dev (= 0.3.28-1), librust-web-sys-0.3+mediaquerylist-dev (= 0.3.28-1), librust-web-sys-0.3+mediaquerylistevent-dev (= 0.3.28-1), librust-web-sys-0.3+mediaquerylisteventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mediarecorder-dev (= 0.3.28-1), librust-web-sys-0.3+mediarecordererrorevent-dev (= 0.3.28-1), librust-web-sys-0.3+mediarecordererroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mediarecorderoptions-dev (= 0.3.28-1), librust-web-sys-0.3+mediasource-dev (= 0.3.28-1), librust-web-sys-0.3+mediasourceendofstreamerror-dev (= 0.3.28-1), librust-web-sys-0.3+mediasourceenum-dev (= 0.3.28-1), librust-web-sys-0.3+mediasourcereadystate-dev (= 0.3.28-1), librust-web-sys-0.3+mediastream-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamaudiodestinationnode-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamaudiosourcenode-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamconstraints-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamerror-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamevent-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreameventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamtrack-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamtrackevent-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamtrackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mediastreamtrackstate-dev (= 0.3.28-1), librust-web-sys-0.3+mediatrackconstraints-dev (= 0.3.28-1), librust-web-sys-0.3+mediatrackconstraintset-dev (= 0.3.28-1), librust-web-sys-0.3+mediatracksettings-dev (= 0.3.28-1), librust-web-sys-0.3+mediatracksupportedconstraints-dev (= 0.3.28-1), librust-web-sys-0.3+messagechannel-dev (= 0.3.28-1), librust-web-sys-0.3+messageevent-dev (= 0.3.28-1), librust-web-sys-0.3+messageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+messageport-dev (= 0.3.28-1), librust-web-sys-0.3+midiaccess-dev (= 0.3.28-1), librust-web-sys-0.3+midiconnectionevent-dev (= 0.3.28-1), librust-web-sys-0.3+midiconnectioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+midiinput-dev (= 0.3.28-1), librust-web-sys-0.3+midiinputmap-dev (= 0.3.28-1), librust-web-sys-0.3+midimessageevent-dev (= 0.3.28-1), librust-web-sys-0.3+midimessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+midioptions-dev (= 0.3.28-1), librust-web-sys-0.3+midioutput-dev (= 0.3.28-1), librust-web-sys-0.3+midioutputmap-dev (= 0.3.28-1), librust-web-sys-0.3+midiport-dev (= 0.3.28-1), librust-web-sys-0.3+midiportconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3+midiportdevicestate-dev (= 0.3.28-1), librust-web-sys-0.3+midiporttype-dev (= 0.3.28-1), librust-web-sys-0.3+mimetype-dev (= 0.3.28-1), librust-web-sys-0.3+mimetypearray-dev (= 0.3.28-1), librust-web-sys-0.3+mouseevent-dev (= 0.3.28-1), librust-web-sys-0.3+mouseeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+mousescrollevent-dev (= 0.3.28-1), librust-web-sys-0.3+mozdebug-dev (= 0.3.28-1), librust-web-sys-0.3+mutationevent-dev (= 0.3.28-1), librust-web-sys-0.3+mutationobserver-dev (= 0.3.28-1), librust-web-sys-0.3+mutationobserverinit-dev (= 0.3.28-1), librust-web-sys-0.3+mutationobservinginfo-dev (= 0.3.28-1), librust-web-sys-0.3+mutationrecord-dev (= 0.3.28-1), librust-web-sys-0.3+namednodemap-dev (= 0.3.28-1), librust-web-sys-0.3+nativeosfilereadoptions-dev (= 0.3.28-1), librust-web-sys-0.3+nativeosfilewriteatomicoptions-dev (= 0.3.28-1), librust-web-sys-0.3+navigationtype-dev (= 0.3.28-1), librust-web-sys-0.3+navigator-dev (= 0.3.28-1), librust-web-sys-0.3+navigatorautomationinformation-dev (= 0.3.28-1), librust-web-sys-0.3+networkcommandoptions-dev (= 0.3.28-1), librust-web-sys-0.3+networkinformation-dev (= 0.3.28-1), librust-web-sys-0.3+networkresultoptions-dev (= 0.3.28-1), librust-web-sys-0.3+node-dev (= 0.3.28-1), librust-web-sys-0.3+nodefilter-dev (= 0.3.28-1), librust-web-sys-0.3+nodeiterator-dev (= 0.3.28-1), librust-web-sys-0.3+nodelist-dev (= 0.3.28-1), librust-web-sys-0.3+notification-dev (= 0.3.28-1), librust-web-sys-0.3+notificationbehavior-dev (= 0.3.28-1), librust-web-sys-0.3+notificationdirection-dev (= 0.3.28-1), librust-web-sys-0.3+notificationevent-dev (= 0.3.28-1), librust-web-sys-0.3+notificationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+notificationoptions-dev (= 0.3.28-1), librust-web-sys-0.3+notificationpermission-dev (= 0.3.28-1), librust-web-sys-0.3+observercallback-dev (= 0.3.28-1), librust-web-sys-0.3+oeselementindexuint-dev (= 0.3.28-1), librust-web-sys-0.3+oesstandardderivatives-dev (= 0.3.28-1), librust-web-sys-0.3+oestexturefloat-dev (= 0.3.28-1), librust-web-sys-0.3+oestexturefloatlinear-dev (= 0.3.28-1), librust-web-sys-0.3+oestexturehalffloat-dev (= 0.3.28-1), librust-web-sys-0.3+oestexturehalffloatlinear-dev (= 0.3.28-1), librust-web-sys-0.3+oesvertexarrayobject-dev (= 0.3.28-1), librust-web-sys-0.3+offlineaudiocompletionevent-dev (= 0.3.28-1), librust-web-sys-0.3+offlineaudiocompletioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+offlineaudiocontext-dev (= 0.3.28-1), librust-web-sys-0.3+offlineaudiocontextoptions-dev (= 0.3.28-1), librust-web-sys-0.3+offlineresourcelist-dev (= 0.3.28-1), librust-web-sys-0.3+offscreencanvas-dev (= 0.3.28-1), librust-web-sys-0.3+openwindoweventdetail-dev (= 0.3.28-1), librust-web-sys-0.3+optionaleffecttiming-dev (= 0.3.28-1), librust-web-sys-0.3+orientationlocktype-dev (= 0.3.28-1), librust-web-sys-0.3+orientationtype-dev (= 0.3.28-1), librust-web-sys-0.3+oscillatornode-dev (= 0.3.28-1), librust-web-sys-0.3+oscillatoroptions-dev (= 0.3.28-1), librust-web-sys-0.3+oscillatortype-dev (= 0.3.28-1), librust-web-sys-0.3+oversampletype-dev (= 0.3.28-1), librust-web-sys-0.3+pagetransitionevent-dev (= 0.3.28-1), librust-web-sys-0.3+pagetransitioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+paintrequest-dev (= 0.3.28-1), librust-web-sys-0.3+paintrequestlist-dev (= 0.3.28-1), librust-web-sys-0.3+paintworkletglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+pannernode-dev (= 0.3.28-1), librust-web-sys-0.3+panneroptions-dev (= 0.3.28-1), librust-web-sys-0.3+panningmodeltype-dev (= 0.3.28-1), librust-web-sys-0.3+path2d-dev (= 0.3.28-1), librust-web-sys-0.3+paymentaddress-dev (= 0.3.28-1), librust-web-sys-0.3+paymentcomplete-dev (= 0.3.28-1), librust-web-sys-0.3+paymentmethodchangeevent-dev (= 0.3.28-1), librust-web-sys-0.3+paymentmethodchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+paymentrequestupdateevent-dev (= 0.3.28-1), librust-web-sys-0.3+paymentrequestupdateeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+paymentresponse-dev (= 0.3.28-1), librust-web-sys-0.3+pbkdf2params-dev (= 0.3.28-1), librust-web-sys-0.3+pcimpliceconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3+pcimplicegatheringstate-dev (= 0.3.28-1), librust-web-sys-0.3+pcimplsignalingstate-dev (= 0.3.28-1), librust-web-sys-0.3+pcobserverstatetype-dev (= 0.3.28-1), librust-web-sys-0.3+performance-dev (= 0.3.28-1), librust-web-sys-0.3+performanceentry-dev (= 0.3.28-1), librust-web-sys-0.3+performanceentryeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+performanceentryfilteroptions-dev (= 0.3.28-1), librust-web-sys-0.3+performancemark-dev (= 0.3.28-1), librust-web-sys-0.3+performancemeasure-dev (= 0.3.28-1), librust-web-sys-0.3+performancenavigation-dev (= 0.3.28-1), librust-web-sys-0.3+performancenavigationtiming-dev (= 0.3.28-1), librust-web-sys-0.3+performanceobserver-dev (= 0.3.28-1), librust-web-sys-0.3+performanceobserverentrylist-dev (= 0.3.28-1), librust-web-sys-0.3+performanceobserverinit-dev (= 0.3.28-1), librust-web-sys-0.3+performanceresourcetiming-dev (= 0.3.28-1), librust-web-sys-0.3+performanceservertiming-dev (= 0.3.28-1), librust-web-sys-0.3+performancetiming-dev (= 0.3.28-1), librust-web-sys-0.3+periodicwave-dev (= 0.3.28-1), librust-web-sys-0.3+periodicwaveconstraints-dev (= 0.3.28-1), librust-web-sys-0.3+periodicwaveoptions-dev (= 0.3.28-1), librust-web-sys-0.3+permissiondescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+permissionname-dev (= 0.3.28-1), librust-web-sys-0.3+permissions-dev (= 0.3.28-1), librust-web-sys-0.3+permissionstate-dev (= 0.3.28-1), librust-web-sys-0.3+permissionstatus-dev (= 0.3.28-1), librust-web-sys-0.3+playbackdirection-dev (= 0.3.28-1), librust-web-sys-0.3+plugin-dev (= 0.3.28-1), librust-web-sys-0.3+pluginarray-dev (= 0.3.28-1), librust-web-sys-0.3+plugincrashedeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+pointerevent-dev (= 0.3.28-1), librust-web-sys-0.3+pointereventinit-dev (= 0.3.28-1), librust-web-sys-0.3+popstateevent-dev (= 0.3.28-1), librust-web-sys-0.3+popstateeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+popupblockedevent-dev (= 0.3.28-1), librust-web-sys-0.3+popupblockedeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+position-dev (= 0.3.28-1), librust-web-sys-0.3+positionalignsetting-dev (= 0.3.28-1), librust-web-sys-0.3+positionerror-dev (= 0.3.28-1), librust-web-sys-0.3+positionoptions-dev (= 0.3.28-1), librust-web-sys-0.3+presentation-dev (= 0.3.28-1), librust-web-sys-0.3+presentationavailability-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnection-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectionavailableevent-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectionavailableeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectionbinarytype-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectionclosedreason-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectioncloseevent-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectioncloseeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectionlist-dev (= 0.3.28-1), librust-web-sys-0.3+presentationconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3+presentationreceiver-dev (= 0.3.28-1), librust-web-sys-0.3+presentationrequest-dev (= 0.3.28-1), librust-web-sys-0.3+processinginstruction-dev (= 0.3.28-1), librust-web-sys-0.3+profiletimelinelayerrect-dev (= 0.3.28-1), librust-web-sys-0.3+profiletimelinemarker-dev (= 0.3.28-1), librust-web-sys-0.3+profiletimelinemessageportoperationtype-dev (= 0.3.28-1), librust-web-sys-0.3+profiletimelinestackframe-dev (= 0.3.28-1), librust-web-sys-0.3+profiletimelineworkeroperationtype-dev (= 0.3.28-1), librust-web-sys-0.3+progressevent-dev (= 0.3.28-1), librust-web-sys-0.3+progresseventinit-dev (= 0.3.28-1), librust-web-sys-0.3+promisenativehandler-dev (= 0.3.28-1), librust-web-sys-0.3+promiserejectionevent-dev (= 0.3.28-1), librust-web-sys-0.3+promiserejectioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredential-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialcreationoptions-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialentity-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialparameters-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialrequestoptions-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialrpentity-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialtype-dev (= 0.3.28-1), librust-web-sys-0.3+publickeycredentialuserentity-dev (= 0.3.28-1), librust-web-sys-0.3+pushencryptionkeyname-dev (= 0.3.28-1), librust-web-sys-0.3+pushevent-dev (= 0.3.28-1), librust-web-sys-0.3+pusheventinit-dev (= 0.3.28-1), librust-web-sys-0.3+pushmanager-dev (= 0.3.28-1), librust-web-sys-0.3+pushmessagedata-dev (= 0.3.28-1), librust-web-sys-0.3+pushpermissionstate-dev (= 0.3.28-1), librust-web-sys-0.3+pushsubscription-dev (= 0.3.28-1), librust-web-sys-0.3+pushsubscriptioninit-dev (= 0.3.28-1), librust-web-sys-0.3+pushsubscriptionjson-dev (= 0.3.28-1), librust-web-sys-0.3+pushsubscriptionkeys-dev (= 0.3.28-1), librust-web-sys-0.3+pushsubscriptionoptions-dev (= 0.3.28-1), librust-web-sys-0.3+pushsubscriptionoptionsinit-dev (= 0.3.28-1), librust-web-sys-0.3+radionodelist-dev (= 0.3.28-1), librust-web-sys-0.3+range-dev (= 0.3.28-1), librust-web-sys-0.3+rcwnperfstats-dev (= 0.3.28-1), librust-web-sys-0.3+rcwnstatus-dev (= 0.3.28-1), librust-web-sys-0.3+readablestream-dev (= 0.3.28-1), librust-web-sys-0.3+recordingstate-dev (= 0.3.28-1), librust-web-sys-0.3+referrerpolicy-dev (= 0.3.28-1), librust-web-sys-0.3+registeredkey-dev (= 0.3.28-1), librust-web-sys-0.3+registerrequest-dev (= 0.3.28-1), librust-web-sys-0.3+registerresponse-dev (= 0.3.28-1), librust-web-sys-0.3+registrationoptions-dev (= 0.3.28-1), librust-web-sys-0.3+request-dev (= 0.3.28-1), librust-web-sys-0.3+requestcache-dev (= 0.3.28-1), librust-web-sys-0.3+requestcredentials-dev (= 0.3.28-1), librust-web-sys-0.3+requestdestination-dev (= 0.3.28-1), librust-web-sys-0.3+requestinit-dev (= 0.3.28-1), librust-web-sys-0.3+requestmediakeysystemaccessnotification-dev (= 0.3.28-1), librust-web-sys-0.3+requestmode-dev (= 0.3.28-1), librust-web-sys-0.3+requestredirect-dev (= 0.3.28-1), librust-web-sys-0.3+response-dev (= 0.3.28-1), librust-web-sys-0.3+responseinit-dev (= 0.3.28-1), librust-web-sys-0.3+responsetype-dev (= 0.3.28-1), librust-web-sys-0.3+rsahashedimportparams-dev (= 0.3.28-1), librust-web-sys-0.3+rsaoaepparams-dev (= 0.3.28-1), librust-web-sys-0.3+rsaotherprimesinfo-dev (= 0.3.28-1), librust-web-sys-0.3+rsapssparams-dev (= 0.3.28-1), librust-web-sys-0.3+rtcansweroptions-dev (= 0.3.28-1), librust-web-sys-0.3+rtcbundlepolicy-dev (= 0.3.28-1), librust-web-sys-0.3+rtccertificate-dev (= 0.3.28-1), librust-web-sys-0.3+rtccertificateexpiration-dev (= 0.3.28-1), librust-web-sys-0.3+rtccodecstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdatachannel-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdatachannelevent-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdatachanneleventinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdatachannelinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdatachannelstate-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdatachanneltype-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdegradationpreference-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdtmfsender-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdtmftonechangeevent-dev (= 0.3.28-1), librust-web-sys-0.3+rtcdtmftonechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcfecparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicecandidate-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicecandidateinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicecandidatepairstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicecandidatestats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicecomponentstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtciceconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicecredentialtype-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicegatheringstate-dev (= 0.3.28-1), librust-web-sys-0.3+rtciceserver-dev (= 0.3.28-1), librust-web-sys-0.3+rtcicetransportpolicy-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityassertion-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityassertionresult-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityprovider-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityproviderdetails-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityprovideroptions-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityproviderregistrar-dev (= 0.3.28-1), librust-web-sys-0.3+rtcidentityvalidationresult-dev (= 0.3.28-1), librust-web-sys-0.3+rtcinboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtclifecycleevent-dev (= 0.3.28-1), librust-web-sys-0.3+rtcmediastreamstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcmediastreamtrackstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcofferansweroptions-dev (= 0.3.28-1), librust-web-sys-0.3+rtcofferoptions-dev (= 0.3.28-1), librust-web-sys-0.3+rtcoutboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcpeerconnection-dev (= 0.3.28-1), librust-web-sys-0.3+rtcpeerconnectioniceevent-dev (= 0.3.28-1), librust-web-sys-0.3+rtcpeerconnectioniceeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcprioritytype-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtcpparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpcodecparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpcontributingsource-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpcontributingsourcestats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpencodingparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpheaderextensionparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpreceiver-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpsender-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpsourceentry-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpsourceentrytype-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtpsynchronizationsource-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtptransceiver-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtptransceiverdirection-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtptransceiverinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcrtxparameters-dev (= 0.3.28-1), librust-web-sys-0.3+rtcsdptype-dev (= 0.3.28-1), librust-web-sys-0.3+rtcsessiondescription-dev (= 0.3.28-1), librust-web-sys-0.3+rtcsessiondescriptioninit-dev (= 0.3.28-1), librust-web-sys-0.3+rtcsignalingstate-dev (= 0.3.28-1), librust-web-sys-0.3+rtcstats-dev (= 0.3.28-1), librust-web-sys-0.3+rtcstatsicecandidatepairstate-dev (= 0.3.28-1), librust-web-sys-0.3+rtcstatsicecandidatetype-dev (= 0.3.28-1), librust-web-sys-0.3+rtcstatsreport-dev (= 0.3.28-1), librust-web-sys-0.3+rtcstatsreportinternal-dev (= 0.3.28-1), librust-web-sys-0.3+rtcstatstype-dev (= 0.3.28-1), librust-web-sys-0.3+rtctrackevent-dev (= 0.3.28-1), librust-web-sys-0.3+rtctrackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+rtctransportstats-dev (= 0.3.28-1), librust-web-sys-0.3+screen-dev (= 0.3.28-1), librust-web-sys-0.3+screencolorgamut-dev (= 0.3.28-1), librust-web-sys-0.3+screenluminance-dev (= 0.3.28-1), librust-web-sys-0.3+screenorientation-dev (= 0.3.28-1), librust-web-sys-0.3+scriptprocessornode-dev (= 0.3.28-1), librust-web-sys-0.3+scrollareaevent-dev (= 0.3.28-1), librust-web-sys-0.3+scrollbehavior-dev (= 0.3.28-1), librust-web-sys-0.3+scrollboxobject-dev (= 0.3.28-1), librust-web-sys-0.3+scrollintoviewoptions-dev (= 0.3.28-1), librust-web-sys-0.3+scrolllogicalposition-dev (= 0.3.28-1), librust-web-sys-0.3+scrolloptions-dev (= 0.3.28-1), librust-web-sys-0.3+scrollrestoration-dev (= 0.3.28-1), librust-web-sys-0.3+scrollsetting-dev (= 0.3.28-1), librust-web-sys-0.3+scrollstate-dev (= 0.3.28-1), librust-web-sys-0.3+scrolltooptions-dev (= 0.3.28-1), librust-web-sys-0.3+scrollviewchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+securitypolicyviolationevent-dev (= 0.3.28-1), librust-web-sys-0.3+securitypolicyviolationeventdisposition-dev (= 0.3.28-1), librust-web-sys-0.3+securitypolicyviolationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+selection-dev (= 0.3.28-1), librust-web-sys-0.3+serversocketoptions-dev (= 0.3.28-1), librust-web-sys-0.3+serviceworker-dev (= 0.3.28-1), librust-web-sys-0.3+serviceworkercontainer-dev (= 0.3.28-1), librust-web-sys-0.3+serviceworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+serviceworkerregistration-dev (= 0.3.28-1), librust-web-sys-0.3+serviceworkerstate-dev (= 0.3.28-1), librust-web-sys-0.3+serviceworkerupdateviacache-dev (= 0.3.28-1), librust-web-sys-0.3+shadowroot-dev (= 0.3.28-1), librust-web-sys-0.3+shadowrootinit-dev (= 0.3.28-1), librust-web-sys-0.3+shadowrootmode-dev (= 0.3.28-1), librust-web-sys-0.3+sharedworker-dev (= 0.3.28-1), librust-web-sys-0.3+sharedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+signresponse-dev (= 0.3.28-1), librust-web-sys-0.3+socketelement-dev (= 0.3.28-1), librust-web-sys-0.3+socketoptions-dev (= 0.3.28-1), librust-web-sys-0.3+socketreadystate-dev (= 0.3.28-1), librust-web-sys-0.3+socketsdict-dev (= 0.3.28-1), librust-web-sys-0.3+sourcebuffer-dev (= 0.3.28-1), librust-web-sys-0.3+sourcebufferappendmode-dev (= 0.3.28-1), librust-web-sys-0.3+sourcebufferlist-dev (= 0.3.28-1), librust-web-sys-0.3+speechgrammar-dev (= 0.3.28-1), librust-web-sys-0.3+speechgrammarlist-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognition-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionalternative-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionerror-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionerrorcode-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionerrorinit-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionevent-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionresult-dev (= 0.3.28-1), librust-web-sys-0.3+speechrecognitionresultlist-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesis-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesiserrorcode-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesiserrorevent-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesiserroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesisevent-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesiseventinit-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesisutterance-dev (= 0.3.28-1), librust-web-sys-0.3+speechsynthesisvoice-dev (= 0.3.28-1), librust-web-sys-0.3+stereopannernode-dev (= 0.3.28-1), librust-web-sys-0.3+stereopanneroptions-dev (= 0.3.28-1), librust-web-sys-0.3+storage-dev (= 0.3.28-1), librust-web-sys-0.3+storageestimate-dev (= 0.3.28-1), librust-web-sys-0.3+storageevent-dev (= 0.3.28-1), librust-web-sys-0.3+storageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+storagemanager-dev (= 0.3.28-1), librust-web-sys-0.3+storagetype-dev (= 0.3.28-1), librust-web-sys-0.3+stylerulechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+stylesheet-dev (= 0.3.28-1), librust-web-sys-0.3+stylesheetapplicablestatechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+stylesheetchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+stylesheetlist-dev (= 0.3.28-1), librust-web-sys-0.3+subtlecrypto-dev (= 0.3.28-1), librust-web-sys-0.3+supportedtype-dev (= 0.3.28-1), librust-web-sys-0.3+svgaelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgangle-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedangle-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedboolean-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedenumeration-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedinteger-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedlength-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedlengthlist-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatednumber-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatednumberlist-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedrect-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedstring-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatedtransformlist-dev (= 0.3.28-1), librust-web-sys-0.3+svganimateelement-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatemotionelement-dev (= 0.3.28-1), librust-web-sys-0.3+svganimatetransformelement-dev (= 0.3.28-1), librust-web-sys-0.3+svganimationelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgboundingboxoptions-dev (= 0.3.28-1), librust-web-sys-0.3+svgcircleelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgclippathelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgcomponenttransferfunctionelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgdefselement-dev (= 0.3.28-1), librust-web-sys-0.3+svgdescelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgellipseelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfeblendelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfecolormatrixelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfecomponenttransferelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfecompositeelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfeconvolvematrixelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfediffuselightingelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfedisplacementmapelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfedistantlightelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfedropshadowelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfefloodelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfefuncaelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfefuncbelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfefuncgelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfefuncrelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfegaussianblurelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfeimageelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfemergeelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfemergenodeelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfemorphologyelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfeoffsetelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfepointlightelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfespecularlightingelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfespotlightelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfetileelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfeturbulenceelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgfilterelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgforeignobjectelement-dev (= 0.3.28-1), librust-web-sys-0.3+svggelement-dev (= 0.3.28-1), librust-web-sys-0.3+svggeometryelement-dev (= 0.3.28-1), librust-web-sys-0.3+svggradientelement-dev (= 0.3.28-1), librust-web-sys-0.3+svggraphicselement-dev (= 0.3.28-1), librust-web-sys-0.3+svgimageelement-dev (= 0.3.28-1), librust-web-sys-0.3+svglength-dev (= 0.3.28-1), librust-web-sys-0.3+svglengthlist-dev (= 0.3.28-1), librust-web-sys-0.3+svglineargradientelement-dev (= 0.3.28-1), librust-web-sys-0.3+svglineelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgmarkerelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgmaskelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgmatrix-dev (= 0.3.28-1), librust-web-sys-0.3+svgmetadataelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgmpathelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgnumber-dev (= 0.3.28-1), librust-web-sys-0.3+svgnumberlist-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseg-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegarcabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegarcrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegclosepath-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetocubicabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetocubicrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetocubicsmoothabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetocubicsmoothrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetoquadraticabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetoquadraticrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetoquadraticsmoothabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegcurvetoquadraticsmoothrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglinetoabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglinetohorizontalabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglinetohorizontalrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglinetorel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglinetoverticalabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglinetoverticalrel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathseglist-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegmovetoabs-dev (= 0.3.28-1), librust-web-sys-0.3+svgpathsegmovetorel-dev (= 0.3.28-1), librust-web-sys-0.3+svgpatternelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgpoint-dev (= 0.3.28-1), librust-web-sys-0.3+svgpointlist-dev (= 0.3.28-1), librust-web-sys-0.3+svgpolygonelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgpolylineelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys-0.3+svgradialgradientelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgrect-dev (= 0.3.28-1), librust-web-sys-0.3+svgrectelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgscriptelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgsetelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgstopelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgstringlist-dev (= 0.3.28-1), librust-web-sys-0.3+svgstyleelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgsvgelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgswitchelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgsymbolelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgtextcontentelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgtextelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgtextpathelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgtextpositioningelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgtitleelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgtransform-dev (= 0.3.28-1), librust-web-sys-0.3+svgtransformlist-dev (= 0.3.28-1), librust-web-sys-0.3+svgtspanelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgunittypes-dev (= 0.3.28-1), librust-web-sys-0.3+svguseelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgviewelement-dev (= 0.3.28-1), librust-web-sys-0.3+svgzoomandpan-dev (= 0.3.28-1), librust-web-sys-0.3+tcpreadystate-dev (= 0.3.28-1), librust-web-sys-0.3+tcpserversocket-dev (= 0.3.28-1), librust-web-sys-0.3+tcpserversocketevent-dev (= 0.3.28-1), librust-web-sys-0.3+tcpserversocketeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+tcpsocket-dev (= 0.3.28-1), librust-web-sys-0.3+tcpsocketbinarytype-dev (= 0.3.28-1), librust-web-sys-0.3+tcpsocketerrorevent-dev (= 0.3.28-1), librust-web-sys-0.3+tcpsocketerroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3+tcpsocketevent-dev (= 0.3.28-1), librust-web-sys-0.3+tcpsocketeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+text-dev (= 0.3.28-1), librust-web-sys-0.3+textdecodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3+textdecoder-dev (= 0.3.28-1), librust-web-sys-0.3+textdecoderoptions-dev (= 0.3.28-1), librust-web-sys-0.3+textencoder-dev (= 0.3.28-1), librust-web-sys-0.3+textmetrics-dev (= 0.3.28-1), librust-web-sys-0.3+texttrack-dev (= 0.3.28-1), librust-web-sys-0.3+texttrackcue-dev (= 0.3.28-1), librust-web-sys-0.3+texttrackcuelist-dev (= 0.3.28-1), librust-web-sys-0.3+texttrackkind-dev (= 0.3.28-1), librust-web-sys-0.3+texttracklist-dev (= 0.3.28-1), librust-web-sys-0.3+texttrackmode-dev (= 0.3.28-1), librust-web-sys-0.3+timeevent-dev (= 0.3.28-1), librust-web-sys-0.3+timeranges-dev (= 0.3.28-1), librust-web-sys-0.3+touch-dev (= 0.3.28-1), librust-web-sys-0.3+touchevent-dev (= 0.3.28-1), librust-web-sys-0.3+toucheventinit-dev (= 0.3.28-1), librust-web-sys-0.3+touchinit-dev (= 0.3.28-1), librust-web-sys-0.3+touchlist-dev (= 0.3.28-1), librust-web-sys-0.3+trackevent-dev (= 0.3.28-1), librust-web-sys-0.3+trackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+transitionevent-dev (= 0.3.28-1), librust-web-sys-0.3+transitioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3+transport-dev (= 0.3.28-1), librust-web-sys-0.3+treeboxobject-dev (= 0.3.28-1), librust-web-sys-0.3+treecellinfo-dev (= 0.3.28-1), librust-web-sys-0.3+treeview-dev (= 0.3.28-1), librust-web-sys-0.3+treewalker-dev (= 0.3.28-1), librust-web-sys-0.3+u2f-dev (= 0.3.28-1), librust-web-sys-0.3+u2fclientdata-dev (= 0.3.28-1), librust-web-sys-0.3+udpmessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+udpoptions-dev (= 0.3.28-1), librust-web-sys-0.3+uievent-dev (= 0.3.28-1), librust-web-sys-0.3+uieventinit-dev (= 0.3.28-1), librust-web-sys-0.3+url-dev (= 0.3.28-1), librust-web-sys-0.3+urlsearchparams-dev (= 0.3.28-1), librust-web-sys-0.3+userproximityevent-dev (= 0.3.28-1), librust-web-sys-0.3+userproximityeventinit-dev (= 0.3.28-1), librust-web-sys-0.3+userverificationrequirement-dev (= 0.3.28-1), librust-web-sys-0.3+validitystate-dev (= 0.3.28-1), librust-web-sys-0.3+videoconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3+videofacingmodeenum-dev (= 0.3.28-1), librust-web-sys-0.3+videoplaybackquality-dev (= 0.3.28-1), librust-web-sys-0.3+videostreamtrack-dev (= 0.3.28-1), librust-web-sys-0.3+videotrack-dev (= 0.3.28-1), librust-web-sys-0.3+videotracklist-dev (= 0.3.28-1), librust-web-sys-0.3+visibilitystate-dev (= 0.3.28-1), librust-web-sys-0.3+voidcallback-dev (= 0.3.28-1), librust-web-sys-0.3+vrdisplay-dev (= 0.3.28-1), librust-web-sys-0.3+vrdisplaycapabilities-dev (= 0.3.28-1), librust-web-sys-0.3+vreye-dev (= 0.3.28-1), librust-web-sys-0.3+vreyeparameters-dev (= 0.3.28-1), librust-web-sys-0.3+vrfieldofview-dev (= 0.3.28-1), librust-web-sys-0.3+vrframedata-dev (= 0.3.28-1), librust-web-sys-0.3+vrlayer-dev (= 0.3.28-1), librust-web-sys-0.3+vrmockcontroller-dev (= 0.3.28-1), librust-web-sys-0.3+vrmockdisplay-dev (= 0.3.28-1), librust-web-sys-0.3+vrpose-dev (= 0.3.28-1), librust-web-sys-0.3+vrservicetest-dev (= 0.3.28-1), librust-web-sys-0.3+vrstageparameters-dev (= 0.3.28-1), librust-web-sys-0.3+vrsubmitframeresult-dev (= 0.3.28-1), librust-web-sys-0.3+vttcue-dev (= 0.3.28-1), librust-web-sys-0.3+vttregion-dev (= 0.3.28-1), librust-web-sys-0.3+waveshapernode-dev (= 0.3.28-1), librust-web-sys-0.3+waveshaperoptions-dev (= 0.3.28-1), librust-web-sys-0.3+webgl2renderingcontext-dev (= 0.3.28-1), librust-web-sys-0.3+webglactiveinfo-dev (= 0.3.28-1), librust-web-sys-0.3+webglbuffer-dev (= 0.3.28-1), librust-web-sys-0.3+webglcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtextureastc-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtextureatc-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtextureetc-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtextureetc1-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtexturepvrtc-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtextures3tc-dev (= 0.3.28-1), librust-web-sys-0.3+webglcompressedtextures3tcsrgb-dev (= 0.3.28-1), librust-web-sys-0.3+webglcontextattributes-dev (= 0.3.28-1), librust-web-sys-0.3+webglcontextevent-dev (= 0.3.28-1), librust-web-sys-0.3+webglcontexteventinit-dev (= 0.3.28-1), librust-web-sys-0.3+webgldebugrendererinfo-dev (= 0.3.28-1), librust-web-sys-0.3+webgldebugshaders-dev (= 0.3.28-1), librust-web-sys-0.3+webgldepthtexture-dev (= 0.3.28-1), librust-web-sys-0.3+webgldrawbuffers-dev (= 0.3.28-1), librust-web-sys-0.3+webglframebuffer-dev (= 0.3.28-1), librust-web-sys-0.3+webgllosecontext-dev (= 0.3.28-1), librust-web-sys-0.3+webglpowerpreference-dev (= 0.3.28-1), librust-web-sys-0.3+webglprogram-dev (= 0.3.28-1), librust-web-sys-0.3+webglquery-dev (= 0.3.28-1), librust-web-sys-0.3+webglrenderbuffer-dev (= 0.3.28-1), librust-web-sys-0.3+webglrenderingcontext-dev (= 0.3.28-1), librust-web-sys-0.3+webglsampler-dev (= 0.3.28-1), librust-web-sys-0.3+webglshader-dev (= 0.3.28-1), librust-web-sys-0.3+webglshaderprecisionformat-dev (= 0.3.28-1), librust-web-sys-0.3+webglsync-dev (= 0.3.28-1), librust-web-sys-0.3+webgltexture-dev (= 0.3.28-1), librust-web-sys-0.3+webgltransformfeedback-dev (= 0.3.28-1), librust-web-sys-0.3+webgluniformlocation-dev (= 0.3.28-1), librust-web-sys-0.3+webglvertexarrayobject-dev (= 0.3.28-1), librust-web-sys-0.3+webgpu-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuadapter-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuadapterdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuattachmentstate-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuattachmentstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubindgroup-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubindgroupbinding-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubindgroupdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubindgrouplayout-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubindgrouplayoutdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubinding-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubindingtype-dev (= 0.3.28-1), librust-web-sys-0.3+webgpublenddescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpublendfactor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpublendoperation-dev (= 0.3.28-1), librust-web-sys-0.3+webgpublendstate-dev (= 0.3.28-1), librust-web-sys-0.3+webgpublendstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubuffer-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubufferbinding-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubufferdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpubufferusage-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucolorwritebits-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucommandbuffer-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucommandencoder-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucommandencoderdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucomparefunction-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucomputepipeline-dev (= 0.3.28-1), librust-web-sys-0.3+webgpucomputepipelinedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpudepthstencilstate-dev (= 0.3.28-1), librust-web-sys-0.3+webgpudepthstencilstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpudevice-dev (= 0.3.28-1), librust-web-sys-0.3+webgpudevicedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuextensions-dev (= 0.3.28-1), librust-web-sys-0.3+webgpufence-dev (= 0.3.28-1), librust-web-sys-0.3+webgpufiltermode-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuindexformat-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuinputstate-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuinputstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuinputstepmode-dev (= 0.3.28-1), librust-web-sys-0.3+webgpulimits-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuloadop-dev (= 0.3.28-1), librust-web-sys-0.3+webgpulogentry-dev (= 0.3.28-1), librust-web-sys-0.3+webgpulogentrytype-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuobjectstatus-dev (= 0.3.28-1), librust-web-sys-0.3+webgpupipelinedescriptorbase-dev (= 0.3.28-1), librust-web-sys-0.3+webgpupipelinelayout-dev (= 0.3.28-1), librust-web-sys-0.3+webgpupipelinelayoutdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpupipelinestagedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpupowerpreference-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuprimitivetopology-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuqueue-dev (= 0.3.28-1), librust-web-sys-0.3+webgpurenderpassattachmentdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpurenderpassdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpurenderpipeline-dev (= 0.3.28-1), librust-web-sys-0.3+webgpurenderpipelinedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpusampler-dev (= 0.3.28-1), librust-web-sys-0.3+webgpusamplerdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpushadermodule-dev (= 0.3.28-1), librust-web-sys-0.3+webgpushadermoduledescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpushaderstage-dev (= 0.3.28-1), librust-web-sys-0.3+webgpushaderstagebit-dev (= 0.3.28-1), librust-web-sys-0.3+webgpustenciloperation-dev (= 0.3.28-1), librust-web-sys-0.3+webgpustencilstatefacedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpustoreop-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuswapchain-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuswapchaindescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgputexture-dev (= 0.3.28-1), librust-web-sys-0.3+webgputexturedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgputexturedimension-dev (= 0.3.28-1), librust-web-sys-0.3+webgputextureformat-dev (= 0.3.28-1), librust-web-sys-0.3+webgputextureusage-dev (= 0.3.28-1), librust-web-sys-0.3+webgputextureview-dev (= 0.3.28-1), librust-web-sys-0.3+webgputextureviewdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuvertexattributedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuvertexformat-dev (= 0.3.28-1), librust-web-sys-0.3+webgpuvertexinputdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3+webkitcssmatrix-dev (= 0.3.28-1), librust-web-sys-0.3+webrtcglobalstatisticsreport-dev (= 0.3.28-1), librust-web-sys-0.3+websocket-dev (= 0.3.28-1), librust-web-sys-0.3+websocketdict-dev (= 0.3.28-1), librust-web-sys-0.3+websocketelement-dev (= 0.3.28-1), librust-web-sys-0.3+wheelevent-dev (= 0.3.28-1), librust-web-sys-0.3+wheeleventinit-dev (= 0.3.28-1), librust-web-sys-0.3+widevinecdmmanifest-dev (= 0.3.28-1), librust-web-sys-0.3+window-dev (= 0.3.28-1), librust-web-sys-0.3+windowclient-dev (= 0.3.28-1), librust-web-sys-0.3+worker-dev (= 0.3.28-1), librust-web-sys-0.3+workerdebuggerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+workerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+workerlocation-dev (= 0.3.28-1), librust-web-sys-0.3+workernavigator-dev (= 0.3.28-1), librust-web-sys-0.3+workeroptions-dev (= 0.3.28-1), librust-web-sys-0.3+worklet-dev (= 0.3.28-1), librust-web-sys-0.3+workletglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3+xmldocument-dev (= 0.3.28-1), librust-web-sys-0.3+xmlhttprequest-dev (= 0.3.28-1), librust-web-sys-0.3+xmlhttprequesteventtarget-dev (= 0.3.28-1), librust-web-sys-0.3+xmlhttprequestresponsetype-dev (= 0.3.28-1), librust-web-sys-0.3+xmlhttprequestupload-dev (= 0.3.28-1), librust-web-sys-0.3+xmlserializer-dev (= 0.3.28-1), librust-web-sys-0.3+xpathexpression-dev (= 0.3.28-1), librust-web-sys-0.3+xpathnsresolver-dev (= 0.3.28-1), librust-web-sys-0.3+xpathresult-dev (= 0.3.28-1), librust-web-sys-0.3+xsltprocessor-dev (= 0.3.28-1), librust-web-sys-0.3-dev (= 0.3.28-1), librust-web-sys-0.3.28+abortcontroller-dev (= 0.3.28-1), librust-web-sys-0.3.28+abortsignal-dev (= 0.3.28-1), librust-web-sys-0.3.28+addeventlisteneroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+aescbcparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+aesctrparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+aesderivedkeyparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+aesgcmparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+aeskeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3.28+aeskeygenparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+algorithm-dev (= 0.3.28-1), librust-web-sys-0.3.28+alignsetting-dev (= 0.3.28-1), librust-web-sys-0.3.28+analysernode-dev (= 0.3.28-1), librust-web-sys-0.3.28+analyseroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+angleinstancedarrays-dev (= 0.3.28-1), librust-web-sys-0.3.28+animation-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationeffect-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationplaybackevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationplaybackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationplaystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationpropertydetails-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationpropertyvaluedetails-dev (= 0.3.28-1), librust-web-sys-0.3.28+animationtimeline-dev (= 0.3.28-1), librust-web-sys-0.3.28+assignednodesoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+attestationconveyancepreference-dev (= 0.3.28-1), librust-web-sys-0.3.28+attr-dev (= 0.3.28-1), librust-web-sys-0.3.28+attributenamevalue-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiobuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiobufferoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiobuffersourcenode-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiobuffersourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiocontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiocontextoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiocontextstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiodestinationnode-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiolistener-dev (= 0.3.28-1), librust-web-sys-0.3.28+audionode-dev (= 0.3.28-1), librust-web-sys-0.3.28+audionodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioparam-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioparammap-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioprocessingevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioscheduledsourcenode-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiostreamtrack-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiotrack-dev (= 0.3.28-1), librust-web-sys-0.3.28+audiotracklist-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioworklet-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioworkletglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioworkletnode-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioworkletnodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+audioworkletprocessor-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticationextensionsclientinputs-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticationextensionsclientoutputs-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticatorassertionresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticatorattachment-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticatorattestationresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticatorresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticatorselectioncriteria-dev (= 0.3.28-1), librust-web-sys-0.3.28+authenticatortransport-dev (= 0.3.28-1), librust-web-sys-0.3.28+autocompleteinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+autokeyword-dev (= 0.3.28-1), librust-web-sys-0.3.28+barprop-dev (= 0.3.28-1), librust-web-sys-0.3.28+baseaudiocontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+basecomputedkeyframe-dev (= 0.3.28-1), librust-web-sys-0.3.28+basekeyframe-dev (= 0.3.28-1), librust-web-sys-0.3.28+basepropertyindexedkeyframe-dev (= 0.3.28-1), librust-web-sys-0.3.28+basiccardrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+basiccardresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+basiccardtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+batterymanager-dev (= 0.3.28-1), librust-web-sys-0.3.28+beforeunloadevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+binarytype-dev (= 0.3.28-1), librust-web-sys-0.3.28+biquadfilternode-dev (= 0.3.28-1), librust-web-sys-0.3.28+biquadfilteroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+biquadfiltertype-dev (= 0.3.28-1), librust-web-sys-0.3.28+blob-dev (= 0.3.28-1), librust-web-sys-0.3.28+blobevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+blobeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+blobpropertybag-dev (= 0.3.28-1), librust-web-sys-0.3.28+blockparsingoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+boxquadoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+broadcastchannel-dev (= 0.3.28-1), librust-web-sys-0.3.28+browserelementdownloadoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+browserelementexecutescriptoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+browserfeedwriter-dev (= 0.3.28-1), librust-web-sys-0.3.28+browserfindcasesensitivity-dev (= 0.3.28-1), librust-web-sys-0.3.28+browserfinddirection-dev (= 0.3.28-1), librust-web-sys-0.3.28+cache-dev (= 0.3.28-1), librust-web-sys-0.3.28+cachebatchoperation-dev (= 0.3.28-1), librust-web-sys-0.3.28+cachequeryoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+cachestorage-dev (= 0.3.28-1), librust-web-sys-0.3.28+cachestoragenamespace-dev (= 0.3.28-1), librust-web-sys-0.3.28+canvascapturemediastream-dev (= 0.3.28-1), librust-web-sys-0.3.28+canvasgradient-dev (= 0.3.28-1), librust-web-sys-0.3.28+canvaspattern-dev (= 0.3.28-1), librust-web-sys-0.3.28+canvasrenderingcontext2d-dev (= 0.3.28-1), librust-web-sys-0.3.28+canvaswindingrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+caretchangedreason-dev (= 0.3.28-1), librust-web-sys-0.3.28+caretposition-dev (= 0.3.28-1), librust-web-sys-0.3.28+caretstatechangedeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+cdatasection-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelcountmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelinterpretation-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelmergernode-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelmergeroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelpixellayout-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelpixellayoutdatatype-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelsplitternode-dev (= 0.3.28-1), librust-web-sys-0.3.28+channelsplitteroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+characterdata-dev (= 0.3.28-1), librust-web-sys-0.3.28+checkerboardreason-dev (= 0.3.28-1), librust-web-sys-0.3.28+checkerboardreport-dev (= 0.3.28-1), librust-web-sys-0.3.28+checkerboardreportservice-dev (= 0.3.28-1), librust-web-sys-0.3.28+chromefilepropertybag-dev (= 0.3.28-1), librust-web-sys-0.3.28+chromeworker-dev (= 0.3.28-1), librust-web-sys-0.3.28+client-dev (= 0.3.28-1), librust-web-sys-0.3.28+clientqueryoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+clientrectsandtexts-dev (= 0.3.28-1), librust-web-sys-0.3.28+clients-dev (= 0.3.28-1), librust-web-sys-0.3.28+clienttype-dev (= 0.3.28-1), librust-web-sys-0.3.28+clipboardevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+clipboardeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+closeevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+closeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+collectedclientdata-dev (= 0.3.28-1), librust-web-sys-0.3.28+comment-dev (= 0.3.28-1), librust-web-sys-0.3.28+compositeoperation-dev (= 0.3.28-1), librust-web-sys-0.3.28+compositionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+compositioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+computedeffecttiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+connectiontype-dev (= 0.3.28-1), librust-web-sys-0.3.28+connstatusdict-dev (= 0.3.28-1), librust-web-sys-0.3.28+console-dev (= 0.3.28-1), librust-web-sys-0.3.28+consolecounter-dev (= 0.3.28-1), librust-web-sys-0.3.28+consolecountererror-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoleevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoleinstance-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoleinstanceoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+consolelevel-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoleloglevel-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoleprofileevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+consolestackentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoletimererror-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoletimerlogorend-dev (= 0.3.28-1), librust-web-sys-0.3.28+consoletimerstart-dev (= 0.3.28-1), librust-web-sys-0.3.28+constantsourcenode-dev (= 0.3.28-1), librust-web-sys-0.3.28+constantsourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+constrainbooleanparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+constraindomstringparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+constraindoublerange-dev (= 0.3.28-1), librust-web-sys-0.3.28+constrainlongrange-dev (= 0.3.28-1), librust-web-sys-0.3.28+contextattributes2d-dev (= 0.3.28-1), librust-web-sys-0.3.28+convertcoordinateoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+convolvernode-dev (= 0.3.28-1), librust-web-sys-0.3.28+convolveroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+coordinates-dev (= 0.3.28-1), librust-web-sys-0.3.28+credential-dev (= 0.3.28-1), librust-web-sys-0.3.28+credentialcreationoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+credentialrequestoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+credentialscontainer-dev (= 0.3.28-1), librust-web-sys-0.3.28+crypto-dev (= 0.3.28-1), librust-web-sys-0.3.28+cryptokey-dev (= 0.3.28-1), librust-web-sys-0.3.28+cryptokeypair-dev (= 0.3.28-1), librust-web-sys-0.3.28+csp-dev (= 0.3.28-1), librust-web-sys-0.3.28+csppolicies-dev (= 0.3.28-1), librust-web-sys-0.3.28+cspreport-dev (= 0.3.28-1), librust-web-sys-0.3.28+cspreportproperties-dev (= 0.3.28-1), librust-web-sys-0.3.28+css-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssanimation-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssboxtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssconditionrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+csscounterstylerule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssfontfacerule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssfontfeaturevaluesrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssgroupingrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssimportrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+csskeyframerule-dev (= 0.3.28-1), librust-web-sys-0.3.28+csskeyframesrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssmediarule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssnamespacerule-dev (= 0.3.28-1), librust-web-sys-0.3.28+csspagerule-dev (= 0.3.28-1), librust-web-sys-0.3.28+csspseudoelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssrulelist-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssstyledeclaration-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssstylerule-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssstylesheet-dev (= 0.3.28-1), librust-web-sys-0.3.28+cssstylesheetparsingmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+csssupportsrule-dev (= 0.3.28-1), librust-web-sys-0.3.28+csstransition-dev (= 0.3.28-1), librust-web-sys-0.3.28+customelementregistry-dev (= 0.3.28-1), librust-web-sys-0.3.28+customevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+customeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+datatransfer-dev (= 0.3.28-1), librust-web-sys-0.3.28+datatransferitem-dev (= 0.3.28-1), librust-web-sys-0.3.28+datatransferitemlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+datetimevalue-dev (= 0.3.28-1), librust-web-sys-0.3.28+decoderdoctornotification-dev (= 0.3.28-1), librust-web-sys-0.3.28+decoderdoctornotificationtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+dedicatedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+default-dev (= 0.3.28-1), librust-web-sys-0.3.28+delaynode-dev (= 0.3.28-1), librust-web-sys-0.3.28+delayoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+deviceacceleration-dev (= 0.3.28-1), librust-web-sys-0.3.28+deviceaccelerationinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+devicelightevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+devicelighteventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+devicemotionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+devicemotioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+deviceorientationevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+deviceorientationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+deviceproximityevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+deviceproximityeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+devicerotationrate-dev (= 0.3.28-1), librust-web-sys-0.3.28+devicerotationrateinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+dhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+directionsetting-dev (= 0.3.28-1), librust-web-sys-0.3.28+directory-dev (= 0.3.28-1), librust-web-sys-0.3.28+displaynameoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+displaynameresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+distancemodeltype-dev (= 0.3.28-1), librust-web-sys-0.3.28+dnscachedict-dev (= 0.3.28-1), librust-web-sys-0.3.28+dnscacheentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+dnslookupdict-dev (= 0.3.28-1), librust-web-sys-0.3.28+document-dev (= 0.3.28-1), librust-web-sys-0.3.28+documentfragment-dev (= 0.3.28-1), librust-web-sys-0.3.28+documenttimeline-dev (= 0.3.28-1), librust-web-sys-0.3.28+documenttimelineoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+documenttype-dev (= 0.3.28-1), librust-web-sys-0.3.28+domerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+domexception-dev (= 0.3.28-1), librust-web-sys-0.3.28+domimplementation-dev (= 0.3.28-1), librust-web-sys-0.3.28+dommatrix-dev (= 0.3.28-1), librust-web-sys-0.3.28+dommatrixreadonly-dev (= 0.3.28-1), librust-web-sys-0.3.28+domparser-dev (= 0.3.28-1), librust-web-sys-0.3.28+dompoint-dev (= 0.3.28-1), librust-web-sys-0.3.28+dompointinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+dompointreadonly-dev (= 0.3.28-1), librust-web-sys-0.3.28+domquad-dev (= 0.3.28-1), librust-web-sys-0.3.28+domquadinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+domquadjson-dev (= 0.3.28-1), librust-web-sys-0.3.28+domrect-dev (= 0.3.28-1), librust-web-sys-0.3.28+domrectinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+domrectlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+domrectreadonly-dev (= 0.3.28-1), librust-web-sys-0.3.28+domrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+domrequestreadystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+domstringlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+domstringmap-dev (= 0.3.28-1), librust-web-sys-0.3.28+domtokenlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+domwindowresizeeventdetail-dev (= 0.3.28-1), librust-web-sys-0.3.28+dragevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+drageventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+dynamicscompressornode-dev (= 0.3.28-1), librust-web-sys-0.3.28+dynamicscompressoroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+ecdhkeyderiveparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+ecdsaparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+eckeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3.28+eckeygenparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+eckeyimportparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+effecttiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+element-dev (= 0.3.28-1), librust-web-sys-0.3.28+elementcreationoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+elementdefinitionoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+endingtypes-dev (= 0.3.28-1), librust-web-sys-0.3.28+errorcallback-dev (= 0.3.28-1), librust-web-sys-0.3.28+errorevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+erroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+event-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventlistener-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventlisteneroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventmodifierinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventsource-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventsourceinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+eventtarget-dev (= 0.3.28-1), librust-web-sys-0.3.28+exception-dev (= 0.3.28-1), librust-web-sys-0.3.28+extblendminmax-dev (= 0.3.28-1), librust-web-sys-0.3.28+extcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys-0.3.28+extcolorbufferhalffloat-dev (= 0.3.28-1), librust-web-sys-0.3.28+extdisjointtimerquery-dev (= 0.3.28-1), librust-web-sys-0.3.28+extendableevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+extendableeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+extendablemessageevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+extendablemessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+external-dev (= 0.3.28-1), librust-web-sys-0.3.28+extfragdepth-dev (= 0.3.28-1), librust-web-sys-0.3.28+extshadertexturelod-dev (= 0.3.28-1), librust-web-sys-0.3.28+extsrgb-dev (= 0.3.28-1), librust-web-sys-0.3.28+exttexturefilteranisotropic-dev (= 0.3.28-1), librust-web-sys-0.3.28+fakepluginmimeentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+fakeplugintaginit-dev (= 0.3.28-1), librust-web-sys-0.3.28+fetchevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+fetcheventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+fetchobserver-dev (= 0.3.28-1), librust-web-sys-0.3.28+fetchreadablestreamreaddataarray-dev (= 0.3.28-1), librust-web-sys-0.3.28+fetchreadablestreamreaddatadone-dev (= 0.3.28-1), librust-web-sys-0.3.28+fetchstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+file-dev (= 0.3.28-1), librust-web-sys-0.3.28+filecallback-dev (= 0.3.28-1), librust-web-sys-0.3.28+filelist-dev (= 0.3.28-1), librust-web-sys-0.3.28+filepropertybag-dev (= 0.3.28-1), librust-web-sys-0.3.28+filereader-dev (= 0.3.28-1), librust-web-sys-0.3.28+filereadersync-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystem-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystemdirectoryentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystemdirectoryreader-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystementriescallback-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystementry-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystementrycallback-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystemfileentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+filesystemflags-dev (= 0.3.28-1), librust-web-sys-0.3.28+fillmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+flashclassification-dev (= 0.3.28-1), librust-web-sys-0.3.28+flexlinegrowthstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+focusevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+focuseventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontface-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfacedescriptors-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfaceloadstatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfaceset-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfacesetiterator-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfacesetiteratorresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfacesetloadevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfacesetloadeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+fontfacesetloadstatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+formdata-dev (= 0.3.28-1), librust-web-sys-0.3.28+frametype-dev (= 0.3.28-1), librust-web-sys-0.3.28+fuzzingfunctions-dev (= 0.3.28-1), librust-web-sys-0.3.28+gainnode-dev (= 0.3.28-1), librust-web-sys-0.3.28+gainoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepad-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadaxismoveevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadaxismoveeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadbutton-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadbuttonevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadbuttoneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadhand-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadhapticactuator-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadhapticactuatortype-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadmappingtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadpose-dev (= 0.3.28-1), librust-web-sys-0.3.28+gamepadservicetest-dev (= 0.3.28-1), librust-web-sys-0.3.28+geolocation-dev (= 0.3.28-1), librust-web-sys-0.3.28+getnotificationoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+getrootnodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+getusermediarequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+griddeclaration-dev (= 0.3.28-1), librust-web-sys-0.3.28+gridtrackstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+groupedhistoryeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+halfopeninfodict-dev (= 0.3.28-1), librust-web-sys-0.3.28+hashchangeevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+hashchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+headers-dev (= 0.3.28-1), librust-web-sys-0.3.28+headersguardenum-dev (= 0.3.28-1), librust-web-sys-0.3.28+hiddenplugineventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+history-dev (= 0.3.28-1), librust-web-sys-0.3.28+hitregionoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+hkdfparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+hmacderivedkeyparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+hmacimportparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+hmackeyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3.28+hmackeygenparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlallcollection-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlanchorelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlareaelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlaudioelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlbaseelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlbodyelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlbrelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlbuttonelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlcanvaselement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlcollection-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldataelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldatalistelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldetailselement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldialogelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldirectoryelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldivelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldlistelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmldocument-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlembedelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlfieldsetelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlfontelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlformcontrolscollection-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlformelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlframeelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlframesetelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlheadelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlheadingelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlhrelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlhtmlelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlhyperlinkelementutils-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmliframeelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlimageelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlinputelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmllabelelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmllegendelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmllielement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmllinkelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmapelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmediaelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmenuelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmenuitemelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmetaelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmeterelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlmodelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlobjectelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlolistelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmloptgroupelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmloptionelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmloptionscollection-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmloutputelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlparagraphelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlparamelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlpictureelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlpreelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlprogresselement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlquoteelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlscriptelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlselectelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlslotelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlsourceelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlspanelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlstyleelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltablecaptionelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltablecellelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltablecolelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltableelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltablerowelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltablesectionelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltemplateelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltextareaelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltimeelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltitleelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmltrackelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlulistelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlunknownelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+htmlvideoelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+httpconndict-dev (= 0.3.28-1), librust-web-sys-0.3.28+httpconnectionelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+httpconninfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbcursor-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbcursordirection-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbcursorwithvalue-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbdatabase-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbfactory-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbfilehandle-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbfilemetadataparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbfilerequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbindex-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbindexparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbkeyrange-dev (= 0.3.28-1), librust-web-sys-0.3.28+idblocaleawarekeyrange-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbmutablefile-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbobjectstore-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbobjectstoreparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbopendboptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbopendbrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbrequestreadystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbtransaction-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbtransactionmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbversionchangeevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+idbversionchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+idledeadline-dev (= 0.3.28-1), librust-web-sys-0.3.28+idlerequestoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+iirfilternode-dev (= 0.3.28-1), librust-web-sys-0.3.28+iirfilteroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagebitmap-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagebitmapformat-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagebitmaprenderingcontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagecapture-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagecaptureerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagecaptureerrorevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagecaptureerroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+imagedata-dev (= 0.3.28-1), librust-web-sys-0.3.28+inputevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+inputeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+installtriggerdata-dev (= 0.3.28-1), librust-web-sys-0.3.28+intersectionobserver-dev (= 0.3.28-1), librust-web-sys-0.3.28+intersectionobserverentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+intersectionobserverentryinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+intersectionobserverinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+intlutils-dev (= 0.3.28-1), librust-web-sys-0.3.28+iterablekeyandvalueresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+iterablekeyorvalueresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+iterationcompositeoperation-dev (= 0.3.28-1), librust-web-sys-0.3.28+jsonwebkey-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyalgorithm-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyboardevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyboardeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyframeeffect-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyframeeffectoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+keyidsinitdata-dev (= 0.3.28-1), librust-web-sys-0.3.28+l10nelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+l10nvalue-dev (= 0.3.28-1), librust-web-sys-0.3.28+lifecyclecallbacks-dev (= 0.3.28-1), librust-web-sys-0.3.28+linealignsetting-dev (= 0.3.28-1), librust-web-sys-0.3.28+listboxobject-dev (= 0.3.28-1), librust-web-sys-0.3.28+localeinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+localmediastream-dev (= 0.3.28-1), librust-web-sys-0.3.28+location-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediacapabilities-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediacapabilitiesinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediadecodingconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediadecodingtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediadeviceinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediadevicekind-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediadevices-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaelementaudiosourcenode-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaelementaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaencodingconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaencodingtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaencryptedevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeyerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeymessageevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeymessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeymessagetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeyneededeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeys-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysession-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysessiontype-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeyspolicy-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysrequirement-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeystatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeystatusmap-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysystemaccess-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysystemconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysystemmediacapability-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediakeysystemstatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+medialist-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaquerylist-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaquerylistevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediaquerylisteventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediarecorder-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediarecordererrorevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediarecordererroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediarecorderoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediasource-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediasourceendofstreamerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediasourceenum-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediasourcereadystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastream-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamaudiodestinationnode-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamaudiosourcenode-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamaudiosourceoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamconstraints-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreameventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamtrack-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamtrackevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamtrackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediastreamtrackstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediatrackconstraints-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediatrackconstraintset-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediatracksettings-dev (= 0.3.28-1), librust-web-sys-0.3.28+mediatracksupportedconstraints-dev (= 0.3.28-1), librust-web-sys-0.3.28+messagechannel-dev (= 0.3.28-1), librust-web-sys-0.3.28+messageevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+messageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+messageport-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiaccess-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiconnectionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiconnectioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiinput-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiinputmap-dev (= 0.3.28-1), librust-web-sys-0.3.28+midimessageevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+midimessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+midioptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+midioutput-dev (= 0.3.28-1), librust-web-sys-0.3.28+midioutputmap-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiport-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiportconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiportdevicestate-dev (= 0.3.28-1), librust-web-sys-0.3.28+midiporttype-dev (= 0.3.28-1), librust-web-sys-0.3.28+mimetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+mimetypearray-dev (= 0.3.28-1), librust-web-sys-0.3.28+mouseevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mouseeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mousescrollevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mozdebug-dev (= 0.3.28-1), librust-web-sys-0.3.28+mutationevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+mutationobserver-dev (= 0.3.28-1), librust-web-sys-0.3.28+mutationobserverinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+mutationobservinginfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+mutationrecord-dev (= 0.3.28-1), librust-web-sys-0.3.28+namednodemap-dev (= 0.3.28-1), librust-web-sys-0.3.28+nativeosfilereadoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+nativeosfilewriteatomicoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+navigationtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+navigator-dev (= 0.3.28-1), librust-web-sys-0.3.28+navigatorautomationinformation-dev (= 0.3.28-1), librust-web-sys-0.3.28+networkcommandoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+networkinformation-dev (= 0.3.28-1), librust-web-sys-0.3.28+networkresultoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+node-dev (= 0.3.28-1), librust-web-sys-0.3.28+nodefilter-dev (= 0.3.28-1), librust-web-sys-0.3.28+nodeiterator-dev (= 0.3.28-1), librust-web-sys-0.3.28+nodelist-dev (= 0.3.28-1), librust-web-sys-0.3.28+notification-dev (= 0.3.28-1), librust-web-sys-0.3.28+notificationbehavior-dev (= 0.3.28-1), librust-web-sys-0.3.28+notificationdirection-dev (= 0.3.28-1), librust-web-sys-0.3.28+notificationevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+notificationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+notificationoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+notificationpermission-dev (= 0.3.28-1), librust-web-sys-0.3.28+observercallback-dev (= 0.3.28-1), librust-web-sys-0.3.28+oeselementindexuint-dev (= 0.3.28-1), librust-web-sys-0.3.28+oesstandardderivatives-dev (= 0.3.28-1), librust-web-sys-0.3.28+oestexturefloat-dev (= 0.3.28-1), librust-web-sys-0.3.28+oestexturefloatlinear-dev (= 0.3.28-1), librust-web-sys-0.3.28+oestexturehalffloat-dev (= 0.3.28-1), librust-web-sys-0.3.28+oestexturehalffloatlinear-dev (= 0.3.28-1), librust-web-sys-0.3.28+oesvertexarrayobject-dev (= 0.3.28-1), librust-web-sys-0.3.28+offlineaudiocompletionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+offlineaudiocompletioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+offlineaudiocontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+offlineaudiocontextoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+offlineresourcelist-dev (= 0.3.28-1), librust-web-sys-0.3.28+offscreencanvas-dev (= 0.3.28-1), librust-web-sys-0.3.28+openwindoweventdetail-dev (= 0.3.28-1), librust-web-sys-0.3.28+optionaleffecttiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+orientationlocktype-dev (= 0.3.28-1), librust-web-sys-0.3.28+orientationtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+oscillatornode-dev (= 0.3.28-1), librust-web-sys-0.3.28+oscillatoroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+oscillatortype-dev (= 0.3.28-1), librust-web-sys-0.3.28+oversampletype-dev (= 0.3.28-1), librust-web-sys-0.3.28+pagetransitionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+pagetransitioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+paintrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+paintrequestlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+paintworkletglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+pannernode-dev (= 0.3.28-1), librust-web-sys-0.3.28+panneroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+panningmodeltype-dev (= 0.3.28-1), librust-web-sys-0.3.28+path2d-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentaddress-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentcomplete-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentmethodchangeevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentmethodchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentrequestupdateevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentrequestupdateeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+paymentresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+pbkdf2params-dev (= 0.3.28-1), librust-web-sys-0.3.28+pcimpliceconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+pcimplicegatheringstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+pcimplsignalingstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+pcobserverstatetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+performance-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceentryeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceentryfilteroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+performancemark-dev (= 0.3.28-1), librust-web-sys-0.3.28+performancemeasure-dev (= 0.3.28-1), librust-web-sys-0.3.28+performancenavigation-dev (= 0.3.28-1), librust-web-sys-0.3.28+performancenavigationtiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceobserver-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceobserverentrylist-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceobserverinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceresourcetiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+performanceservertiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+performancetiming-dev (= 0.3.28-1), librust-web-sys-0.3.28+periodicwave-dev (= 0.3.28-1), librust-web-sys-0.3.28+periodicwaveconstraints-dev (= 0.3.28-1), librust-web-sys-0.3.28+periodicwaveoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+permissiondescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+permissionname-dev (= 0.3.28-1), librust-web-sys-0.3.28+permissions-dev (= 0.3.28-1), librust-web-sys-0.3.28+permissionstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+permissionstatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+playbackdirection-dev (= 0.3.28-1), librust-web-sys-0.3.28+plugin-dev (= 0.3.28-1), librust-web-sys-0.3.28+pluginarray-dev (= 0.3.28-1), librust-web-sys-0.3.28+plugincrashedeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+pointerevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+pointereventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+popstateevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+popstateeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+popupblockedevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+popupblockedeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+position-dev (= 0.3.28-1), librust-web-sys-0.3.28+positionalignsetting-dev (= 0.3.28-1), librust-web-sys-0.3.28+positionerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+positionoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentation-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationavailability-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnection-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectionavailableevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectionavailableeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectionbinarytype-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectionclosedreason-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectioncloseevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectioncloseeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectionlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationreceiver-dev (= 0.3.28-1), librust-web-sys-0.3.28+presentationrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+processinginstruction-dev (= 0.3.28-1), librust-web-sys-0.3.28+profiletimelinelayerrect-dev (= 0.3.28-1), librust-web-sys-0.3.28+profiletimelinemarker-dev (= 0.3.28-1), librust-web-sys-0.3.28+profiletimelinemessageportoperationtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+profiletimelinestackframe-dev (= 0.3.28-1), librust-web-sys-0.3.28+profiletimelineworkeroperationtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+progressevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+progresseventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+promisenativehandler-dev (= 0.3.28-1), librust-web-sys-0.3.28+promiserejectionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+promiserejectioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredential-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialcreationoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialentity-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialrequestoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialrpentity-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+publickeycredentialuserentity-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushencryptionkeyname-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+pusheventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushmanager-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushmessagedata-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushpermissionstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushsubscription-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushsubscriptioninit-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushsubscriptionjson-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushsubscriptionkeys-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushsubscriptionoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+pushsubscriptionoptionsinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+radionodelist-dev (= 0.3.28-1), librust-web-sys-0.3.28+range-dev (= 0.3.28-1), librust-web-sys-0.3.28+rcwnperfstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rcwnstatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+readablestream-dev (= 0.3.28-1), librust-web-sys-0.3.28+recordingstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+referrerpolicy-dev (= 0.3.28-1), librust-web-sys-0.3.28+registeredkey-dev (= 0.3.28-1), librust-web-sys-0.3.28+registerrequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+registerresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+registrationoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+request-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestcache-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestcredentials-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestdestination-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestmediakeysystemaccessnotification-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+requestredirect-dev (= 0.3.28-1), librust-web-sys-0.3.28+response-dev (= 0.3.28-1), librust-web-sys-0.3.28+responseinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+responsetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rsahashedimportparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+rsaoaepparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+rsaotherprimesinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+rsapssparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcansweroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcbundlepolicy-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtccertificate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtccertificateexpiration-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtccodecstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdatachannel-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdatachannelevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdatachanneleventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdatachannelinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdatachannelstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdatachanneltype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdegradationpreference-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdtmfsender-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdtmftonechangeevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcdtmftonechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcfecparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicecandidate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicecandidateinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicecandidatepairstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicecandidatestats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicecomponentstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtciceconnectionstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicecredentialtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicegatheringstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtciceserver-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcicetransportpolicy-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityassertion-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityassertionresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityprovider-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityproviderdetails-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityprovideroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityproviderregistrar-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcidentityvalidationresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcinboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtclifecycleevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcmediastreamstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcmediastreamtrackstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcofferansweroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcofferoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcoutboundrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcpeerconnection-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcpeerconnectioniceevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcpeerconnectioniceeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcprioritytype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtcpparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpcodecparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpcontributingsource-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpcontributingsourcestats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpencodingparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpheaderextensionparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpreceiver-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpsender-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpsourceentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpsourceentrytype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpstreamstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtpsynchronizationsource-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtptransceiver-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtptransceiverdirection-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtptransceiverinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcrtxparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcsdptype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcsessiondescription-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcsessiondescriptioninit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcsignalingstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcstatsicecandidatepairstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcstatsicecandidatetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcstatsreport-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcstatsreportinternal-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtcstatstype-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtctrackevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtctrackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+rtctransportstats-dev (= 0.3.28-1), librust-web-sys-0.3.28+screen-dev (= 0.3.28-1), librust-web-sys-0.3.28+screencolorgamut-dev (= 0.3.28-1), librust-web-sys-0.3.28+screenluminance-dev (= 0.3.28-1), librust-web-sys-0.3.28+screenorientation-dev (= 0.3.28-1), librust-web-sys-0.3.28+scriptprocessornode-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollareaevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollbehavior-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollboxobject-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollintoviewoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrolllogicalposition-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrolloptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollrestoration-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollsetting-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrolltooptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+scrollviewchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+securitypolicyviolationevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+securitypolicyviolationeventdisposition-dev (= 0.3.28-1), librust-web-sys-0.3.28+securitypolicyviolationeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+selection-dev (= 0.3.28-1), librust-web-sys-0.3.28+serversocketoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+serviceworker-dev (= 0.3.28-1), librust-web-sys-0.3.28+serviceworkercontainer-dev (= 0.3.28-1), librust-web-sys-0.3.28+serviceworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+serviceworkerregistration-dev (= 0.3.28-1), librust-web-sys-0.3.28+serviceworkerstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+serviceworkerupdateviacache-dev (= 0.3.28-1), librust-web-sys-0.3.28+shadowroot-dev (= 0.3.28-1), librust-web-sys-0.3.28+shadowrootinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+shadowrootmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+sharedworker-dev (= 0.3.28-1), librust-web-sys-0.3.28+sharedworkerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+signresponse-dev (= 0.3.28-1), librust-web-sys-0.3.28+socketelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+socketoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+socketreadystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+socketsdict-dev (= 0.3.28-1), librust-web-sys-0.3.28+sourcebuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+sourcebufferappendmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+sourcebufferlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechgrammar-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechgrammarlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognition-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionalternative-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionerror-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionerrorcode-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionerrorinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechrecognitionresultlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesis-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesiserrorcode-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesiserrorevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesiserroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesisevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesiseventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesisutterance-dev (= 0.3.28-1), librust-web-sys-0.3.28+speechsynthesisvoice-dev (= 0.3.28-1), librust-web-sys-0.3.28+stereopannernode-dev (= 0.3.28-1), librust-web-sys-0.3.28+stereopanneroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+storage-dev (= 0.3.28-1), librust-web-sys-0.3.28+storageestimate-dev (= 0.3.28-1), librust-web-sys-0.3.28+storageevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+storageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+storagemanager-dev (= 0.3.28-1), librust-web-sys-0.3.28+storagetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+stylerulechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+stylesheet-dev (= 0.3.28-1), librust-web-sys-0.3.28+stylesheetapplicablestatechangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+stylesheetchangeeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+stylesheetlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+subtlecrypto-dev (= 0.3.28-1), librust-web-sys-0.3.28+supportedtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgaelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgangle-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedangle-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedboolean-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedenumeration-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedinteger-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedlength-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedlengthlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatednumber-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatednumberlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedrect-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedstring-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatedtransformlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimateelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatemotionelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimatetransformelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svganimationelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgboundingboxoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgcircleelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgclippathelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgcomponenttransferfunctionelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgdefselement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgdescelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgellipseelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfeblendelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfecolormatrixelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfecomponenttransferelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfecompositeelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfeconvolvematrixelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfediffuselightingelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfedisplacementmapelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfedistantlightelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfedropshadowelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfefloodelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfefuncaelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfefuncbelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfefuncgelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfefuncrelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfegaussianblurelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfeimageelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfemergeelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfemergenodeelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfemorphologyelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfeoffsetelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfepointlightelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfespecularlightingelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfespotlightelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfetileelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfeturbulenceelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgfilterelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgforeignobjectelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svggelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svggeometryelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svggradientelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svggraphicselement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgimageelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svglength-dev (= 0.3.28-1), librust-web-sys-0.3.28+svglengthlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svglineargradientelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svglineelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgmarkerelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgmaskelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgmatrix-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgmetadataelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgmpathelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgnumber-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgnumberlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseg-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegarcabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegarcrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegclosepath-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetocubicabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetocubicrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetocubicsmoothabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetocubicsmoothrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetoquadraticabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetoquadraticrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetoquadraticsmoothabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegcurvetoquadraticsmoothrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglinetoabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglinetohorizontalabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglinetohorizontalrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglinetorel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglinetoverticalabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglinetoverticalrel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathseglist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegmovetoabs-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpathsegmovetorel-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpatternelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpoint-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpointlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpolygonelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpolylineelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgpreserveaspectratio-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgradialgradientelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgrect-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgrectelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgscriptelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgsetelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgstopelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgstringlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgstyleelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgsvgelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgswitchelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgsymbolelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtextcontentelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtextelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtextpathelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtextpositioningelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtitleelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtransform-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtransformlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgtspanelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgunittypes-dev (= 0.3.28-1), librust-web-sys-0.3.28+svguseelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgviewelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+svgzoomandpan-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpreadystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpserversocket-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpserversocketevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpserversocketeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpsocket-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpsocketbinarytype-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpsocketerrorevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpsocketerroreventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpsocketevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+tcpsocketeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+text-dev (= 0.3.28-1), librust-web-sys-0.3.28+textdecodeoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+textdecoder-dev (= 0.3.28-1), librust-web-sys-0.3.28+textdecoderoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+textencoder-dev (= 0.3.28-1), librust-web-sys-0.3.28+textmetrics-dev (= 0.3.28-1), librust-web-sys-0.3.28+texttrack-dev (= 0.3.28-1), librust-web-sys-0.3.28+texttrackcue-dev (= 0.3.28-1), librust-web-sys-0.3.28+texttrackcuelist-dev (= 0.3.28-1), librust-web-sys-0.3.28+texttrackkind-dev (= 0.3.28-1), librust-web-sys-0.3.28+texttracklist-dev (= 0.3.28-1), librust-web-sys-0.3.28+texttrackmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+timeevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+timeranges-dev (= 0.3.28-1), librust-web-sys-0.3.28+touch-dev (= 0.3.28-1), librust-web-sys-0.3.28+touchevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+toucheventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+touchinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+touchlist-dev (= 0.3.28-1), librust-web-sys-0.3.28+trackevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+trackeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+transitionevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+transitioneventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+transport-dev (= 0.3.28-1), librust-web-sys-0.3.28+treeboxobject-dev (= 0.3.28-1), librust-web-sys-0.3.28+treecellinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+treeview-dev (= 0.3.28-1), librust-web-sys-0.3.28+treewalker-dev (= 0.3.28-1), librust-web-sys-0.3.28+u2f-dev (= 0.3.28-1), librust-web-sys-0.3.28+u2fclientdata-dev (= 0.3.28-1), librust-web-sys-0.3.28+udpmessageeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+udpoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+uievent-dev (= 0.3.28-1), librust-web-sys-0.3.28+uieventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+url-dev (= 0.3.28-1), librust-web-sys-0.3.28+urlsearchparams-dev (= 0.3.28-1), librust-web-sys-0.3.28+userproximityevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+userproximityeventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+userverificationrequirement-dev (= 0.3.28-1), librust-web-sys-0.3.28+validitystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+videoconfiguration-dev (= 0.3.28-1), librust-web-sys-0.3.28+videofacingmodeenum-dev (= 0.3.28-1), librust-web-sys-0.3.28+videoplaybackquality-dev (= 0.3.28-1), librust-web-sys-0.3.28+videostreamtrack-dev (= 0.3.28-1), librust-web-sys-0.3.28+videotrack-dev (= 0.3.28-1), librust-web-sys-0.3.28+videotracklist-dev (= 0.3.28-1), librust-web-sys-0.3.28+visibilitystate-dev (= 0.3.28-1), librust-web-sys-0.3.28+voidcallback-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrdisplay-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrdisplaycapabilities-dev (= 0.3.28-1), librust-web-sys-0.3.28+vreye-dev (= 0.3.28-1), librust-web-sys-0.3.28+vreyeparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrfieldofview-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrframedata-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrlayer-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrmockcontroller-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrmockdisplay-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrpose-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrservicetest-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrstageparameters-dev (= 0.3.28-1), librust-web-sys-0.3.28+vrsubmitframeresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+vttcue-dev (= 0.3.28-1), librust-web-sys-0.3.28+vttregion-dev (= 0.3.28-1), librust-web-sys-0.3.28+waveshapernode-dev (= 0.3.28-1), librust-web-sys-0.3.28+waveshaperoptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgl2renderingcontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglactiveinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglbuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcolorbufferfloat-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtextureastc-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtextureatc-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtextureetc-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtextureetc1-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtexturepvrtc-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtextures3tc-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcompressedtextures3tcsrgb-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcontextattributes-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcontextevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglcontexteventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgldebugrendererinfo-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgldebugshaders-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgldepthtexture-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgldrawbuffers-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglframebuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgllosecontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglpowerpreference-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglprogram-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglquery-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglrenderbuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglrenderingcontext-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglsampler-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglshader-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglshaderprecisionformat-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglsync-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgltexture-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgltransformfeedback-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgluniformlocation-dev (= 0.3.28-1), librust-web-sys-0.3.28+webglvertexarrayobject-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpu-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuadapter-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuadapterdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuattachmentstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuattachmentstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubindgroup-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubindgroupbinding-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubindgroupdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubindgrouplayout-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubindgrouplayoutdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubinding-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubindingtype-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpublenddescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpublendfactor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpublendoperation-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpublendstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpublendstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubufferbinding-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubufferdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpubufferusage-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucolorwritebits-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucommandbuffer-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucommandencoder-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucommandencoderdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucomparefunction-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucomputepipeline-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpucomputepipelinedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpudepthstencilstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpudepthstencilstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpudevice-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpudevicedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuextensions-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpufence-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpufiltermode-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuindexformat-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuinputstate-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuinputstatedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuinputstepmode-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpulimits-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuloadop-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpulogentry-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpulogentrytype-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuobjectstatus-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpupipelinedescriptorbase-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpupipelinelayout-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpupipelinelayoutdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpupipelinestagedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpupowerpreference-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuprimitivetopology-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuqueue-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpurenderpassattachmentdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpurenderpassdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpurenderpipeline-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpurenderpipelinedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpusampler-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpusamplerdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpushadermodule-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpushadermoduledescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpushaderstage-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpushaderstagebit-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpustenciloperation-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpustencilstatefacedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpustoreop-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuswapchain-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuswapchaindescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputexture-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputexturedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputexturedimension-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputextureformat-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputextureusage-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputextureview-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgputextureviewdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuvertexattributedescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuvertexformat-dev (= 0.3.28-1), librust-web-sys-0.3.28+webgpuvertexinputdescriptor-dev (= 0.3.28-1), librust-web-sys-0.3.28+webkitcssmatrix-dev (= 0.3.28-1), librust-web-sys-0.3.28+webrtcglobalstatisticsreport-dev (= 0.3.28-1), librust-web-sys-0.3.28+websocket-dev (= 0.3.28-1), librust-web-sys-0.3.28+websocketdict-dev (= 0.3.28-1), librust-web-sys-0.3.28+websocketelement-dev (= 0.3.28-1), librust-web-sys-0.3.28+wheelevent-dev (= 0.3.28-1), librust-web-sys-0.3.28+wheeleventinit-dev (= 0.3.28-1), librust-web-sys-0.3.28+widevinecdmmanifest-dev (= 0.3.28-1), librust-web-sys-0.3.28+window-dev (= 0.3.28-1), librust-web-sys-0.3.28+windowclient-dev (= 0.3.28-1), librust-web-sys-0.3.28+worker-dev (= 0.3.28-1), librust-web-sys-0.3.28+workerdebuggerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+workerglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+workerlocation-dev (= 0.3.28-1), librust-web-sys-0.3.28+workernavigator-dev (= 0.3.28-1), librust-web-sys-0.3.28+workeroptions-dev (= 0.3.28-1), librust-web-sys-0.3.28+worklet-dev (= 0.3.28-1), librust-web-sys-0.3.28+workletglobalscope-dev (= 0.3.28-1), librust-web-sys-0.3.28+xmldocument-dev (= 0.3.28-1), librust-web-sys-0.3.28+xmlhttprequest-dev (= 0.3.28-1), librust-web-sys-0.3.28+xmlhttprequesteventtarget-dev (= 0.3.28-1), librust-web-sys-0.3.28+xmlhttprequestresponsetype-dev (= 0.3.28-1), librust-web-sys-0.3.28+xmlhttprequestupload-dev (= 0.3.28-1), librust-web-sys-0.3.28+xmlserializer-dev (= 0.3.28-1), librust-web-sys-0.3.28+xpathexpression-dev (= 0.3.28-1), librust-web-sys-0.3.28+xpathnsresolver-dev (= 0.3.28-1), librust-web-sys-0.3.28+xpathresult-dev (= 0.3.28-1), librust-web-sys-0.3.28+xsltprocessor-dev (= 0.3.28-1), librust-web-sys-0.3.28-dev (= 0.3.28-1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/length/provides-field-too-long/build-spec/fill-values b/t/recipes/checks/fields/length/provides-field-too-long/build-spec/fill-values
new file mode 100644
index 0000000..7210bf8
--- /dev/null
+++ b/t/recipes/checks/fields/length/provides-field-too-long/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: provides-field-too-long
+Description: The Provides: field d/control is too long.
diff --git a/t/recipes/checks/fields/length/provides-field-too-long/eval/desc b/t/recipes/checks/fields/length/provides-field-too-long/eval/desc
new file mode 100644
index 0000000..14ba528
--- /dev/null
+++ b/t/recipes/checks/fields/length/provides-field-too-long/eval/desc
@@ -0,0 +1,3 @@
+Testname: provides-field-too-long
+See-Also: Debian Bug#942493
+Check: fields/length
diff --git a/t/recipes/checks/fields/length/provides-field-too-long/eval/hints b/t/recipes/checks/fields/length/provides-field-too-long/eval/hints
new file mode 100644
index 0000000..eaf6d05
--- /dev/null
+++ b/t/recipes/checks/fields/length/provides-field-too-long/eval/hints
@@ -0,0 +1 @@
+provides-field-too-long (binary): field-too-long Provides (277987 chars > 5000)
diff --git a/t/recipes/checks/fields/mail-address/alioth-list/build-spec/fill-values b/t/recipes/checks/fields/mail-address/alioth-list/build-spec/fill-values
new file mode 100644
index 0000000..49c606a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/alioth-list/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: alioth-list
+Author: Packaging Team <pkg-team@lists.alioth.debian.org>
+Description: Package with alioth list in maintainer field
diff --git a/t/recipes/checks/fields/mail-address/alioth-list/eval/desc b/t/recipes/checks/fields/mail-address/alioth-list/eval/desc
new file mode 100644
index 0000000..2b28f4c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/alioth-list/eval/desc
@@ -0,0 +1,2 @@
+Testname: alioth-list
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/alioth-list/eval/hints b/t/recipes/checks/fields/mail-address/alioth-list/eval/hints
new file mode 100644
index 0000000..37f9202
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/alioth-list/eval/hints
@@ -0,0 +1,2 @@
+alioth-list (source): mailing-list-on-alioth Maintainer pkg-team@lists.alioth.debian.org
+alioth-list (source): mail-contact Maintainer "Packaging Team" <pkg-team@lists.alioth.debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/fill-values
new file mode 100644
index 0000000..b56d57a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changed-by-localhost
+Description: Test Changed-By field with localhost address
diff --git a/t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/test.changes.in
new file mode 100644
index 0000000..efffd8b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-localhost/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: Someone <someone@localhost.localdomain>
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changed-by-localhost/eval/desc b/t/recipes/checks/fields/mail-address/changed-by-localhost/eval/desc
new file mode 100644
index 0000000..7eee22e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-localhost/eval/desc
@@ -0,0 +1,2 @@
+Testname: changed-by-localhost
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changed-by-localhost/eval/hints b/t/recipes/checks/fields/mail-address/changed-by-localhost/eval/hints
new file mode 100644
index 0000000..0b00bd4
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-localhost/eval/hints
@@ -0,0 +1,3 @@
+changed-by-localhost (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changed-by-localhost (changes): mail-contact Changed-By Someone <someone@localhost.localdomain>
+changed-by-localhost (changes): bogus-mail-host Changed-By someone@localhost.localdomain
diff --git a/t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/fill-values
new file mode 100644
index 0000000..53a6789
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changed-by-malformed
+Description: Test malformed Changed-By field
diff --git a/t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/test.changes.in
new file mode 100644
index 0000000..b5be7b7
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-malformed/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: Foo<bar> Baz
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changed-by-malformed/eval/desc b/t/recipes/checks/fields/mail-address/changed-by-malformed/eval/desc
new file mode 100644
index 0000000..09f2ccc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-malformed/eval/desc
@@ -0,0 +1,2 @@
+Testname: changed-by-malformed
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changed-by-malformed/eval/hints b/t/recipes/checks/fields/mail-address/changed-by-malformed/eval/hints
new file mode 100644
index 0000000..1446169
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-malformed/eval/hints
@@ -0,0 +1,2 @@
+changed-by-malformed (changes): malformed-contact Changed-By Foo<bar>
+changed-by-malformed (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/fill-values
new file mode 100644
index 0000000..8cdb321
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changed-by-no-name
+Description: Test Changed-By field with missing name
diff --git a/t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/test.changes.in
new file mode 100644
index 0000000..80cee42
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-no-name/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: someone@example.com
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changed-by-no-name/eval/desc b/t/recipes/checks/fields/mail-address/changed-by-no-name/eval/desc
new file mode 100644
index 0000000..3d4100d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-no-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: changed-by-no-name
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changed-by-no-name/eval/hints b/t/recipes/checks/fields/mail-address/changed-by-no-name/eval/hints
new file mode 100644
index 0000000..4d7838c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-no-name/eval/hints
@@ -0,0 +1,3 @@
+changed-by-no-name (changes): no-phrase Changed-By someone@example.com
+changed-by-no-name (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changed-by-no-name (changes): mail-contact Changed-By someone@example.com
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/fill-values
new file mode 100644
index 0000000..03b2a46
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changed-by-root-email
+Description: Test Changed-By field with root user
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/test.changes.in
new file mode 100644
index 0000000..2dd3fbc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root-email/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: someone <root@debian.org>
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root-email/eval/desc b/t/recipes/checks/fields/mail-address/changed-by-root-email/eval/desc
new file mode 100644
index 0000000..3b579ce
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root-email/eval/desc
@@ -0,0 +1,2 @@
+Testname: changed-by-root-email
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root-email/eval/hints b/t/recipes/checks/fields/mail-address/changed-by-root-email/eval/hints
new file mode 100644
index 0000000..2137fec
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root-email/eval/hints
@@ -0,0 +1,3 @@
+changed-by-root-email (changes): root-in-contact Changed-By someone <root@debian.org>
+changed-by-root-email (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changed-by-root-email (changes): mail-contact Changed-By someone <root@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changed-by-root/build-spec/fill-values
new file mode 100644
index 0000000..c50862a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changed-by-root
+Description: Test Changed-By field with root user
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changed-by-root/build-spec/test.changes.in
new file mode 100644
index 0000000..0968226
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: root <someone@debian.org>
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root/eval/desc b/t/recipes/checks/fields/mail-address/changed-by-root/eval/desc
new file mode 100644
index 0000000..2d55c56
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root/eval/desc
@@ -0,0 +1,2 @@
+Testname: changed-by-root
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changed-by-root/eval/hints b/t/recipes/checks/fields/mail-address/changed-by-root/eval/hints
new file mode 100644
index 0000000..3dea25c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changed-by-root/eval/hints
@@ -0,0 +1,3 @@
+changed-by-root (changes): root-in-contact Changed-By root <someone@debian.org>
+changed-by-root (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changed-by-root (changes): mail-contact Changed-By root <someone@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/debian/changelog.in
new file mode 100644
index 0000000..227f65f
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/debian/changelog.in
@@ -0,0 +1,12 @@
+[% $source %] ([% $version %]) squeeze-backports; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.1) experimental; urgency=low
+
+ * First upload to experimental.
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
diff --git a/t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/fill-values
new file mode 100644
index 0000000..486ac79
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changelog-file-backport/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: changelog-file-backport
+Description: Check backport
+# Overrides the "data/changes-file/known-dists"
+# data file to avoid updating the test every release
diff --git a/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/desc b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/desc
new file mode 100644
index 0000000..5a915d6
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/desc
@@ -0,0 +1,6 @@
+Testname: changelog-file-backport
+Options: --include-dir ./lintian-include-dir
+Profile: lintian-test
+Check: fields/mail-address
+# Overrides the "data/changes-file/known-dists"
+# data file to avoid updating the test every release
diff --git a/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/hints b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/hints
new file mode 100644
index 0000000..575f53d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/hints
@@ -0,0 +1,4 @@
+changelog-file-backport (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changelog-file-backport (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changelog-file-backport (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changelog-file-backport (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists
new file mode 100644
index 0000000..ebbedbd
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changelog-file-backport/eval/lintian-include-dir/vendors/lintian-test/main/data/changes-file/known-dists
@@ -0,0 +1,23 @@
+# A list of Debian distributions, both code names and their aliases
+# - Note that common "extensions"[1] are stripped before checking for the
+# distribution name (except for "sid", "unstable" and "experimental").
+#
+# [1] -backports, -security, -proposed-updates etc. See checks/changes-file
+# for the complete list.
+
+
+# Codenames
+squeeze
+wheezy
+jessie
+stretch
+buster
+sid
+
+# Aliases
+oldstable
+stable
+testing
+unstable
+experimental
+
diff --git a/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/fill-values
new file mode 100644
index 0000000..0783088
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: changes
+Testname: changes-bad-ubuntu-distribution
+Version: 1.0+ubuntu2
+Description: Test for invalid Ubuntu distribution
diff --git a/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/test.changes.in
new file mode 100644
index 0000000..e3f1128
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/build-spec/test.changes.in
@@ -0,0 +1,12 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: wispy
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/desc b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/desc
new file mode 100644
index 0000000..714dddf
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/desc
@@ -0,0 +1,3 @@
+Testname: changes-bad-ubuntu-distribution
+Profile: ubuntu/main
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/hints b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/hints
new file mode 100644
index 0000000..149bc21
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-bad-ubuntu-distribution/eval/hints
@@ -0,0 +1,2 @@
+changes-bad-ubuntu-distribution (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-bad-ubuntu-distribution (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..7263201
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-distribution-mismatch
+Description: Test for unstable package to be installed in stable
diff --git a/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/test.changes.in
new file mode 100644
index 0000000..6801232
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/build-spec/test.changes.in
@@ -0,0 +1,16 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: stable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
+Changes:
+ [% $source %] ([% $version %]) unstable; urgency=low
+ .
+ * I used the wrong argument to `sbuild -d`.
diff --git a/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/desc b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/desc
new file mode 100644
index 0000000..d4cb7cb
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-distribution-mismatch
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/hints b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/hints
new file mode 100644
index 0000000..78784c0
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-distribution-mismatch/eval/hints
@@ -0,0 +1,2 @@
+changes-distribution-mismatch (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-distribution-mismatch (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..d4d4d3d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-experimental-mismatch
+Description: Test for experimental package to be installed in unstable
diff --git a/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/test.changes.in
new file mode 100644
index 0000000..1476333
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/build-spec/test.changes.in
@@ -0,0 +1,16 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
+Changes:
+ [% $source %] ([% $version %]) experimental; urgency=low
+ .
+ * I used the wrong argument to `sbuild -d`.
diff --git a/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/desc b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/desc
new file mode 100644
index 0000000..4ed6d8b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-experimental-mismatch
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/hints b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/hints
new file mode 100644
index 0000000..d8727dc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-experimental-mismatch/eval/hints
@@ -0,0 +1,2 @@
+changes-experimental-mismatch (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-experimental-mismatch (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/fill-values
new file mode 100644
index 0000000..ecce948
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-file-bad-section
+Description: Test for bad section in changes file
diff --git a/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/referenced-files/__some-file__ b/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/referenced-files/__some-file__
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/referenced-files/__some-file__
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/test.changes.in
new file mode 100644
index 0000000..721e067
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-bad-section/build-spec/test.changes.in
@@ -0,0 +1,18 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Files:
+ 8de2b87704ef0a11144b57d243db88ec 12 non-free optional __some-file__
+Checksums-Sha1:
+ c54c65218154f15c32ca252946786e0ad09aa99b 12 __some-file__
+Checksums-Sha256:
+ e6c1396639c0b79bebc94e4448cfe2700b871d45d0d38d98df6ee9da3f09d35c 12 __some-file__
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/desc b/t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/desc
new file mode 100644
index 0000000..229c550
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-file-bad-section
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/hints b/t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/hints
new file mode 100644
index 0000000..f19975a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-bad-section/eval/hints
@@ -0,0 +1,2 @@
+changes-file-bad-section (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-file-bad-section (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..74f84be
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-file-size-checksum-mismatch
+Description: Test for file size and checksums check
diff --git a/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__ b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/referenced-files/__some-file__
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/test.changes.in
new file mode 100644
index 0000000..c61138b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/build-spec/test.changes.in
@@ -0,0 +1,18 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Files:
+ d41d8cd98f00b204e9800998ecf8427e 0 devel optional __some-file__
+Checksums-Sha1:
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 __some-file__
+Checksums-Sha256:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 __some-file__
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/desc b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/desc
new file mode 100644
index 0000000..de01a65
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-file-size-checksum-mismatch
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/hints b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/hints
new file mode 100644
index 0000000..615b8af
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-file-size-checksum-mismatch/eval/hints
@@ -0,0 +1,2 @@
+changes-file-size-checksum-mismatch (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-file-size-checksum-mismatch (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
new file mode 100644
index 0000000..0312410
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/debian/control.in
@@ -0,0 +1,36 @@
+Source: [% $source %]
+Section: [% $section %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbg package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It
+ may be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Manual dbgsym package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ even be an empty package.
diff --git a/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
new file mode 100644
index 0000000..4d83180
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Package-Architecture: any
+Description: Package builds -dbg and -dbgsym
diff --git a/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
new file mode 100644
index 0000000..19caa6d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-files-package-builds-dbg-and-dbgsym-variants
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
new file mode 100644
index 0000000..cc52ce4
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-files-package-builds-dbg-and-dbgsym-variants/eval/hints
@@ -0,0 +1,6 @@
+changes-files-package-builds-dbg-and-dbgsym-variants (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-files-package-builds-dbg-and-dbgsym-variants (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-files-package-builds-dbg-and-dbgsym-variants (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-files-package-builds-dbg-and-dbgsym-variants-dbgsym (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-files-package-builds-dbg-and-dbgsym-variants-dbg (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-files-package-builds-dbg-and-dbgsym-variants (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/fill-values
new file mode 100644
index 0000000..6a6b7f8
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-missing-fields
+Description: Test for changes missing fields
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/test.changes.in
new file mode 100644
index 0000000..49c165a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-fields/build-spec/test.changes.in
@@ -0,0 +1,9 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Maintainer: [% $author %]
+Changed-By: [% $author %]
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-fields/eval/desc b/t/recipes/checks/fields/mail-address/changes-missing-fields/eval/desc
new file mode 100644
index 0000000..a0ec87b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-missing-fields
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-fields/eval/hints b/t/recipes/checks/fields/mail-address/changes-missing-fields/eval/hints
new file mode 100644
index 0000000..c0cd300
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-fields/eval/hints
@@ -0,0 +1,2 @@
+changes-missing-fields (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-missing-fields (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/fill-values
new file mode 100644
index 0000000..b6a6f14
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-missing-format
+Description: Test for missing format field
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/test.changes.in
new file mode 100644
index 0000000..e571bbc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-format/build-spec/test.changes.in
@@ -0,0 +1,11 @@
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-format/eval/desc b/t/recipes/checks/fields/mail-address/changes-missing-format/eval/desc
new file mode 100644
index 0000000..7255507
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-format/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-missing-format
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-missing-format/eval/hints b/t/recipes/checks/fields/mail-address/changes-missing-format/eval/hints
new file mode 100644
index 0000000..3422268
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-missing-format/eval/hints
@@ -0,0 +1,2 @@
+changes-missing-format (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-missing-format (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/fill-values
new file mode 100644
index 0000000..4359e34
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-unreleased
+Description: Test for UNRELEASED package uploaded to unstable
diff --git a/t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/test.changes.in b/t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/test.changes.in
new file mode 100644
index 0000000..4a2eb46
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-unreleased/build-spec/test.changes.in
@@ -0,0 +1,16 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Urgency: low
+Maintainer: [% $author %]
+Changed-By: [% $author %]
+Description:
+ [% $source %] - [% $description %]
+Changes:
+ [% $source %] ([% $version %]) UNRELEASED; urgency=low
+ .
+ * I'm still working on this package, do not upload.
diff --git a/t/recipes/checks/fields/mail-address/changes-unreleased/eval/desc b/t/recipes/checks/fields/mail-address/changes-unreleased/eval/desc
new file mode 100644
index 0000000..37c8043
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-unreleased/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-unreleased
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-unreleased/eval/hints b/t/recipes/checks/fields/mail-address/changes-unreleased/eval/hints
new file mode 100644
index 0000000..95db75b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-unreleased/eval/hints
@@ -0,0 +1,2 @@
+changes-unreleased (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-unreleased (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/build-spec/fill-values b/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/build-spec/fill-values
new file mode 100644
index 0000000..cf7513a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: changes-upload-has-backports-version-number
+Version: 1.0~bpo9+1
+Description: Check for backports that have an incorrect Distribution
diff --git a/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/desc b/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/desc
new file mode 100644
index 0000000..be2530e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-upload-has-backports-version-number
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/hints b/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/hints
new file mode 100644
index 0000000..cd58ef8
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/changes-upload-has-backports-version-number/eval/hints
@@ -0,0 +1,4 @@
+changes-upload-has-backports-version-number (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-upload-has-backports-version-number (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-upload-has-backports-version-number (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+changes-upload-has-backports-version-number (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/fill-values b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..3fe5f1f
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: checksum-count-mismatch
+Skeleton: upload-native
+Description: Check for changes file with missing checksum entry
diff --git a/t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/post-build.in b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/post-build.in
new file mode 100755
index 0000000..4665a7a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/build-spec/post-build.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+perl -0777 -pi -e 's/(\nChecksums-Sha256:\n)[^\n]*\n/$1/' [% $build_product %]
diff --git a/t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/desc b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/desc
new file mode 100644
index 0000000..c8de938
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: checksum-count-mismatch
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/hints b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/hints
new file mode 100644
index 0000000..017bfd9
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/checksum-count-mismatch/eval/hints
@@ -0,0 +1,4 @@
+checksum-count-mismatch (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+checksum-count-mismatch (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+checksum-count-mismatch (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+checksum-count-mismatch (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/debian/changelog.in
new file mode 100644
index 0000000..c862408
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) stable foo-backportss bar foo; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/fill-values b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/fill-values
new file mode 100644
index 0000000..4671982
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: distribution-multiple-bad
+Description: Multiple distributions with at least one bad one
diff --git a/t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/desc b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/desc
new file mode 100644
index 0000000..70c11c1
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/desc
@@ -0,0 +1,3 @@
+Testname: distribution-multiple-bad
+See-Also: Debian Bug#514853
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/hints b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/hints
new file mode 100644
index 0000000..5adc4b6
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/distribution-multiple-bad/eval/hints
@@ -0,0 +1,4 @@
+distribution-multiple-bad (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+distribution-multiple-bad (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+distribution-multiple-bad (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+distribution-multiple-bad (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/debian/control.in
new file mode 100644
index 0000000..d80f756
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Uploaders: I Will Loop <fields-maintainer-bounces@packages.debian.org>,
+ I Will Loop Too <fields-maintainer-bounces@PACKAGES.QA.DEBIAN.ORG>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/fill-values
new file mode 100644
index 0000000..710a7bd
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: fields-maintainer-bounces
+Description: test e-mail addresses which are known to bounce e-mails
+Author: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+# To avoid NMU warnings / having a changelog.in
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/desc b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/desc
new file mode 100644
index 0000000..e428087
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-maintainer-bounces
+Test-Against:
+ mail-address-loops-or-bounces
+Check: fields/mail-address
+# To avoid NMU warnings / having a changelog.in
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/hints b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/hints
new file mode 100644
index 0000000..4b6e939
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-bounces/eval/hints
@@ -0,0 +1,10 @@
+fields-maintainer-bounces (source): mail-contact Uploaders "I Will Loop" <fields-maintainer-bounces@packages.debian.org>
+fields-maintainer-bounces (source): mail-contact Uploaders "I Will Loop Too" <fields-maintainer-bounces@PACKAGES.QA.DEBIAN.ORG>
+fields-maintainer-bounces (source): mail-contact Maintainer "Ubuntu Developers" <ubuntu-devel-discuss@lists.ubuntu.com>
+fields-maintainer-bounces (source): mail-address-loops-or-bounces Maintainer ubuntu-devel-discuss@lists.ubuntu.com
+fields-maintainer-bounces (changes): mail-contact Maintainer "Ubuntu Developers" <ubuntu-devel-discuss@lists.ubuntu.com>
+fields-maintainer-bounces (changes): mail-contact Changed-By "Ubuntu Developers" <ubuntu-devel-discuss@lists.ubuntu.com>
+fields-maintainer-bounces (changes): mail-address-loops-or-bounces Maintainer ubuntu-devel-discuss@lists.ubuntu.com
+fields-maintainer-bounces (changes): mail-address-loops-or-bounces Changed-By ubuntu-devel-discuss@lists.ubuntu.com
+fields-maintainer-bounces (binary): mail-contact Maintainer "Ubuntu Developers" <ubuntu-devel-discuss@lists.ubuntu.com>
+fields-maintainer-bounces (binary): mail-address-loops-or-bounces Maintainer ubuntu-devel-discuss@lists.ubuntu.com
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/debian/control.in
new file mode 100644
index 0000000..00f2799
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/debian/control.in
@@ -0,0 +1,22 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: lintian-maint@debian.org
+Uploaders: <lintian-maint@debian.org>, Russ Allbery <rra@debian.org>,
+ Russ Allbery <rra@debian.org>,
+ Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>,
+ Double comma <double@comma.com>, ,
+ Mr. Missing Comma <mrmc@comma.com>
+ Mrs. Missing Comma <mrsmc@comma.com>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..d6a4051
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-maintainer-general
+Description: Tests of various maintainer and uploader tags
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/desc b/t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/desc
new file mode 100644
index 0000000..51ea5a2
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-maintainer-general
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/hints b/t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/hints
new file mode 100644
index 0000000..4e30932
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer-general/eval/hints
@@ -0,0 +1,16 @@
+fields-maintainer-general (source): no-phrase Uploaders lintian-maint@debian.org
+fields-maintainer-general (source): no-phrase Maintainer lintian-maint@debian.org
+fields-maintainer-general (source): malformed-contact Uploaders Mr. Missing Comma <mrmc@comma.com>
+fields-maintainer-general (source): malformed-contact Uploaders
+fields-maintainer-general (source): mail-contact Uploaders lintian-maint@debian.org
+fields-maintainer-general (source): mail-contact Uploaders "Ubuntu Developers" <ubuntu-devel-discuss@lists.ubuntu.com>
+fields-maintainer-general (source): mail-contact Uploaders "Russ Allbery" <rra@debian.org>
+fields-maintainer-general (source): mail-contact Uploaders "Double comma" <double@comma.com>
+fields-maintainer-general (source): mail-contact Maintainer lintian-maint@debian.org
+fields-maintainer-general (source): mail-address-loops-or-bounces Uploaders ubuntu-devel-discuss@lists.ubuntu.com
+fields-maintainer-general (source): duplicate-contact Uploaders rra@debian.org
+fields-maintainer-general (changes): no-phrase Maintainer lintian-maint@debian.org
+fields-maintainer-general (changes): mail-contact Maintainer lintian-maint@debian.org
+fields-maintainer-general (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+fields-maintainer-general (binary): no-phrase Maintainer lintian-maint@debian.org
+fields-maintainer-general (binary): mail-contact Maintainer lintian-maint@debian.org
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/debian/control.in
new file mode 100644
index 0000000..a2a865b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: Mrs. Localhost<user@localhost>
+Uploaders: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/fill-values
new file mode 100644
index 0000000..76428de
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-maintainer
+Description: General tests of the maintainer field
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer/eval/desc b/t/recipes/checks/fields/mail-address/fields-maintainer/eval/desc
new file mode 100644
index 0000000..6d0e902
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-maintainer
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-maintainer/eval/hints b/t/recipes/checks/fields/mail-address/fields-maintainer/eval/hints
new file mode 100644
index 0000000..af1b6d4
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-maintainer/eval/hints
@@ -0,0 +1,8 @@
+fields-maintainer (source): mail-contact Uploaders "Debian Lintian Maintainers" <lintian-maint@debian.org>
+fields-maintainer (source): mail-contact Maintainer "Mrs. Localhost" <user@localhost>
+fields-maintainer (source): bogus-mail-host Maintainer user@localhost
+fields-maintainer (changes): mail-contact Maintainer "Mrs. Localhost" <user@localhost>
+fields-maintainer (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+fields-maintainer (changes): bogus-mail-host Maintainer user@localhost
+fields-maintainer (binary): mail-contact Maintainer "Mrs. Localhost" <user@localhost>
+fields-maintainer (binary): bogus-mail-host Maintainer user@localhost
diff --git a/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/build-spec/fill-values
new file mode 100644
index 0000000..e64711d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-no-human-maintainer
+Description: Checks for a package maintained only by a list
+Author: Lintian Maintainers <debian-lint-maint@lists.debian.org>
diff --git a/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/desc b/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/desc
new file mode 100644
index 0000000..9ca88c2
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-no-human-maintainer
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/hints b/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/hints
new file mode 100644
index 0000000..266558a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-no-human-maintainer/eval/hints
@@ -0,0 +1,4 @@
+fields-no-human-maintainer (source): mail-contact Maintainer "Lintian Maintainers" <debian-lint-maint@lists.debian.org>
+fields-no-human-maintainer (changes): mail-contact Maintainer "Lintian Maintainers" <debian-lint-maint@lists.debian.org>
+fields-no-human-maintainer (changes): mail-contact Changed-By "Lintian Maintainers" <debian-lint-maint@lists.debian.org>
+fields-no-human-maintainer (binary): mail-contact Maintainer "Lintian Maintainers" <debian-lint-maint@lists.debian.org>
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/changelog.in
new file mode 100644
index 0000000..23a7dae
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Orphaned.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Debian QA Group <debian-qa@lists.debian.org> [% $date %]
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/control.in
new file mode 100644
index 0000000..5255485
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: Debian QA Group <debian-qa@lists.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/fill-values
new file mode 100644
index 0000000..dbfe492
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-qa-maint-address
+Description: Test for the QA in Maintainer field
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/desc b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/desc
new file mode 100644
index 0000000..f5a860b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-qa-maint-address
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/hints b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/hints
new file mode 100644
index 0000000..0bbb7fc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-address/eval/hints
@@ -0,0 +1,8 @@
+fields-qa-maint-address (source): mail-contact Maintainer "Debian QA Group" <debian-qa@lists.debian.org>
+fields-qa-maint-address (source): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
+fields-qa-maint-address (changes): mail-contact Maintainer "Debian QA Group" <debian-qa@lists.debian.org>
+fields-qa-maint-address (changes): mail-contact Changed-By "Debian QA Group" <debian-qa@lists.debian.org>
+fields-qa-maint-address (changes): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
+fields-qa-maint-address (changes): faulty-debian-qa-group-address Changed-By debian-qa@lists.debian.org -> packages@qa.debian.org
+fields-qa-maint-address (binary): mail-contact Maintainer "Debian QA Group" <debian-qa@lists.debian.org>
+fields-qa-maint-address (binary): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/changelog.in
new file mode 100644
index 0000000..d545fc7
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Orphaned.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Debian QA <packages@qa.debian.org> [% $date %]
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/control.in
new file mode 100644
index 0000000..88bbdfb
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: Debian QA <packages@qa.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/fill-values
new file mode 100644
index 0000000..bb4b82b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-qa-maint-name
+Description: Test for the QA in Maintainer field
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/desc b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/desc
new file mode 100644
index 0000000..c9d8f0d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-qa-maint-name
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/hints b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/hints
new file mode 100644
index 0000000..d7bfa21
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-qa-maint-name/eval/hints
@@ -0,0 +1,8 @@
+fields-qa-maint-name (source): mail-contact Maintainer "Debian QA" <packages@qa.debian.org>
+fields-qa-maint-name (source): faulty-debian-qa-group-phrase Maintainer Debian QA -> Debian QA Group
+fields-qa-maint-name (changes): mail-contact Maintainer "Debian QA" <packages@qa.debian.org>
+fields-qa-maint-name (changes): mail-contact Changed-By "Debian QA" <packages@qa.debian.org>
+fields-qa-maint-name (changes): faulty-debian-qa-group-phrase Maintainer Debian QA -> Debian QA Group
+fields-qa-maint-name (changes): faulty-debian-qa-group-phrase Changed-By Debian QA -> Debian QA Group
+fields-qa-maint-name (binary): mail-contact Maintainer "Debian QA" <packages@qa.debian.org>
+fields-qa-maint-name (binary): faulty-debian-qa-group-phrase Maintainer Debian QA -> Debian QA Group
diff --git a/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/changelog.in
new file mode 100644
index 0000000..440e3cd
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Orphaned.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- root <someone@debian.org> [% $date %]
diff --git a/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/control.in
new file mode 100644
index 0000000..005e664
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: root <someone@debian.org>
+Uploaders: John Doe <root@debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/fill-values
new file mode 100644
index 0000000..8938c72
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-root-maint-address/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-root-maint-address
+Description: Test for root in Maintainer field
diff --git a/t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/desc b/t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/desc
new file mode 100644
index 0000000..ab6b6a2
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-root-maint-address
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/hints b/t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/hints
new file mode 100644
index 0000000..41e6d65
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-root-maint-address/eval/hints
@@ -0,0 +1,10 @@
+fields-root-maint-address (source): root-in-contact Uploaders "John Doe" <root@debian.org>
+fields-root-maint-address (source): root-in-contact Maintainer root <someone@debian.org>
+fields-root-maint-address (source): mail-contact Uploaders "John Doe" <root@debian.org>
+fields-root-maint-address (source): mail-contact Maintainer root <someone@debian.org>
+fields-root-maint-address (changes): root-in-contact Maintainer root <someone@debian.org>
+fields-root-maint-address (changes): root-in-contact Changed-By root <someone@debian.org>
+fields-root-maint-address (changes): mail-contact Maintainer root <someone@debian.org>
+fields-root-maint-address (changes): mail-contact Changed-By root <someone@debian.org>
+fields-root-maint-address (binary): root-in-contact Maintainer root <someone@debian.org>
+fields-root-maint-address (binary): mail-contact Maintainer root <someone@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/debian/control.in
new file mode 100644
index 0000000..8a5812a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/debian/control.in
@@ -0,0 +1,23 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Uploaders: Mrs. Localhost <user@localhost>,
+ Mr. Weird<no-space@somewhere.com>,
+ Malformed Email <@ddress@myspace.com>,
+ John A. J. Doe <i.am.ok@somewhere.com>,
+ Doris Double-Email <Doris Double-Email <doris@demail.com>>,
+ Valid email <0@somewhere.com>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/fill-values b/t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/fill-values
new file mode 100644
index 0000000..56aa76e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-uploaders/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-uploaders
+Description: General tests of the uploaders field
diff --git a/t/recipes/checks/fields/mail-address/fields-uploaders/eval/desc b/t/recipes/checks/fields/mail-address/fields-uploaders/eval/desc
new file mode 100644
index 0000000..6e7a347
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-uploaders/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-uploaders
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/fields-uploaders/eval/hints b/t/recipes/checks/fields/mail-address/fields-uploaders/eval/hints
new file mode 100644
index 0000000..4e0c55e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/fields-uploaders/eval/hints
@@ -0,0 +1,10 @@
+fields-uploaders (source): malformed-contact Uploaders Malformed Email <@ddress@myspace.com>
+fields-uploaders (source): malformed-contact Uploaders Doris Double-Email <Doris
+fields-uploaders (source): mail-contact Uploaders "Mrs. Localhost" <user@localhost>
+fields-uploaders (source): mail-contact Uploaders "Mr. Weird" <no-space@somewhere.com>
+fields-uploaders (source): mail-contact Uploaders "John A. J. Doe" <i.am.ok@somewhere.com>
+fields-uploaders (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+fields-uploaders (source): bogus-mail-host Uploaders user@localhost
+fields-uploaders (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+fields-uploaders (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+fields-uploaders (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/rules b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/build-spec/fill-values b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/build-spec/orig/README b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/build-spec/pre-build b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/eval/desc b/t/recipes/checks/fields/mail-address/generic-empty/eval/desc
new file mode 100644
index 0000000..acf9e92
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/generic-empty/eval/hints b/t/recipes/checks/fields/mail-address/generic-empty/eval/hints
new file mode 100644
index 0000000..88e582a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/generic-empty/eval/hints
@@ -0,0 +1,4 @@
+generic-empty (source): malformed-contact Maintainer a
+generic-empty (changes): malformed-contact Maintainer a
+generic-empty (changes): malformed-contact Changed-By a <>
+generic-empty (binary): malformed-contact Maintainer a
diff --git a/t/recipes/checks/fields/mail-address/java-team-fp/build-spec/fill-values b/t/recipes/checks/fields/mail-address/java-team-fp/build-spec/fill-values
new file mode 100644
index 0000000..f21d0dd
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/java-team-fp/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: java-team-fp
+Author: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
+Description: Java team plans to use lists.alioth.d.o
diff --git a/t/recipes/checks/fields/mail-address/java-team-fp/eval/desc b/t/recipes/checks/fields/mail-address/java-team-fp/eval/desc
new file mode 100644
index 0000000..955e571
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/java-team-fp/eval/desc
@@ -0,0 +1,3 @@
+Testname: java-team-fp
+Check: fields/mail-address
+See-Also: Bug#962448
diff --git a/t/recipes/checks/fields/mail-address/java-team-fp/eval/hints b/t/recipes/checks/fields/mail-address/java-team-fp/eval/hints
new file mode 100644
index 0000000..58ab4e5
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/java-team-fp/eval/hints
@@ -0,0 +1,2 @@
+java-team-fp (source): mailing-list-on-alioth Maintainer pkg-java-maintainers@lists.alioth.debian.org
+java-team-fp (source): mail-contact Maintainer "Debian Java Maintainers" <pkg-java-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/control b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..57a489c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description uses only UTF-8 high bytes chars.
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/fill-values b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/eval/desc b/t/recipes/checks/fields/mail-address/legacy-foo++/eval/desc
new file mode 100644
index 0000000..3173f50
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/eval/hints b/t/recipes/checks/fields/mail-address/legacy-foo++/eval/hints
new file mode 100644
index 0000000..2b778ce
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/eval/hints
@@ -0,0 +1,20 @@
+foo++ (source): no-phrase Uploaders Yama@gotchi
+foo++ (source): malformed-contact Uploaders Josip
+foo++ (source): malformed-contact Uploaders I am afraid of spam and think this helps <no_spam_please
+foo++ (source): mail-contact Uploaders Yama@gotchi
+foo++ (source): mail-contact Uploaders Frank <djpig@debian.org>
+foo++ (source): mail-contact Uploaders "Marc 'HE' Brockschmidt" <he@unknown>
+foo++ (source): mail-contact Uploaders "Jeroen van Wolffelaar" <jeroen@localhost.localdomain>
+foo++ (source): mail-contact Maintainer "Lintian Maintainer" <debian-qa@lists.debian.org>
+foo++ (source): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
+foo++ (source): bogus-mail-host Uploaders jeroen@localhost.localdomain
+foo++ (source): bogus-mail-host Uploaders he@unknown
+foo++ (source): bogus-mail-host Uploaders Yama@gotchi
+foo++ (changes): mail-contact Maintainer "Lintian Maintainer" <debian-qa@lists.debian.org>
+foo++ (changes): mail-contact Changed-By "Marc 'HE' Brockschmidt" <he@unknown>
+foo++ (changes): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
+foo++ (changes): bogus-mail-host Changed-By he@unknown
+foo++-helper (binary): mail-contact Maintainer "Lintian Maintainer" <debian-qa@lists.debian.org>
+foo++-helper (binary): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
+foo++ (binary): mail-contact Maintainer "Lintian Maintainer" <debian-qa@lists.debian.org>
+foo++ (binary): faulty-debian-qa-group-address Maintainer debian-qa@lists.debian.org -> packages@qa.debian.org
diff --git a/t/recipes/checks/fields/mail-address/legacy-foo++/eval/post-test b/t/recipes/checks/fields/mail-address/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..1d850e3
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..1ac448c
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,8 @@
+maintainer-scripts (source): mail-contact Uploaders "Anyone but Jeroen" <jeroen@wolffelaar.nl>
+maintainer-scripts (source): mail-contact Maintainer "QA group" <packages@qa.debian.org>
+maintainer-scripts (source): faulty-debian-qa-group-phrase Maintainer QA group -> Debian QA Group
+maintainer-scripts (changes): mail-contact Maintainer "QA group" <packages@qa.debian.org>
+maintainer-scripts (changes): mail-contact Changed-By "Jeroen van Wolffelaar" <jeroen@wolffelaar.nl>
+maintainer-scripts (changes): faulty-debian-qa-group-phrase Maintainer QA group -> Debian QA Group
+maintainer-scripts (binary): mail-contact Maintainer "QA group" <packages@qa.debian.org>
+maintainer-scripts (binary): faulty-debian-qa-group-phrase Maintainer QA group -> Debian QA Group
diff --git a/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/fill-values b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/fill-values
new file mode 100644
index 0000000..c21a8af
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: mismatch-between-changes-and-source
+Description: Maintainer in changes files is different from source
diff --git a/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/post-build.in b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/post-build.in
new file mode 100755
index 0000000..123b424
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/build-spec/post-build.in
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="[% $build_product %]"
+
+sed -i 's/^Maintainer:.*$/Maintainer: Unknown <never@heard.of>/' "$product"
diff --git a/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/desc b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/desc
new file mode 100644
index 0000000..d41c78a
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: mismatch-between-changes-and-source
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/hints b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/hints
new file mode 100644
index 0000000..c013454
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/mismatch-between-changes-and-source/eval/hints
@@ -0,0 +1,5 @@
+mismatch-between-changes-and-source (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+mismatch-between-changes-and-source (changes): mail-contact Maintainer Unknown <never@heard.of>
+mismatch-between-changes-and-source (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+mismatch-between-changes-and-source (changes): bogus-mail-host Maintainer never@heard.of
+mismatch-between-changes-and-source (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/missing-closing-bracket/build-spec/fill-values b/t/recipes/checks/fields/mail-address/missing-closing-bracket/build-spec/fill-values
new file mode 100644
index 0000000..6a687cd
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/missing-closing-bracket/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: missing-closing-bracket
+Author: Work <me@work.com
+Description: Missing closing bracket in maintainer email address (false positive)
diff --git a/t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/desc b/t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/desc
new file mode 100644
index 0000000..d4f124b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/desc
@@ -0,0 +1,5 @@
+Testname: missing-closing-bracket
+Check: fields/mail-address
+Test-Against:
+ malformed-contact
+See-Also: Bug#965335
diff --git a/t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/hints b/t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/hints
new file mode 100644
index 0000000..db204a7
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/missing-closing-bracket/eval/hints
@@ -0,0 +1,3 @@
+missing-closing-bracket (source): malformed-contact Maintainer Work <me@work.com
+missing-closing-bracket (changes): malformed-contact Maintainer Work <me@work.com
+missing-closing-bracket (binary): malformed-contact Maintainer Work <me@work.com
diff --git a/t/recipes/checks/fields/mail-address/qa-group-fp/build-spec/fill-values b/t/recipes/checks/fields/mail-address/qa-group-fp/build-spec/fill-values
new file mode 100644
index 0000000..e17b5d1
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/qa-group-fp/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: qa-group-fp
+Author: Debian QA Group <packages@qa.debian.org>
+Description: QA in Maintainer field (false positive)
diff --git a/t/recipes/checks/fields/mail-address/qa-group-fp/eval/desc b/t/recipes/checks/fields/mail-address/qa-group-fp/eval/desc
new file mode 100644
index 0000000..1bca3a7
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/qa-group-fp/eval/desc
@@ -0,0 +1,4 @@
+Testname: qa-group-fp
+Check: fields/mail-address
+Test-Against:
+ faulty-debian-qa-group-phrase
diff --git a/t/recipes/checks/fields/mail-address/qa-group-fp/eval/hints b/t/recipes/checks/fields/mail-address/qa-group-fp/eval/hints
new file mode 100644
index 0000000..a088aad
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/qa-group-fp/eval/hints
@@ -0,0 +1,4 @@
+qa-group-fp (source): mail-contact Maintainer "Debian QA Group" <packages@qa.debian.org>
+qa-group-fp (changes): mail-contact Maintainer "Debian QA Group" <packages@qa.debian.org>
+qa-group-fp (changes): mail-contact Changed-By "Debian QA Group" <packages@qa.debian.org>
+qa-group-fp (binary): mail-contact Maintainer "Debian QA Group" <packages@qa.debian.org>
diff --git a/t/recipes/checks/fields/mail-address/right-to-left-override/build-spec/fill-values b/t/recipes/checks/fields/mail-address/right-to-left-override/build-spec/fill-values
new file mode 100644
index 0000000..0bb1549
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/right-to-left-override/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: right-to-left-override
+Author: Ansgar <"‮ansgar"@43-1.org>
+Description: Maintainer with UTF-8 RIGHT-TO-LEFT OVERRIDE from Ansgar's 'colorful' test package (false positive)
diff --git a/t/recipes/checks/fields/mail-address/right-to-left-override/eval/desc b/t/recipes/checks/fields/mail-address/right-to-left-override/eval/desc
new file mode 100644
index 0000000..e2c8d32
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/right-to-left-override/eval/desc
@@ -0,0 +1,3 @@
+Testname: right-to-left-override
+Check: fields/mail-address
+See-Also: Bug#962277
diff --git a/t/recipes/checks/fields/mail-address/right-to-left-override/eval/hints b/t/recipes/checks/fields/mail-address/right-to-left-override/eval/hints
new file mode 100644
index 0000000..a990983
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/right-to-left-override/eval/hints
@@ -0,0 +1,4 @@
+right-to-left-override (source): mail-contact Maintainer Ansgar <‮ansgar@43-1.org>
+right-to-left-override (changes): mail-contact Maintainer Ansgar <‮ansgar@43-1.org>
+right-to-left-override (changes): mail-contact Changed-By Ansgar <‮ansgar@43-1.org>
+right-to-left-override (binary): mail-contact Maintainer Ansgar <‮ansgar@43-1.org>
diff --git a/t/recipes/checks/fields/mail-address/two-maintainers/build-spec/fill-values b/t/recipes/checks/fields/mail-address/two-maintainers/build-spec/fill-values
new file mode 100644
index 0000000..20af99e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/two-maintainers/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: two-maintainers
+Author: Work <me@work.com>, Home <me@debian.org>
+Description: Two contacts listed as maintainers
diff --git a/t/recipes/checks/fields/mail-address/two-maintainers/eval/desc b/t/recipes/checks/fields/mail-address/two-maintainers/eval/desc
new file mode 100644
index 0000000..ed8b807
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/two-maintainers/eval/desc
@@ -0,0 +1,2 @@
+Testname: two-maintainers
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/two-maintainers/eval/hints b/t/recipes/checks/fields/mail-address/two-maintainers/eval/hints
new file mode 100644
index 0000000..db8c7eb
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/two-maintainers/eval/hints
@@ -0,0 +1,12 @@
+two-maintainers (source): too-many-contacts Maintainer Work <me@work.com>, Home <me@debian.org>
+two-maintainers (source): mail-contact Maintainer Work <me@work.com>
+two-maintainers (source): mail-contact Maintainer Home <me@debian.org>
+two-maintainers (changes): too-many-contacts Maintainer Work <me@work.com>, Home <me@debian.org>
+two-maintainers (changes): too-many-contacts Changed-By Work <me@work.com>, Home <me@debian.org>
+two-maintainers (changes): mail-contact Maintainer Work <me@work.com>
+two-maintainers (changes): mail-contact Maintainer Home <me@debian.org>
+two-maintainers (changes): mail-contact Changed-By Work <me@work.com>
+two-maintainers (changes): mail-contact Changed-By Home <me@debian.org>
+two-maintainers (binary): too-many-contacts Maintainer Work <me@work.com>, Home <me@debian.org>
+two-maintainers (binary): mail-contact Maintainer Work <me@work.com>
+two-maintainers (binary): mail-contact Maintainer Home <me@debian.org>
diff --git a/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..bd03c4e
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1 @@
+Too lazy to fake this file
diff --git a/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/watch b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/watch
new file mode 100644
index 0000000..139bc40
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/debian/watch
@@ -0,0 +1,5 @@
+version=4
+opts="pgpmode=next" https://alioth.debian.org/frs/?group_id=30928 \
+ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian
+opts="pgpmode=previous" https://alioth.debian.org/frs/?group_id=30928 \
+ (?:.*)/@PACKAGE@@ANY_VERSION@@SIGNATURE_EXT@ previous
diff --git a/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/fill-values b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/fill-values
new file mode 100644
index 0000000..061e5ae
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: watch-file-pgpmode-next
+Skeleton: upload-non-native
+Version: 2.0-1
+Description: Watch file with pgpmode=next
diff --git a/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/desc b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/desc
new file mode 100644
index 0000000..28bb0a6
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/desc
@@ -0,0 +1,3 @@
+Testname: watch-file-pgpmode-next
+See-Also: #841000
+Check: fields/mail-address
diff --git a/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/hints b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/hints
new file mode 100644
index 0000000..3c6ea0b
--- /dev/null
+++ b/t/recipes/checks/fields/mail-address/watch-file-pgpmode-next/eval/hints
@@ -0,0 +1,4 @@
+watch-file-pgpmode-next (source): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+watch-file-pgpmode-next (changes): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
+watch-file-pgpmode-next (changes): mail-contact Changed-By "Debian Lintian Maintainers" <lintian-maint@debian.org>
+watch-file-pgpmode-next (binary): mail-contact Maintainer "Debian Lintian Maintainers" <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/maintainer/alioth-list/build-spec/fill-values b/t/recipes/checks/fields/maintainer/alioth-list/build-spec/fill-values
new file mode 100644
index 0000000..49c606a
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/alioth-list/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: alioth-list
+Author: Packaging Team <pkg-team@lists.alioth.debian.org>
+Description: Package with alioth list in maintainer field
diff --git a/t/recipes/checks/fields/maintainer/alioth-list/eval/desc b/t/recipes/checks/fields/maintainer/alioth-list/eval/desc
new file mode 100644
index 0000000..924e927
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/alioth-list/eval/desc
@@ -0,0 +1,2 @@
+Testname: alioth-list
+Check: fields/maintainer
diff --git a/t/recipes/checks/fields/maintainer/alioth-list/eval/hints b/t/recipes/checks/fields/maintainer/alioth-list/eval/hints
new file mode 100644
index 0000000..8b018b0
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/alioth-list/eval/hints
@@ -0,0 +1 @@
+alioth-list (source): no-human-maintainers
diff --git a/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/build-spec/fill-values b/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/build-spec/fill-values
new file mode 100644
index 0000000..e64711d
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-no-human-maintainer
+Description: Checks for a package maintained only by a list
+Author: Lintian Maintainers <debian-lint-maint@lists.debian.org>
diff --git a/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/desc b/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/desc
new file mode 100644
index 0000000..c5d6400
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-no-human-maintainer
+Check: fields/maintainer
diff --git a/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/hints b/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/hints
new file mode 100644
index 0000000..7b5aaa0
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-no-human-maintainer/eval/hints
@@ -0,0 +1 @@
+fields-no-human-maintainer (source): no-human-maintainers
diff --git a/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/changelog.in b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/changelog.in
new file mode 100644
index 0000000..23a7dae
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Orphaned.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Debian QA Group <debian-qa@lists.debian.org> [% $date %]
diff --git a/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/control.in b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/control.in
new file mode 100644
index 0000000..5255485
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: Debian QA Group <debian-qa@lists.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/fill-values b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/fill-values
new file mode 100644
index 0000000..dbfe492
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-qa-maint-address
+Description: Test for the QA in Maintainer field
diff --git a/t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/desc b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/desc
new file mode 100644
index 0000000..9d0b18c
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-qa-maint-address
+Check: fields/maintainer
diff --git a/t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/hints b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/hints
new file mode 100644
index 0000000..fb94696
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/fields-qa-maint-address/eval/hints
@@ -0,0 +1 @@
+fields-qa-maint-address (source): no-human-maintainers
diff --git a/t/recipes/checks/fields/maintainer/java-team-fp/build-spec/fill-values b/t/recipes/checks/fields/maintainer/java-team-fp/build-spec/fill-values
new file mode 100644
index 0000000..f21d0dd
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/java-team-fp/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: java-team-fp
+Author: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
+Description: Java team plans to use lists.alioth.d.o
diff --git a/t/recipes/checks/fields/maintainer/java-team-fp/eval/desc b/t/recipes/checks/fields/maintainer/java-team-fp/eval/desc
new file mode 100644
index 0000000..70ded9b
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/java-team-fp/eval/desc
@@ -0,0 +1,3 @@
+Testname: java-team-fp
+Check: fields/maintainer
+See-Also: Bug#962448
diff --git a/t/recipes/checks/fields/maintainer/java-team-fp/eval/hints b/t/recipes/checks/fields/maintainer/java-team-fp/eval/hints
new file mode 100644
index 0000000..b2eda9c
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/java-team-fp/eval/hints
@@ -0,0 +1 @@
+java-team-fp (source): no-human-maintainers
diff --git a/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/fill-values b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/fill-values
new file mode 100644
index 0000000..c21a8af
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: mismatch-between-changes-and-source
+Description: Maintainer in changes files is different from source
diff --git a/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/post-build.in b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/post-build.in
new file mode 100755
index 0000000..123b424
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/build-spec/post-build.in
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="[% $build_product %]"
+
+sed -i 's/^Maintainer:.*$/Maintainer: Unknown <never@heard.of>/' "$product"
diff --git a/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/desc b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/desc
new file mode 100644
index 0000000..63105f2
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: mismatch-between-changes-and-source
+Check: fields/maintainer
diff --git a/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/hints b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/hints
new file mode 100644
index 0000000..77eff9c
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/mismatch-between-changes-and-source/eval/hints
@@ -0,0 +1 @@
+mismatch-between-changes-and-source (changes): inconsistent-maintainer Unknown <never@heard.of> (changes vs. source) Debian Lintian Maintainers <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/build-spec/fill-values b/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/build-spec/fill-values
new file mode 100644
index 0000000..29ee5d4
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: source-native
+Testname: clojure-package-java-maintainer
+Source: cool-clojure-package
+Author: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
+Description: Source name contains clojure (but not java) and is Java Team maintained
diff --git a/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/desc b/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/desc
new file mode 100644
index 0000000..140ac74
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/desc
@@ -0,0 +1,4 @@
+Testname: clojure-package-java-maintainer
+Check: fields/maintainer/team
+See-Also:
+ https://salsa.debian.org/lintian/lintian/-/merge_requests/353
diff --git a/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/hints b/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/hints
new file mode 100644
index 0000000..ae84ab7
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/team/clojure-package-java-maintainer/eval/hints
@@ -0,0 +1 @@
+cool-clojure-package (source): wrong-team java » clojure
diff --git a/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/fill-values b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/fill-values
new file mode 100644
index 0000000..bd6f233
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: ubuntu-maintainer-different
+Distribution: focal
+Description: Maintainer in changes files is different from source, but in Ubuntu (false positive)
diff --git a/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/post-build.in b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/post-build.in
new file mode 100755
index 0000000..123b424
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/build-spec/post-build.in
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="[% $build_product %]"
+
+sed -i 's/^Maintainer:.*$/Maintainer: Unknown <never@heard.of>/' "$product"
diff --git a/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/desc b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/desc
new file mode 100644
index 0000000..d649a76
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/desc
@@ -0,0 +1,5 @@
+Testname: ubuntu-maintainer-different
+Check: fields/maintainer
+Test-Against: inconsistent-maintainer
+See-Also: Ubuntu Bug#1862787,
+ https://wiki.ubuntu.com/DebianMaintainerField
diff --git a/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/hints b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/fields/maintainer/ubuntu-maintainer-different/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/control.in b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/control.in
new file mode 100644
index 0000000..13b4d9d
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: fonts
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: fonts-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (okay)
+ Font package containing fonts.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/fonts-fields-font-not-multiarch-foreign.install b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/fonts-fields-font-not-multiarch-foreign.install
new file mode 100644
index 0000000..19a2037
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/debian/fonts-fields-font-not-multiarch-foreign.install
@@ -0,0 +1,2 @@
+font-multiarch-test.ttf usr/share/fonts/truetype
+font.ttf usr/share/fonts/truetype
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/fill-values b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/fill-values
new file mode 100644
index 0000000..b60b2d7
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-font-not-multiarch-foreign
+Package-Architecture: all
+Description: Font package Multi-Arch checks
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font-multiarch-test.ttf b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font-multiarch-test.ttf
new file mode 100644
index 0000000..780ab93
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font-multiarch-test.ttf
@@ -0,0 +1,2 @@
+This isn't actually a font. The current test is based on the file
+name and doesn't care.
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font.ttf b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font.ttf
new file mode 100644
index 0000000..c118d8d
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/build-spec/orig/font.ttf
@@ -0,0 +1 @@
+This is a fake font file.
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/desc b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/desc
new file mode 100644
index 0000000..ae1fed7
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-font-not-multiarch-foreign
+Check: fields/multi-arch
diff --git a/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/hints b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/hints
new file mode 100644
index 0000000..2ac66c4
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-font-not-multiarch-foreign/eval/hints
@@ -0,0 +1 @@
+fonts-fields-font-not-multiarch-foreign (binary): font-package-not-multi-arch-foreign
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..dcb1163
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/DEBIAN/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: all
+Multi-Arch: same
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/fill-values b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/fill-values
new file mode 100644
index 0000000..96eaf1f
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: fields-multi-arch-illegal
+Description: Test package with illegal Multi-arch value
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/desc b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/desc
new file mode 100644
index 0000000..7378a25
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-multi-arch-illegal
+Check: fields/multi-arch
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/hints b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/hints
new file mode 100644
index 0000000..989d1df
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-illegal/eval/hints
@@ -0,0 +1 @@
+fields-multi-arch-illegal (binary): illegal-multi-arch-value all same
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in
new file mode 100644
index 0000000..88afb0f
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Multi-Arch: same
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-nonrel
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (false positive)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a false-positive.
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64 b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides-nonrel.lintian-overrides.amd64
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64 b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values
new file mode 100644
index 0000000..085fb2f
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-multi-arch-same-package-has-arch-specific-overrides
+Description: Test for Multi-Arch: same package with arch-specific overrides
+Package-Architecture: any
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc
new file mode 100644
index 0000000..00792c9
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-multi-arch-same-package-has-arch-specific-overrides
+Test-Architectures: amd64
+Check: fields/multi-arch
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints
new file mode 100644
index 0000000..d1730eb
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-same-package-has-arch-specific-overrides/eval/hints
@@ -0,0 +1 @@
+fields-multi-arch-same-package-has-arch-specific-overrides (source): multi-arch-same-package-has-arch-specific-overrides [debian/fields-multi-arch-same-package-has-arch-specific-overrides.lintian-overrides.amd64]
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..ca441c4
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/DEBIAN/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: [% $package_architecture %]
+Multi-Arch: cheese
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/fill-values b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/fill-values
new file mode 100644
index 0000000..59cc9f1
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: fields-multi-arch-unknown
+Description: Test package with an unknown Multi-arch value
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/desc b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/desc
new file mode 100644
index 0000000..687b40f
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-multi-arch-unknown
+Check: fields/multi-arch
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/hints b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/hints
new file mode 100644
index 0000000..5c84ca6
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch-unknown/eval/hints
@@ -0,0 +1 @@
+fields-multi-arch-unknown (binary): unknown-multi-arch-value fields-multi-arch-unknown cheese
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/debian/control.in b/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/debian/control.in
new file mode 100644
index 0000000..ab7a6a5
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-same
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Multi-Arch: same
+Description: [% $description %] - same
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a test with a valid Multi-Arch field.
+
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/fill-values b/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/fill-values
new file mode 100644
index 0000000..02565d9
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-multi-arch
+Package-Architecture: any
+Description: Tests for the Multi-Arch field
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/orig/Makefile b/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/orig/Makefile
new file mode 100644
index 0000000..6df56c1
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch/build-spec/orig/Makefile
@@ -0,0 +1,5 @@
+all:
+
+install:
+ install -d -m 0755 "$(DESTDIR)/usr/lib/package"
+ echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file"
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/desc b/t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/desc
new file mode 100644
index 0000000..a3d90af
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-multi-arch
+Test-Against:
+ illegal-multi-arch-value
+ unknown-multi-arch-value
+Check: fields/multi-arch
diff --git a/t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/hints b/t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/multi-arch/fields-multi-arch/eval/hints
diff --git a/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/fill-values b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/fill-values
new file mode 100644
index 0000000..de6afa7
--- /dev/null
+++ b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: multiple-lines-in-maintainer-field
+Description: Test for multiline maintainer field
diff --git a/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/post-build b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/post-build
new file mode 100755
index 0000000..962da9d
--- /dev/null
+++ b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/build-spec/post-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+product="$1"
+
+perl -pi -0777 -e 's/(\nMaintainer:)/$1\n/' "$product"
diff --git a/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/desc b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/desc
new file mode 100644
index 0000000..54aab13
--- /dev/null
+++ b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/desc
@@ -0,0 +1,3 @@
+Testname: multiple-lines-in-maintainer-field
+See-Also: Policy 5.6 & 7.1
+Check: fields/multi-line
diff --git a/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/hints b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/hints
new file mode 100644
index 0000000..667287e
--- /dev/null
+++ b/t/recipes/checks/fields/multi-line/multiple-lines-in-maintainer-field/eval/hints
@@ -0,0 +1 @@
+multiple-lines-in-maintainer-field (source): multiline-field Maintainer
diff --git a/t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/control.in b/t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/control.in
new file mode 100644
index 0000000..fac3281
--- /dev/null
+++ b/t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Bugs: debbugs://bugs.debian.org/
+Origin: debian
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/install b/t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/fields/origin/fields-redundant/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/fields/origin/fields-redundant/build-spec/fill-values b/t/recipes/checks/fields/origin/fields-redundant/build-spec/fill-values
new file mode 100644
index 0000000..f5e21a7
--- /dev/null
+++ b/t/recipes/checks/fields/origin/fields-redundant/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-redundant
+Description: General tests redundant fields
diff --git a/t/recipes/checks/fields/origin/fields-redundant/build-spec/orig/some-file b/t/recipes/checks/fields/origin/fields-redundant/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/fields/origin/fields-redundant/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/fields/origin/fields-redundant/eval/desc b/t/recipes/checks/fields/origin/fields-redundant/eval/desc
new file mode 100644
index 0000000..509bdd7
--- /dev/null
+++ b/t/recipes/checks/fields/origin/fields-redundant/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-redundant
+Check: fields/origin
diff --git a/t/recipes/checks/fields/origin/fields-redundant/eval/hints b/t/recipes/checks/fields/origin/fields-redundant/eval/hints
new file mode 100644
index 0000000..83a2595
--- /dev/null
+++ b/t/recipes/checks/fields/origin/fields-redundant/eval/hints
@@ -0,0 +1,2 @@
+fields-redundant (source): redundant-origin-field
+fields-redundant (binary): redundant-origin-field
diff --git a/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/control b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/rules b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/fields/origin/legacy-relations/build-spec/fill-values b/t/recipes/checks/fields/origin/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/fields/origin/legacy-relations/eval/desc b/t/recipes/checks/fields/origin/legacy-relations/eval/desc
new file mode 100644
index 0000000..8864d0b
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: fields/origin
diff --git a/t/recipes/checks/fields/origin/legacy-relations/eval/hints b/t/recipes/checks/fields/origin/legacy-relations/eval/hints
new file mode 100644
index 0000000..9ff849b
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/eval/hints
@@ -0,0 +1,3 @@
+relations (source): redundant-origin-field
+relations-multiple-libs (binary): redundant-origin-field
+relations (binary): redundant-origin-field
diff --git a/t/recipes/checks/fields/origin/legacy-relations/eval/post-test b/t/recipes/checks/fields/origin/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/origin/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/debian/control.in
new file mode 100644
index 0000000..543796e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/debian/control.in
@@ -0,0 +1,25 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], bd-conflict, revision-1 (>= 1.0-1),
+ bash, make, x-dev (>= 1.0) | ok, build-essential, new-package | xlibmesa-gl-dev,
+ xorg-dev, java-propose-classpath, python3-dev, foo [all],
+ bar [i386 any], baz [source lintian-fake-arch], baz [i386 !amd64],
+ other-pkg [kfreebsd-any], yet-another [any-powerpc],
+ packaging-dev, libdb5.1++-dev, libdb5.1-java-dev, hardening-wrapper (>= 2.2),
+ mount
+Build-Conflicts:
+ bd-conflict,
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/fill-values
new file mode 100644
index 0000000..293febc
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-depends-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-build-depends-general
+Package-Architecture: all
+Description: General tests for build dependencies
diff --git a/t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/desc b/t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/desc
new file mode 100644
index 0000000..be767ce
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-build-depends-general
+See-Also: Debian Bug#540594, Debian Bug#551793
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/hints b/t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/hints
new file mode 100644
index 0000000..fa4c200
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-depends-general/eval/hints
@@ -0,0 +1,18 @@
+fields-build-depends-general (source): ored-build-depends-on-obsolete-package Build-Depends: xlibmesa-gl-dev
+fields-build-depends-general (source): invalid-arch-string-in-source-relation source [Build-Depends: baz [source lintian-fake-arch]]
+fields-build-depends-general (source): invalid-arch-string-in-source-relation lintian-fake-arch [Build-Depends: baz [source lintian-fake-arch]]
+fields-build-depends-general (source): invalid-arch-string-in-source-relation all [Build-Depends: foo [all]]
+fields-build-depends-general (source): depends-on-packaging-dev Build-Depends
+fields-build-depends-general (source): conflicting-negation-in-source-relation Build-Depends: baz [i386 !amd64]
+fields-build-depends-general (source): build-depends-on-versioned-berkeley-db Build-Depends:libdb5.1-java-dev
+fields-build-depends-general (source): build-depends-on-versioned-berkeley-db Build-Depends:libdb5.1++-dev
+fields-build-depends-general (source): build-depends-on-python-dev-with-no-arch-any
+fields-build-depends-general (source): build-depends-on-obsolete-package Build-Depends: x-dev (>= 1.0)
+fields-build-depends-general (source): build-depends-on-obsolete-package Build-Depends: hardening-wrapper (>= 2.2) => use dpkg-buildflags instead
+fields-build-depends-general (source): build-depends-on-non-build-package Build-Depends: java-propose-classpath
+fields-build-depends-general (source): build-depends-on-metapackage Build-Depends: xorg-dev
+fields-build-depends-general (source): build-depends-on-essential-package-without-using-version Build-Depends: bash
+fields-build-depends-general (source): build-depends-on-build-essential-package-without-using-version make [Build-Depends: make]
+fields-build-depends-general (source): build-depends-on-build-essential Build-Depends
+fields-build-depends-general (source): build-depends-on-1-revision Build-Depends: revision-1 (>= 1.0-1)
+fields-build-depends-general (source): build-conflicts-with-build-dependency Build-Conflicts bd-conflict [debian/control:10]
diff --git a/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in
new file mode 100644
index 0000000..7df1b9f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in
@@ -0,0 +1,33 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ big <stage1>, bpfail1 <foobar>,
+ bpcomplicated <stage1 nocheck> <cross> <!pkg.[% $source %].foo>
+Rules-Requires-Root: no
+
+Package: [% $source %]-wrong-syntax
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Build-Profiles: <in<valid>
+Description: [% $description %] (wrong syntax)
+ Check the syntax of the Build-Profiles field
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-unknown-profile
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Build-Profiles: <!stage1 !nocheck> <!unknown> <pkg.[% $source %].foo>
+Description: [% $description %] (unknown profile)
+ Check for unknown profile names
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/fill-values
new file mode 100644
index 0000000..7fd9fd0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-build-profiles-general
+Description: General tests for build profiles
diff --git a/t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/desc b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/desc
new file mode 100644
index 0000000..910a094
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-build-profiles-general
+See-Also: Debian Bug#540594, Debian Bug#551793
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/hints b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/hints
new file mode 100644
index 0000000..485eeda
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/eval/hints
@@ -0,0 +1 @@
+fields-build-profiles-general (source): invalid-profile-name-in-source-relation foobar [Build-Depends: bpfail1 <foobar>]
diff --git a/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/debian/control.in
new file mode 100644
index 0000000..5e276a2
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Build-Depends-Arch: some-package
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/fill-values
new file mode 100644
index 0000000..a42e801
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-dep-without-arch-dep-binary
+Package-Architecture: all
+Description: Test for B-D-A and no architecture-dependent pkgs
diff --git a/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/desc b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/desc
new file mode 100644
index 0000000..e9eebc5
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-dep-without-arch-dep-binary
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/hints b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/hints
new file mode 100644
index 0000000..808ae8f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-dep-without-arch-dep-binary/eval/hints
@@ -0,0 +1 @@
+fields-dep-without-arch-dep-binary (source): build-depends-arch-without-arch-dependent-binary
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/control.in
new file mode 100644
index 0000000..054ffc3
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/control.in
@@ -0,0 +1,81 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], libtest-simple-perl (>= 0.98), perl-modules
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, xorg, bash,
+ conflict-dep, gawk | awk, new-package | xbase-clients (>= 0.1), [% $source %],
+ gaim (>= 0.1), emacs21, emacs22, emacs23, makedev, libtest-simple-perl (>= 0.98),
+ packaging-dev, xfont-a, emacs22-gtk, emacs23-el, emacs23-nox, emacs23-lucid,
+ emacs222, perl-modules, debhelper
+Breaks: package-without-version, [% $source %] (<< 0.1),
+ replaced-wo-version
+Replaces: replaced-wo-version
+Conflicts: package-with-version (<< 3.0), conflict-dep
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: lib[% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, libdb1-compat, perl-modules-5.22
+Recommends: debconf-doc, cdbs
+Conflicts: debhelper
+Section: libs
+Description: [% $description %] -- fake library
+ This is a fake library designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: py-[% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, python-minimal
+Description: [% $description %] - Fake Python package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake Python package.
+
+Package: [% $source %]-doc
+Section: doc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, [% $source %]
+Description: [% $description %] - Fake Doc package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake doc package.
+
+Package: dh-[% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, debhelper
+Description: [% $description %] - Fake Debhelper package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake Debhelper package to test false-positives in
+ binary-package-depends-on-toolchain-package.
+
+Package: [% $source %]-source
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, debhelper
+Description: [% $description %] - Fake DKMS-like package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The fake DKMS-like package to test false-positives in
+ binary-package-depends-on-toolchain-package.
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/install b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/fill-values
new file mode 100644
index 0000000..6e84753
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-depends-general
+Description: General tests for binary package dependencies
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/orig/some-file b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-general/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-general/eval/desc b/t/recipes/checks/fields/package-relations/fields-depends-general/eval/desc
new file mode 100644
index 0000000..4a65de6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-depends-general
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-general/eval/hints b/t/recipes/checks/fields/package-relations/fields-depends-general/eval/hints
new file mode 100644
index 0000000..37ffd89
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-general/eval/hints
@@ -0,0 +1,30 @@
+fields-depends-general (source): virtual-package-depends-without-real-package-depends Build-Depends: perl-modules
+fields-depends-general (source): package-relation-with-perl-modules Build-Depends: perl-modules
+py-fields-depends-general (binary): depends-on-python-minimal Depends
+libfields-depends-general (binary): package-relation-with-perl-modules Depends: perl-modules-5.22
+libfields-depends-general (binary): lib-recommends-documentation Recommends: debconf-doc
+libfields-depends-general (binary): depends-on-libdb1-compat Depends
+libfields-depends-general (binary): binary-package-depends-on-toolchain-package Recommends: cdbs
+fields-depends-general-doc (binary): doc-package-depends-on-main-package Depends
+fields-depends-general (binary): virtual-package-depends-without-real-package-depends Depends: perl-modules
+fields-depends-general (binary): package-relation-with-self Breaks: fields-depends-general (<< 0.1)
+fields-depends-general (binary): package-relation-with-perl-modules Depends: perl-modules
+fields-depends-general (binary): package-depends-on-an-x-font-package Depends: xfont-a
+fields-depends-general (binary): ored-depends-on-obsolete-package Depends: xbase-clients (>= 0.1)
+fields-depends-general (binary): needlessly-depends-on-awk Depends
+fields-depends-general (binary): depends-on-packaging-dev Depends
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs23-nox
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs23-lucid
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs23-el
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs23
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs22-gtk
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs22
+fields-depends-general (binary): depends-on-old-emacs Depends: emacs21
+fields-depends-general (binary): depends-on-obsolete-package Depends: gaim (>= 0.1)
+fields-depends-general (binary): depends-on-metapackage Depends: xorg
+fields-depends-general (binary): depends-on-essential-package-without-using-version Depends: bash
+fields-depends-general (binary): depends-exclusively-on-makedev Depends
+fields-depends-general (binary): conflicts-with-version package-with-version (<< 3.0)
+fields-depends-general (binary): conflicts-with-dependency Depends conflict-dep
+fields-depends-general (binary): breaks-without-version package-without-version
+fields-depends-general (binary): binary-package-depends-on-toolchain-package Depends: debhelper
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/debian/control.in
new file mode 100644
index 0000000..94828b8
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], xorg-dev
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, xorg
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/fill-values
new file mode 100644
index 0000000..2392a9b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-depends-metapackage
+Description: Tests for package dependencies in a metapackage
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/desc b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/desc
new file mode 100644
index 0000000..d39a20b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-depends-metapackage
+Test-Against: depends-on-metapackage
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/hints b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/hints
new file mode 100644
index 0000000..252a42e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-metapackage/eval/hints
@@ -0,0 +1 @@
+fields-depends-metapackage (source): build-depends-on-metapackage Build-Depends: xorg-dev
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/debian/control.in
new file mode 100644
index 0000000..9702137
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo [linux-any], bar [i386],
+ baz [amd64]
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/fill-values
new file mode 100644
index 0000000..579e2cb
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-depends-wildcard
+Package-Architecture: any
+Description: Check package dependencies with arch wildcards
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/orig/Makefile b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/orig/Makefile
new file mode 100644
index 0000000..6df56c1
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/build-spec/orig/Makefile
@@ -0,0 +1,5 @@
+all:
+
+install:
+ install -d -m 0755 "$(DESTDIR)/usr/lib/package"
+ echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file"
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/desc b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/desc
new file mode 100644
index 0000000..23099a8
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-depends-wildcard
+Test-Against:
+ bad-relation
+ invalid-arch-string-in-source-relation
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/hints b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-depends-wildcard/eval/hints
diff --git a/t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/debian/control.in
new file mode 100644
index 0000000..b34b15b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl (>= 5.10) | libmodule-build-perl
+Build-Depends-Indep: perl (>= 5.10)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/fill-values
new file mode 100644
index 0000000..f54e3f5
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-duplicate-build/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-duplicate-build
+Package-Architecture: all
+Description: Check for duplicate build relations
diff --git a/t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/desc b/t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/desc
new file mode 100644
index 0000000..1467f4f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-duplicate-build
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/hints b/t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/hints
new file mode 100644
index 0000000..2c513d3
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-duplicate-build/eval/hints
@@ -0,0 +1 @@
+fields-duplicate-build (source): redundant-build-prerequisites perl (>= 5.10), perl (>= 5.10) | libmodule-build-perl
diff --git a/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/package-relations/fields-general-bad/eval/desc b/t/recipes/checks/fields/package-relations/fields-general-bad/eval/desc
new file mode 100644
index 0000000..3ccfd07
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-general-bad/eval/hints b/t/recipes/checks/fields/package-relations/fields-general-bad/eval/hints
new file mode 100644
index 0000000..2f60cea
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general-bad/eval/hints
@@ -0,0 +1,4 @@
+fields-general-BAD? (binary): bad-version-in-relation Recommends: g++ (>= s4.1)
+fields-general-BAD? (binary): bad-version-in-relation Depends: other-package (>= 1.0?)
+fields-general-BAD? (binary): bad-relation Depends: another-package (>< 1.0)
+fields-general-BAD? (binary): alternates-not-allowed Conflicts
diff --git a/t/recipes/checks/fields/package-relations/fields-general/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-general/build-spec/debian/control.in
new file mode 100644
index 0000000..f5aa07a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general/build-spec/debian/control.in
@@ -0,0 +1,46 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+# Whoops, typo
+Homepage: ttp://lintian.debian.org/
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dbg)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (dbg)g.
+# ... and some unneeded <>
+Homepage: <http://lintian.debian.org/>
+
+Package: [% $source %]-debug
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (debug)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (debug).
+
diff --git a/t/recipes/checks/fields/package-relations/fields-general/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-general/build-spec/fill-values
new file mode 100644
index 0000000..11b0c69
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-general
+Description: Test for tags related to minor field issues
diff --git a/t/recipes/checks/fields/package-relations/fields-general/eval/desc b/t/recipes/checks/fields/package-relations/fields-general/eval/desc
new file mode 100644
index 0000000..9807f78
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-general/eval/hints b/t/recipes/checks/fields/package-relations/fields-general/eval/hints
new file mode 100644
index 0000000..f742e4d
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-general/eval/hints
@@ -0,0 +1 @@
+fields-general (source): dbg-package-missing-depends fields-general-dbg
diff --git a/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/debian/control.in
new file mode 100644
index 0000000..cadcd5d
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Build-Depends-Indep: some-package
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/fill-values
new file mode 100644
index 0000000..3d13a3f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-indep-without-arch-indep
+Package-Architecture: any
+Description: Test for B-D-I and no indep pkgs
diff --git a/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/orig/Makefile b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/orig/Makefile
new file mode 100644
index 0000000..6df56c1
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/build-spec/orig/Makefile
@@ -0,0 +1,5 @@
+all:
+
+install:
+ install -d -m 0755 "$(DESTDIR)/usr/lib/package"
+ echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file"
diff --git a/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/desc b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/desc
new file mode 100644
index 0000000..9a95dcb
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-indep-without-arch-indep
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/hints b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/hints
new file mode 100644
index 0000000..346ffd3
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-indep-without-arch-indep/eval/hints
@@ -0,0 +1 @@
+fields-indep-without-arch-indep (source): build-depends-indep-without-arch-indep
diff --git a/t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/control.in
new file mode 100644
index 0000000..6e1b3e8
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/control.in
@@ -0,0 +1,37 @@
+Source: [% $source %]
+Priority: optional
+Section: java
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], openjdk-6-doc, openjdk-6-jdk, java-compiler
+Rules-Requires-Root: no
+
+Package: lib[% $source %]-java
+Architecture: all
+Depends: ${misc:Depends},
+ default-jre-headless | java-runtime-headless |
+ java2-runtime-headless | kaffe | gcj-jdk |
+ openjdk-6-jre | gcj-4.5-jre
+Suggests: libservlet2.5-java
+Recommends: libservlet3.0-java
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-java-doc
+Architecture: all
+Section: doc
+Depends: ${misc:Depends}
+Recommends: openjdk-6-doc
+# Negative testing as well, this should not be triggered.
+Replaces: openjdk-6-doc
+Description: [% $description %] - API
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Doc package.
+
diff --git a/t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/install b/t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-java/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/fields/package-relations/fields-java/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-java/build-spec/fill-values
new file mode 100644
index 0000000..141e8e4
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-java/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-java
+Description: General tests for java package (build) dependencies
diff --git a/t/recipes/checks/fields/package-relations/fields-java/build-spec/orig/some-file b/t/recipes/checks/fields/package-relations/fields-java/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-java/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/fields/package-relations/fields-java/eval/desc b/t/recipes/checks/fields/package-relations/fields-java/eval/desc
new file mode 100644
index 0000000..1cd4aeb
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-java/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-java
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-java/eval/hints b/t/recipes/checks/fields/package-relations/fields-java/eval/hints
new file mode 100644
index 0000000..03f863f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-java/eval/hints
@@ -0,0 +1,9 @@
+fields-java (source): virtual-package-depends-without-real-package-depends Build-Depends: java-compiler
+fields-java (source): build-depends-on-specific-java-doc-package openjdk-6-doc
+fields-java (source): build-depends-on-obsolete-package Build-Depends: openjdk-6-jdk
+fields-java (source): build-depends-on-an-obsolete-java-package java-compiler
+libfields-java-java-doc (binary): depends-on-specific-java-doc-package Recommends
+libfields-java-java (binary): ored-depends-on-obsolete-package Depends: openjdk-6-jre
+libfields-java-java (binary): needless-suggest-recommend-libservlet-java libservlet3.0-java
+libfields-java-java (binary): needless-suggest-recommend-libservlet-java libservlet2.5-java
+libfields-java-java (binary): needless-dependency-on-jre
diff --git a/t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/debian/control.in
new file mode 100644
index 0000000..0456c0a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Build-Depends-Indep: libmodule-build-perl, libmodule-build-tiny-perl
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/fill-values
new file mode 100644
index 0000000..500130f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-module-build-perl/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-module-build-perl
+Package-Architecture: all
+Description: Test some libmodule-build(-tiny)-perl checks
diff --git a/t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/desc b/t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/desc
new file mode 100644
index 0000000..4120397
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-module-build-perl
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/hints b/t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/hints
new file mode 100644
index 0000000..b6dad72
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-module-build-perl/eval/hints
@@ -0,0 +1,2 @@
+fields-module-build-perl (source): libmodule-build-tiny-perl-needs-to-be-in-build-depends
+fields-module-build-perl (source): libmodule-build-perl-needs-to-be-in-build-depends
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/compat.in b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/control.in
new file mode 100644
index 0000000..f7a6221
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/control.in
@@ -0,0 +1,52 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends:
+ debhelper (>= [% $dh_compat_level %]~),
+ default-mta | mail-transport-agent,
+ default-mta
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]-bad-1
+Architecture: all
+# default-mta missing mail-transport-agent
+Depends: ${misc:Depends}, default-mta, exim4, nullmailer
+Pre-Depends: mail-transport-agent
+Recommends: default-mta, mail-transport-agent
+Suggests: exim4 | mail-transport-agent
+Description: [% $description %] (bad set 1)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package has incorrect dependencies (1).
+
+Package: [% $source %]-bad-2
+Architecture: all
+# default-mta missing
+Depends: ${misc:Depends}, exim4 | postfix | mail-transport-agent
+# default-mta not listed first
+Pre-Depends: exim4 | default-mta | mail-transport-agent
+Description: [% $description %] (bad set 2)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package has incorrect dependencies (2).
+
+Package: [% $source %]-good-1
+Architecture: all
+Depends: ${misc:Depends}, default-mta | mail-transport-agent
+Pre-Depends: default-mta | exim4 | mail-transport-agent
+Recommends: default-mta | mail-transport-agent | exim4
+Suggests: lintian
+Provides: mail-transport-agent
+Description: [% $description %] (good 1)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package
+ .
+ This package has correct dependencies.
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/rules
new file mode 100644
index 0000000..c3e3793
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_install::
+ set -ex; for X in $$(dh_listpackages); do \
+ dh_install -p$$X some-file.txt usr/share/$$X; \
+ done
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/fill-values
new file mode 100644
index 0000000..9d49c89
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-mua
+Description: Test for tags related to MUA etc.
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/build-spec/orig/some-file.txt b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/orig/some-file.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/build-spec/orig/some-file.txt
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/eval/desc b/t/recipes/checks/fields/package-relations/fields-mua/eval/desc
new file mode 100644
index 0000000..fcae7a6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-mua
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-mua/eval/hints b/t/recipes/checks/fields/package-relations/fields-mua/eval/hints
new file mode 100644
index 0000000..78f0222
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-mua/eval/hints
@@ -0,0 +1,6 @@
+fields-mua (source): default-mta-dependency-does-not-specify-mail-transport-agent Build-Depends: debhelper (>= 13~), default-mta
+fields-mua-bad-2 (binary): mail-transport-agent-dependency-does-not-specify-default-mta Depends: exim4 | postfix | mail-transport-agent
+fields-mua-bad-2 (binary): default-mta-dependency-not-listed-first Pre-Depends: exim4 | default-mta | mail-transport-agent
+fields-mua-bad-1 (binary): virtual-package-depends-without-real-package-depends Pre-Depends: mail-transport-agent
+fields-mua-bad-1 (binary): mail-transport-agent-dependency-does-not-specify-default-mta Pre-Depends: mail-transport-agent
+fields-mua-bad-1 (binary): default-mta-dependency-does-not-specify-mail-transport-agent Depends: default-mta, exim4, nullmailer
diff --git a/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/debian/control.in
new file mode 100644
index 0000000..07de573
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/debian/control.in
@@ -0,0 +1,22 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0,
+ tk8.2, tk8.3,
+ tcl8.0, tcl8.2,
+ tclx76, tclx8.0.4, tclx8.2,
+ libpng2, libpng3
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/fill-values
new file mode 100644
index 0000000..24a7c93
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-multiple-x-deps
+Description: Tests for multiple depends on X
diff --git a/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/desc b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/desc
new file mode 100644
index 0000000..6abd4de
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-multiple-x-deps
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/hints b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/hints
new file mode 100644
index 0000000..94dff61
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-multiple-x-deps/eval/hints
@@ -0,0 +1,5 @@
+fields-multiple-x-deps (binary): package-depends-on-multiple-tk-versions tk8.2 tk8.3
+fields-multiple-x-deps (binary): package-depends-on-multiple-tclx-versions tclx76 tclx8.0.4 tclx8.2
+fields-multiple-x-deps (binary): package-depends-on-multiple-tcl-versions tcl8.0 tcl8.2
+fields-multiple-x-deps (binary): package-depends-on-multiple-libstdc-versions libstdc++2.10 libstdc++2.10-glibc2.2 libstdc++3.0
+fields-multiple-x-deps (binary): package-depends-on-multiple-libpng-versions libpng2 libpng3
diff --git a/t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..194fe95
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/DEBIAN/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: [% $package_architecture %]
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Conflicts: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/fill-values
new file mode 100644
index 0000000..74fe997
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: fields-obsolete-relation
+Description: Test for obsolete relation syntax in a binary package
diff --git a/t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/desc b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/desc
new file mode 100644
index 0000000..938a601
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-obsolete-relation
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/hints b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/hints
new file mode 100644
index 0000000..847c878
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-obsolete-relation/eval/hints
@@ -0,0 +1,2 @@
+fields-obsolete-relation (binary): obsolete-relation-form Conflicts: libsqlite3-0 (< 3.6.12)
+fields-obsolete-relation (binary): conflicts-with-version libsqlite3-0 (< 3.6.12)
diff --git a/t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/debian/control.in
new file mode 100644
index 0000000..5cbe5b4
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/debian/control.in
@@ -0,0 +1,14 @@
+Source: [% $source %]
+Section: devel
+Priority: optional
+Maintainer: [% $author %]
+Build-Depends: [% $build_depends %], g++ (>= s4.0)
+Standards-Version: [% $standards_version %]
+
+Package: [% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/fill-values
new file mode 100644
index 0000000..503dcc2
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-src-bad-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: fields-src-bad-version
+Version: 1
+Description: Test for d/control with syntax errors
diff --git a/t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/desc b/t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/desc
new file mode 100644
index 0000000..3b28648
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-src-bad-version
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/hints b/t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/hints
new file mode 100644
index 0000000..84ee7fc
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-src-bad-version/eval/hints
@@ -0,0 +1 @@
+fields-src-bad-version (source): bad-version-in-relation Build-Depends: g++ (>= s4.0)
diff --git a/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/control.in
new file mode 100644
index 0000000..4657b6e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/control.in
@@ -0,0 +1,32 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, httpd
+Provides:
+ 123456789,
+ [% $source %]-${source:Version},
+ arch-specific [i386],
+ provides-are-allowed [!i386],
+ valid-versioned-provides (= 1.0)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]2
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: a, iNvAlId-NaMe, versioned (>> 0.1)
+Description: [% $description %] - bogus
+ This is a bogus test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/install b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/install
new file mode 100644
index 0000000..6e59b8c
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/lib/lintian
diff --git a/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/fill-values b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/fill-values
new file mode 100644
index 0000000..cde3e6b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-virtual-packages
+Description: Tests related to virtual packages
diff --git a/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/orig/some-file b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-virtual-packages/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/desc b/t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/desc
new file mode 100644
index 0000000..cb0f562
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-virtual-packages
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/hints b/t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/hints
new file mode 100644
index 0000000..70699dd
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/fields-virtual-packages/eval/hints
@@ -0,0 +1,4 @@
+fields-virtual-packages2 (binary): invalid-versioned-provides versioned (>> 0.1)
+fields-virtual-packages2 (binary): bad-provided-package-name iNvAlId-NaMe
+fields-virtual-packages2 (binary): bad-provided-package-name a
+fields-virtual-packages (binary): virtual-package-depends-without-real-package-depends Depends: httpd
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/control b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/templates b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/fill-values b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/eval/desc b/t/recipes/checks/fields/package-relations/legacy-binary/eval/desc
new file mode 100644
index 0000000..5bf368b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/eval/hints b/t/recipes/checks/fields/package-relations/legacy-binary/eval/hints
new file mode 100644
index 0000000..af3ad3a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): depends-on-metapackage Pre-Depends: xorg
diff --git a/t/recipes/checks/fields/package-relations/legacy-binary/eval/post-test b/t/recipes/checks/fields/package-relations/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/control b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/fill-values b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/eval/desc b/t/recipes/checks/fields/package-relations/legacy-debconf/eval/desc
new file mode 100644
index 0000000..cf9edea
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/eval/hints b/t/recipes/checks/fields/package-relations/legacy-debconf/eval/hints
new file mode 100644
index 0000000..defe466
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/eval/hints
@@ -0,0 +1 @@
+debconf (source): build-depends-on-obsolete-package Build-Depends: dpatch
diff --git a/t/recipes/checks/fields/package-relations/legacy-debconf/eval/post-test b/t/recipes/checks/fields/package-relations/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/control b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/fill-values b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/eval/desc b/t/recipes/checks/fields/package-relations/legacy-fields/eval/desc
new file mode 100644
index 0000000..a435fe4
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/eval/hints b/t/recipes/checks/fields/package-relations/legacy-fields/eval/hints
new file mode 100644
index 0000000..e334541
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/eval/hints
@@ -0,0 +1 @@
+fields (binary): depends-on-python-minimal Depends
diff --git a/t/recipes/checks/fields/package-relations/legacy-fields/eval/post-test b/t/recipes/checks/fields/package-relations/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/control b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..c5596a2
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,43 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Depends: test, python-support
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/fill-values b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/eval/desc b/t/recipes/checks/fields/package-relations/legacy-filenames/eval/desc
new file mode 100644
index 0000000..66f25fc
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/eval/hints b/t/recipes/checks/fields/package-relations/legacy-filenames/eval/hints
new file mode 100644
index 0000000..a278f83
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): depends-on-obsolete-package Depends: python-support => use dh_python2 instead
diff --git a/t/recipes/checks/fields/package-relations/legacy-filenames/eval/post-test b/t/recipes/checks/fields/package-relations/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/control b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..95c669c
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl, python3-all-dev
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..4773780
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,52 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test that python-all-dev satisfies a Python requirement.
+ python -V || true
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/fill-values b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/eval/desc b/t/recipes/checks/fields/package-relations/legacy-relations/eval/desc
new file mode 100644
index 0000000..a826da6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/eval/hints b/t/recipes/checks/fields/package-relations/legacy-relations/eval/hints
new file mode 100644
index 0000000..8f80c42
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/eval/hints
@@ -0,0 +1,39 @@
+relations (source): virtual-package-depends-without-real-package-depends Build-Depends: mail-transport-agent
+relations (source): redundant-build-prerequisites perl, perl (>= 5.0)
+relations (source): redundant-build-prerequisites foo (<< 4) [!amd64 !i386], foo (= 3) [!amd64 !i386]
+relations (source): ored-build-depends-on-obsolete-package Build-Depends-Indep: gs
+relations (source): mail-transport-agent-dependency-does-not-specify-default-mta Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl, python3-all-dev
+relations (source): invalid-arch-string-in-source-relation test [Build-Conflicts: bar [alpha test]]
+relations (source): build-depends-on-python-dev-with-no-arch-any
+relations (source): build-depends-on-essential-package-without-using-version Build-Depends: findutils
+relations (source): build-depends-on-essential-package-without-using-version Build-Depends-Indep: bash
+relations (source): build-depends-on-build-essential-package-without-using-version make [Build-Depends-Indep: make]
+relations (source): build-depends-on-build-essential-package-without-using-version libc6-dev [Build-Depends: libc6-dev]
+relations (source): build-depends-on-build-essential Build-Depends-Indep
+relations (source): build-depends-on-1-revision Build-Depends-Indep: libfoo (>= 1.2-1)
+relations (source): build-conflicts-with-build-dependency Build-Conflicts-Indep debmake [!powerpc] [debian/control:14]
+relations (source): build-conflicts-with-build-dependency Build-Conflicts bar [alpha test] [debian/control:13]
+relations-multiple-libs (binary): package-depends-on-multiple-tk-versions tk8.2 tk8.3
+relations-multiple-libs (binary): package-depends-on-multiple-tcl-versions tcl8.0 tcl8.2
+relations-multiple-libs (binary): package-depends-on-multiple-libstdc-versions libstdc++2.10 libstdc++2.10-glibc2.2 libstdc++3.0
+relations-multiple-libs (binary): package-depends-on-multiple-libpng-versions libpng2 libpng3
+relations-multiple-libs (binary): ored-depends-on-obsolete-package Suggests: gs
+relations-multiple-libs (binary): depends-on-obsolete-package Suggests: x-dev
+relations-multiple-libs (binary): depends-on-obsolete-package Recommends: gs-gpl
+relations-multiple-libs (binary): depends-on-obsolete-package Recommends: gs
+relations-multiple-libs (binary): conflicts-with-dependency Depends libpng2
+relations-multiple-libs (binary): breaks-without-version libpng2
+relations (binary): virtual-package-depends-without-real-package-depends Pre-Depends: awk
+relations (binary): virtual-package-depends-without-real-package-depends Depends: mail-transport-agent
+relations (binary): package-relation-with-self Depends: relations (<< 3)
+relations (binary): ored-depends-on-obsolete-package Recommends: gs-aladdin
+relations (binary): needlessly-depends-on-awk Pre-Depends
+relations (binary): mail-transport-agent-dependency-does-not-specify-default-mta Depends: relations (<< 3), dpkg, bash (>> 2.0), mail-transport-agent, foo (>> 2.0), foo (<< 2.2), coreutils, null (>= 0), makedev
+relations (binary): depends-on-old-emacs Recommends: emacs21
+relations (binary): depends-on-obsolete-package Recommends: gs
+relations (binary): depends-on-essential-package-without-using-version Depends: dpkg
+relations (binary): depends-on-essential-package-without-using-version Depends: coreutils
+relations (binary): depends-exclusively-on-makedev Depends
+relations (binary): conflicts-with-version foobar (<< 5+5)
+relations (binary): conflicts-with-dependency Depends relations
+relations (binary): conflicts-with-dependency Depends foo
diff --git a/t/recipes/checks/fields/package-relations/legacy-relations/eval/post-test b/t/recipes/checks/fields/package-relations/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/fill-values b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/pre-build b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/eval/desc b/t/recipes/checks/fields/package-relations/legacy-scripts/eval/desc
new file mode 100644
index 0000000..d95817a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/eval/hints b/t/recipes/checks/fields/package-relations/legacy-scripts/eval/hints
new file mode 100644
index 0000000..3ab9282
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/eval/hints
@@ -0,0 +1,2 @@
+scripts (source): build-depends-on-obsolete-package Build-Depends-Indep: dpatch
+scripts (binary): depends-on-obsolete-package Depends: ruby1.8
diff --git a/t/recipes/checks/fields/package-relations/legacy-scripts/eval/post-test b/t/recipes/checks/fields/package-relations/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/README.source b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/README.source
new file mode 100644
index 0000000..4ff54b4
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/README.source
@@ -0,0 +1 @@
+I am using dpatch.
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list
new file mode 100644
index 0000000..52ee366
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list
@@ -0,0 +1,12 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
+05_dep3.diff
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00options b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff
new file mode 100644
index 0000000..5cbb237
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/debian/patches/05_dep3.diff
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 05_dep3.diff by Russ Allbery <rra@debian.org>
+#
+# Description: Patch using the DEP 3 patch header
+# Author: Russ Allbery <rra@debian.org>
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/fill-values b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/fill-values
new file mode 100644
index 0000000..cb818e9
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: patch-systems-dpatch-description
+Description: Test patch-system tags for a dpatch package
+Extra-Build-Depends: dpatch
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/desc b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/desc
new file mode 100644
index 0000000..11d661f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-dpatch-description
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/hints b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/hints
new file mode 100644
index 0000000..a6a702e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-dpatch-description/eval/hints
@@ -0,0 +1 @@
+patch-systems-dpatch-description (source): build-depends-on-obsolete-package Build-Depends: dpatch
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/README.source b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/README.source
new file mode 100644
index 0000000..052084e
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some stuff about quilt here.
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README.patches b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README.patches
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/README.patches
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-commented-out
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-mentioned-in-vendor-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/file-not-referenced-in-series
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/series b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..da9ddb2
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/series
@@ -0,0 +1,6 @@
+# tries to create an exising file, which fails in dpkg-source
+# some-file
+some-other-file -p0
+# non-existent patches trigger an error in dpkg-source
+# some-nonexistent-patch
+# file-commented-out
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-file b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-file
new file mode 100644
index 0000000..7749d40
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-file
@@ -0,0 +1,11 @@
+Some regular patch creating a file.
+
+--- /dev/null
++++ debian/debian/some-file
+@@ -0,0 +1,6 @@
++Some
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-other-file b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
new file mode 100644
index 0000000..ed24c8f
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/some-other-file
@@ -0,0 +1,12 @@
+Some -p0 patch creating a file.
+
+--- /dev/null
++++ debian/some-other-file
+@@ -0,0 +1,7 @@
++Some
++other
++file
++created
++in
++debian
++directory.
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/README b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
new file mode 100644
index 0000000..843d249
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/README
@@ -0,0 +1 @@
+false positive for patch-file-present-but-not-mentioned-in-series tag
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2 b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/subdir/file-not-referenced-in-series-2
@@ -0,0 +1 @@
+foo
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
new file mode 100644
index 0000000..4232ed0
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/debian/patches/vendorname.series
@@ -0,0 +1 @@
+file-mentioned-in-vendor-series
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/diff/README b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/diff/README
new file mode 100644
index 0000000..55d9771
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/diff/README
@@ -0,0 +1 @@
+Debian README
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/fill-values b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/fill-values
new file mode 100644
index 0000000..ced4b7a
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: patch-systems-quilt-general
+Skeleton: upload-non-native
+Extra-Build-Depends: quilt, dpatch
+Description: General tests of a quilt patch system
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/desc b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/desc
new file mode 100644
index 0000000..a871f28
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: patch-systems-quilt-general
+Check: fields/package-relations
diff --git a/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/hints b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/hints
new file mode 100644
index 0000000..03ebe4b
--- /dev/null
+++ b/t/recipes/checks/fields/package-relations/patch-systems-quilt-general/eval/hints
@@ -0,0 +1 @@
+patch-systems-quilt-general (source): build-depends-on-obsolete-package Build-Depends: dpatch
diff --git a/t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/debian/control.in b/t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/debian/control.in
new file mode 100644
index 0000000..7aed5bd
--- /dev/null
+++ b/t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Package-Type: deb
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/fill-values b/t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/fill-values
new file mode 100644
index 0000000..48373fb
--- /dev/null
+++ b/t/recipes/checks/fields/package-type/explicit-type-deb/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: explicit-type-deb
+Description: Explicit type deb is discouraged by policy
diff --git a/t/recipes/checks/fields/package-type/explicit-type-deb/eval/desc b/t/recipes/checks/fields/package-type/explicit-type-deb/eval/desc
new file mode 100644
index 0000000..335b1b8
--- /dev/null
+++ b/t/recipes/checks/fields/package-type/explicit-type-deb/eval/desc
@@ -0,0 +1,3 @@
+Testname: explicit-type-deb
+Check: fields/package-type
+See-Also: Policy 5.6.28, Debian Bug#951513, Debian Bug#953857
diff --git a/t/recipes/checks/fields/package-type/explicit-type-deb/eval/hints b/t/recipes/checks/fields/package-type/explicit-type-deb/eval/hints
new file mode 100644
index 0000000..f2b4967
--- /dev/null
+++ b/t/recipes/checks/fields/package-type/explicit-type-deb/eval/hints
@@ -0,0 +1 @@
+explicit-type-deb (binary): explicit-default-in-package-type
diff --git a/t/recipes/checks/fields/package/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/package/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/package/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/package/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/package/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/package/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/package/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/package/fields-general-bad/eval/desc b/t/recipes/checks/fields/package/fields-general-bad/eval/desc
new file mode 100644
index 0000000..f1471a4
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/package
diff --git a/t/recipes/checks/fields/package/fields-general-bad/eval/hints b/t/recipes/checks/fields/package/fields-general-bad/eval/hints
new file mode 100644
index 0000000..5f6671f
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-general-bad/eval/hints
@@ -0,0 +1,2 @@
+fields-general-BAD? (binary): package-not-lowercase
+fields-general-BAD? (binary): bad-package-name
diff --git a/t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/debian/control.in b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/debian/control.in
new file mode 100644
index 0000000..5a8f490
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: doc
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-docs
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/fill-values b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/fill-values
new file mode 100644
index 0000000..7defdcb
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-unusual-doc-package-name
+Package-Architecture: all
+Description: Check for -docs packages
diff --git a/t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/desc b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/desc
new file mode 100644
index 0000000..ec610fc
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-unusual-doc-package-name
+Check: fields/package
diff --git a/t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/hints b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/hints
new file mode 100644
index 0000000..ff4d810
--- /dev/null
+++ b/t/recipes/checks/fields/package/fields-unusual-doc-package-name/eval/hints
@@ -0,0 +1 @@
+fields-unusual-doc-package-name-docs (binary): unusual-documentation-package-name
diff --git a/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/control.in b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/control.in
new file mode 100644
index 0000000..1db6f3b
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/control.in
@@ -0,0 +1,55 @@
+Source: [% $source %]
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: lib[% $source %]42
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Priority: important
+Description: [% $description %] (lib)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-dev
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Section: libdevel
+Priority: standard
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ (This is a dev package.)
+
+Package: lib[% $source %]-false-positive-bin
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Section: libdevel
+Priority: required
+Description: [% $description %] (false positive bin)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ (This is a -bin false positive)
+
+Package: lib[% $source %]-false-positive-dev
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Section: libdevel
+Priority: optional
+Description: [% $description %] (false positive)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ (This is a -dev false positive)
diff --git a/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/rules b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/rules
new file mode 100644
index 0000000..6dd864a
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ set -e ; for P in $$(dh_listpackages -a) ; do \
+ dh_install -p$$P some-file usr/lib/$$P ; \
+ done
diff --git a/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/fill-values b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/fill-values
new file mode 100644
index 0000000..238669e
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-excessive-priority-for-library-package
+Description: Library packages with excessive Priority field
diff --git a/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/desc b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/desc
new file mode 100644
index 0000000..3256006
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-excessive-priority-for-library-package
+Check: fields/priority
diff --git a/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/hints b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/hints
new file mode 100644
index 0000000..c04c9f2
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-excessive-priority-for-library-package/eval/hints
@@ -0,0 +1,2 @@
+libfields-excessive-priority-for-library-package42 (binary): excessive-priority-for-library-package important
+libfields-excessive-priority-for-library-package-dev (binary): excessive-priority-for-library-package standard
diff --git a/t/recipes/checks/fields/priority/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/priority/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/priority/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/priority/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/priority/fields-general-bad/eval/desc b/t/recipes/checks/fields/priority/fields-general-bad/eval/desc
new file mode 100644
index 0000000..cce1ebb
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/priority
diff --git a/t/recipes/checks/fields/priority/fields-general-bad/eval/hints b/t/recipes/checks/fields/priority/fields-general-bad/eval/hints
new file mode 100644
index 0000000..0c94a86
--- /dev/null
+++ b/t/recipes/checks/fields/priority/fields-general-bad/eval/hints
@@ -0,0 +1 @@
+fields-general-BAD? (binary): unknown-priority is weird
diff --git a/t/recipes/checks/fields/priority/priority-extra/build-spec/fill-values b/t/recipes/checks/fields/priority/priority-extra/build-spec/fill-values
new file mode 100644
index 0000000..28a70be
--- /dev/null
+++ b/t/recipes/checks/fields/priority/priority-extra/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: priority-extra
+Skeleton: upload-native
+Description: Test check for old priority extra
+Priority: extra
diff --git a/t/recipes/checks/fields/priority/priority-extra/eval/desc b/t/recipes/checks/fields/priority/priority-extra/eval/desc
new file mode 100644
index 0000000..362d66b
--- /dev/null
+++ b/t/recipes/checks/fields/priority/priority-extra/eval/desc
@@ -0,0 +1,2 @@
+Testname: priority-extra
+Check: fields/priority
diff --git a/t/recipes/checks/fields/priority/priority-extra/eval/hints b/t/recipes/checks/fields/priority/priority-extra/eval/hints
new file mode 100644
index 0000000..1dc8c92
--- /dev/null
+++ b/t/recipes/checks/fields/priority/priority-extra/eval/hints
@@ -0,0 +1 @@
+priority-extra (binary): priority-extra-is-replaced-by-priority-optional
diff --git a/t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/fill-values b/t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/fill-values
new file mode 100644
index 0000000..6a6b7f8
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-missing-fields
+Description: Test for changes missing fields
diff --git a/t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/test.changes.in b/t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/test.changes.in
new file mode 100644
index 0000000..49c165a
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/changes-missing-fields/build-spec/test.changes.in
@@ -0,0 +1,9 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Maintainer: [% $author %]
+Changed-By: [% $author %]
diff --git a/t/recipes/checks/fields/recommended/changes-missing-fields/eval/desc b/t/recipes/checks/fields/recommended/changes-missing-fields/eval/desc
new file mode 100644
index 0000000..e130c42
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/changes-missing-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-missing-fields
+Check: fields/recommended
diff --git a/t/recipes/checks/fields/recommended/changes-missing-fields/eval/hints b/t/recipes/checks/fields/recommended/changes-missing-fields/eval/hints
new file mode 100644
index 0000000..bf35725
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/changes-missing-fields/eval/hints
@@ -0,0 +1 @@
+changes-missing-fields (changes): recommended-field test.changes Urgency
diff --git a/t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/control.in b/t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/rules b/t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/fields/recommended/control-file-general/build-spec/fill-values b/t/recipes/checks/fields/recommended/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/fields/recommended/control-file-general/eval/desc b/t/recipes/checks/fields/recommended/control-file-general/eval/desc
new file mode 100644
index 0000000..c21d5bb
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/control-file-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: control-file-general
+See-Also: Debian Bug#30020, Debian Bug#409099, Debian Bug#516706,
+ Debian Bug#533202, Debian Bug#557971, Debian Bug#573399, Debian Bug#580494,
+ Debian Bug#657110
+Check: fields/recommended
diff --git a/t/recipes/checks/fields/recommended/control-file-general/eval/hints b/t/recipes/checks/fields/recommended/control-file-general/eval/hints
new file mode 100644
index 0000000..7dd5437
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): recommended-field (in section for source) Section [debian/control:1]
diff --git a/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..cfbac73
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/DEBIAN/control.in
@@ -0,0 +1,8 @@
+Section: [% $section %]
+Priority: optional
+Depends: some-pkg
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/fill-values b/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/fill-values
new file mode 100644
index 0000000..91e093a
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-missing
+Version: 1.0-1
+Description: Test for missing control fields
diff --git a/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/fields-general-missing/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/recommended/fields-general-missing/eval/desc b/t/recipes/checks/fields/recommended/fields-general-missing/eval/desc
new file mode 100644
index 0000000..5c928d9
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/fields-general-missing/eval/desc
@@ -0,0 +1,4 @@
+Testname: fields-general-missing
+Check: fields/recommended
+Test-Against:
+ recommended-field
diff --git a/t/recipes/checks/fields/recommended/fields-general-missing/eval/hints b/t/recipes/checks/fields/recommended/fields-general-missing/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/fields-general-missing/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/control.in b/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/rules b/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/fields/recommended/generic-empty/build-spec/fill-values b/t/recipes/checks/fields/recommended/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/fields/recommended/generic-empty/build-spec/orig/README b/t/recipes/checks/fields/recommended/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/fields/recommended/generic-empty/build-spec/pre-build b/t/recipes/checks/fields/recommended/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/fields/recommended/generic-empty/eval/desc b/t/recipes/checks/fields/recommended/generic-empty/eval/desc
new file mode 100644
index 0000000..719b39a
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: fields/recommended
diff --git a/t/recipes/checks/fields/recommended/generic-empty/eval/hints b/t/recipes/checks/fields/recommended/generic-empty/eval/hints
new file mode 100644
index 0000000..e1f53e3
--- /dev/null
+++ b/t/recipes/checks/fields/recommended/generic-empty/eval/hints
@@ -0,0 +1,4 @@
+generic-empty (source): recommended-field (in section for source) Section [debian/control:1]
+generic-empty (source): recommended-field (in section for source) Priority [debian/control:1]
+generic-empty (binary): recommended-field generic-empty_1.0_all.deb Section
+generic-empty (binary): recommended-field generic-empty_1.0_all.deb Priority
diff --git a/t/recipes/checks/fields/required/changes-missing-fields/build-spec/fill-values b/t/recipes/checks/fields/required/changes-missing-fields/build-spec/fill-values
new file mode 100644
index 0000000..6a6b7f8
--- /dev/null
+++ b/t/recipes/checks/fields/required/changes-missing-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: changes
+Testname: changes-missing-fields
+Description: Test for changes missing fields
diff --git a/t/recipes/checks/fields/required/changes-missing-fields/build-spec/test.changes.in b/t/recipes/checks/fields/required/changes-missing-fields/build-spec/test.changes.in
new file mode 100644
index 0000000..49c165a
--- /dev/null
+++ b/t/recipes/checks/fields/required/changes-missing-fields/build-spec/test.changes.in
@@ -0,0 +1,9 @@
+Format: 1.8
+Date: [% $date %]
+Source: [% $source %]
+Binary: [% $source %]
+Architecture: source all
+Version: [% $version %]
+Distribution: unstable
+Maintainer: [% $author %]
+Changed-By: [% $author %]
diff --git a/t/recipes/checks/fields/required/changes-missing-fields/eval/desc b/t/recipes/checks/fields/required/changes-missing-fields/eval/desc
new file mode 100644
index 0000000..2a7722e
--- /dev/null
+++ b/t/recipes/checks/fields/required/changes-missing-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: changes-missing-fields
+Check: fields/required
diff --git a/t/recipes/checks/fields/required/changes-missing-fields/eval/hints b/t/recipes/checks/fields/required/changes-missing-fields/eval/hints
new file mode 100644
index 0000000..a180763
--- /dev/null
+++ b/t/recipes/checks/fields/required/changes-missing-fields/eval/hints
@@ -0,0 +1,4 @@
+changes-missing-fields (changes): required-field test.changes Files
+changes-missing-fields (changes): required-field test.changes Checksums-Sha256
+changes-missing-fields (changes): required-field test.changes Checksums-Sha1
+changes-missing-fields (changes): required-field test.changes Changes
diff --git a/t/recipes/checks/fields/required/fields-general-missing/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/required/fields-general-missing/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..cfbac73
--- /dev/null
+++ b/t/recipes/checks/fields/required/fields-general-missing/build-spec/DEBIAN/control.in
@@ -0,0 +1,8 @@
+Section: [% $section %]
+Priority: optional
+Depends: some-pkg
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/required/fields-general-missing/build-spec/fill-values b/t/recipes/checks/fields/required/fields-general-missing/build-spec/fill-values
new file mode 100644
index 0000000..91e093a
--- /dev/null
+++ b/t/recipes/checks/fields/required/fields-general-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-missing
+Version: 1.0-1
+Description: Test for missing control fields
diff --git a/t/recipes/checks/fields/required/fields-general-missing/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/required/fields-general-missing/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/required/fields-general-missing/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/required/fields-general-missing/eval/desc b/t/recipes/checks/fields/required/fields-general-missing/eval/desc
new file mode 100644
index 0000000..a52fa00
--- /dev/null
+++ b/t/recipes/checks/fields/required/fields-general-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-missing
+Check: fields/required
diff --git a/t/recipes/checks/fields/required/fields-general-missing/eval/hints b/t/recipes/checks/fields/required/fields-general-missing/eval/hints
new file mode 100644
index 0000000..6e17eb5
--- /dev/null
+++ b/t/recipes/checks/fields/required/fields-general-missing/eval/hints
@@ -0,0 +1,4 @@
+fields-general-missing (binary): required-field fields-general-missing.deb Version
+fields-general-missing (binary): required-field fields-general-missing.deb Package
+fields-general-missing (binary): required-field fields-general-missing.deb Maintainer
+fields-general-missing (binary): required-field fields-general-missing.deb Architecture
diff --git a/t/recipes/checks/fields/required/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/fields/required/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/fields/required/generic-empty/build-spec/debian/control.in b/t/recipes/checks/fields/required/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/fields/required/generic-empty/build-spec/debian/rules b/t/recipes/checks/fields/required/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/fields/required/generic-empty/build-spec/fill-values b/t/recipes/checks/fields/required/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/fields/required/generic-empty/build-spec/orig/README b/t/recipes/checks/fields/required/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/fields/required/generic-empty/build-spec/pre-build b/t/recipes/checks/fields/required/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/fields/required/generic-empty/eval/desc b/t/recipes/checks/fields/required/generic-empty/eval/desc
new file mode 100644
index 0000000..0d83817
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: fields/required
diff --git a/t/recipes/checks/fields/required/generic-empty/eval/hints b/t/recipes/checks/fields/required/generic-empty/eval/hints
new file mode 100644
index 0000000..40c0929
--- /dev/null
+++ b/t/recipes/checks/fields/required/generic-empty/eval/hints
@@ -0,0 +1,4 @@
+generic-empty (source): required-field generic-empty_1.0.dsc Standards-Version
+generic-empty (source): required-field (in section for source) Standards-Version [debian/control:1]
+generic-empty (source): required-field (in section for generic-empty) Description [debian/control:4]
+generic-empty (binary): required-field generic-empty_1.0_all.deb Description
diff --git a/t/recipes/checks/fields/section/fields-general/build-spec/debian/control.in b/t/recipes/checks/fields/section/fields-general/build-spec/debian/control.in
new file mode 100644
index 0000000..f5aa07a
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-general/build-spec/debian/control.in
@@ -0,0 +1,46 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+# Whoops, typo
+Homepage: ttp://lintian.debian.org/
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dbg)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (dbg)g.
+# ... and some unneeded <>
+Homepage: <http://lintian.debian.org/>
+
+Package: [% $source %]-debug
+Section: debug
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (debug)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The debug package (debug).
+
diff --git a/t/recipes/checks/fields/section/fields-general/build-spec/fill-values b/t/recipes/checks/fields/section/fields-general/build-spec/fill-values
new file mode 100644
index 0000000..11b0c69
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-general
+Description: Test for tags related to minor field issues
diff --git a/t/recipes/checks/fields/section/fields-general/eval/desc b/t/recipes/checks/fields/section/fields-general/eval/desc
new file mode 100644
index 0000000..3debe0d
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/fields-general/eval/hints b/t/recipes/checks/fields/section/fields-general/eval/hints
new file mode 100644
index 0000000..374bae3
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-general/eval/hints
@@ -0,0 +1 @@
+fields-general-debug (binary): wrong-section-according-to-package-name debug
diff --git a/t/recipes/checks/fields/section/fields-section-general/build-spec/debian/control.in b/t/recipes/checks/fields/section/fields-section-general/build-spec/debian/control.in
new file mode 100644
index 0000000..25106b7
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-section-general/build-spec/debian/control.in
@@ -0,0 +1,31 @@
+Source: [% $source %]
+Priority: optional
+Section: contrib/[% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Section: contrib/dveel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (typo)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a typo in its section fields.
+
+Package: [% $source %]-main
+Architecture: all
+Section: [% $section %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (main)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package can go to main.
diff --git a/t/recipes/checks/fields/section/fields-section-general/build-spec/fill-values b/t/recipes/checks/fields/section/fields-section-general/build-spec/fill-values
new file mode 100644
index 0000000..f8cf9f7
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-section-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-section-general
+Description: Test for general section/area issues
diff --git a/t/recipes/checks/fields/section/fields-section-general/eval/desc b/t/recipes/checks/fields/section/fields-section-general/eval/desc
new file mode 100644
index 0000000..63409be
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-section-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-section-general
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/fields-section-general/eval/hints b/t/recipes/checks/fields/section/fields-section-general/eval/hints
new file mode 100644
index 0000000..dccef08
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-section-general/eval/hints
@@ -0,0 +1 @@
+fields-section-general (binary): unknown-section contrib/dveel
diff --git a/t/recipes/checks/fields/section/fields-transitional/build-spec/debian/control.in b/t/recipes/checks/fields/section/fields-transitional/build-spec/debian/control.in
new file mode 100644
index 0000000..169c352
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-transitional/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: standard
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+ some-replacement
+Description: [% $description %]
+ This is a transitional package that should have been in section
+ oldlibs and priority extra.
diff --git a/t/recipes/checks/fields/section/fields-transitional/build-spec/debian/install b/t/recipes/checks/fields/section/fields-transitional/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-transitional/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/fields/section/fields-transitional/build-spec/fill-values b/t/recipes/checks/fields/section/fields-transitional/build-spec/fill-values
new file mode 100644
index 0000000..99dded7
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-transitional/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-transitional
+Description: Test for transitional package in wrong section
diff --git a/t/recipes/checks/fields/section/fields-transitional/build-spec/orig/some-file b/t/recipes/checks/fields/section/fields-transitional/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-transitional/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/fields/section/fields-transitional/eval/desc b/t/recipes/checks/fields/section/fields-transitional/eval/desc
new file mode 100644
index 0000000..af33edb
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-transitional/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-transitional
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/fields-transitional/eval/hints b/t/recipes/checks/fields/section/fields-transitional/eval/hints
new file mode 100644
index 0000000..899fdbe
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-transitional/eval/hints
@@ -0,0 +1 @@
+fields-transitional (binary): transitional-package-not-oldlibs-optional devel/standard
diff --git a/t/recipes/checks/fields/section/fields-udeb/build-spec/debian/control.in b/t/recipes/checks/fields/section/fields-udeb/build-spec/debian/control.in
new file mode 100644
index 0000000..e7475d5
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-udeb/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Package-Type: udeb
+Depends: ${misc:Depends},
+Installer-Menu-Item: network
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/section/fields-udeb/build-spec/fill-values b/t/recipes/checks/fields/section/fields-udeb/build-spec/fill-values
new file mode 100644
index 0000000..62f644c
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-udeb/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-udeb
+Description: Test for various udeb field issues
diff --git a/t/recipes/checks/fields/section/fields-udeb/eval/desc b/t/recipes/checks/fields/section/fields-udeb/eval/desc
new file mode 100644
index 0000000..9ccb083
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-udeb/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-udeb
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/fields-udeb/eval/hints b/t/recipes/checks/fields/section/fields-udeb/eval/hints
new file mode 100644
index 0000000..f9204dc
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-udeb/eval/hints
@@ -0,0 +1 @@
+fields-udeb (udeb): wrong-section-for-udeb devel
diff --git a/t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/control.in b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/control.in
new file mode 100644
index 0000000..112d226
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/control.in
@@ -0,0 +1,254 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ Only here as valid dependency for [% $source %]-dbg.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-doc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (doc)
+ Test for doc section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, [% $source %] (= ${binary:Version})
+Description: [% $description %] (debug)
+ Test for debug section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dev)
+ Test for libdevel section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-perl
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (perl)
+ Test for perl section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Python)
+ Test for Python section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Python 3)
+ Test for Python section for Python 3.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (OCaml)
+ Test for OCaml section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libjs-[% $source %]
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Javascript)
+ Test for web section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libghc-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Haskell)
+ Test for Haskell section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-cil
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (CLI/Mono)
+ Test for CLI/Mono section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libphp-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (PHP)
+ Test for PHP section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-ruby1.8
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Ruby)
+ Test for Ruby section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-java
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Java)
+ Test for Java section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: r-cran-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (GNU R)
+ Test for GNU R section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: lib[% $source %]-oldlibs-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Section: oldlibs
+Description: [% $description %] (oldlibs)
+ Test for oldlibs section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-contrib-doc
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Section: contrib/[% $section %]
+Description: [% $description %] (contrib docs)
+ Test for suggestion for packages not in main.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: gir1.2-[% $source %]-0.1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${gir:Depends}
+Description: [% $description %] (gir1.2-pkg)
+ Test for gir1.2 packages.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libnss-[% $source %]
+Architecture: all
+Section: web
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (NSS module)
+ Test for NSS modules.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libpam-[% $source %]1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (PAM module with number suffix)
+ Test for PAM modules.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: fonts-[% $source %]1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %] (fonts)
+ Test for font modules.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: xfonts-[% $source %]1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %] (xfonts)
+ Test for xfonts modules.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/rules b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/rules
new file mode 100644
index 0000000..6dd864a
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ set -e ; for P in $$(dh_listpackages -a) ; do \
+ dh_install -p$$P some-file usr/lib/$$P ; \
+ done
diff --git a/t/recipes/checks/fields/section/fields-wrong-section/build-spec/fill-values b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/fill-values
new file mode 100644
index 0000000..640aa3f
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-wrong-section
+Description: Packages placed in the wrong sections
diff --git a/t/recipes/checks/fields/section/fields-wrong-section/build-spec/orig/some-file b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/orig/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-wrong-section/build-spec/orig/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/section/fields-wrong-section/eval/desc b/t/recipes/checks/fields/section/fields-wrong-section/eval/desc
new file mode 100644
index 0000000..e7b71e6
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-wrong-section/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-wrong-section
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/fields-wrong-section/eval/hints b/t/recipes/checks/fields/section/fields-wrong-section/eval/hints
new file mode 100644
index 0000000..8855a8e
--- /dev/null
+++ b/t/recipes/checks/fields/section/fields-wrong-section/eval/hints
@@ -0,0 +1,20 @@
+xfonts-fields-wrong-section1 (binary): wrong-section-according-to-package-name devel => fonts
+r-cran-fields-wrong-section (binary): wrong-section-according-to-package-name devel => gnu-r
+python3-fields-wrong-section (binary): wrong-section-according-to-package-name devel => python
+python-fields-wrong-section (binary): wrong-section-according-to-package-name devel => python
+libphp-fields-wrong-section (binary): wrong-section-according-to-package-name devel => php
+libpam-fields-wrong-section1 (binary): wrong-section-according-to-package-name devel => admin
+libnss-fields-wrong-section (binary): wrong-section-according-to-package-name web => admin
+libjs-fields-wrong-section (binary): wrong-section-according-to-package-name devel => javascript
+libghc-fields-wrong-section (binary): wrong-section-according-to-package-name devel => haskell
+libfields-wrong-section-ruby1.8 (binary): wrong-section-according-to-package-name devel => ruby
+libfields-wrong-section-perl (binary): wrong-section-according-to-package-name devel => perl
+libfields-wrong-section-ocaml-dev (binary): wrong-section-according-to-package-name devel => ocaml
+libfields-wrong-section-java (binary): wrong-section-according-to-package-name devel => java
+libfields-wrong-section-dev (binary): wrong-section-according-to-package-name devel => libdevel
+libfields-wrong-section-cil (binary): wrong-section-according-to-package-name devel => cli-mono
+gir1.2-fields-wrong-section-0.1 (binary): wrong-section-according-to-package-name devel => introspection
+fonts-fields-wrong-section1 (binary): wrong-section-according-to-package-name devel => fonts
+fields-wrong-section-doc (binary): wrong-section-according-to-package-name devel => doc
+fields-wrong-section-dbg (binary): wrong-section-according-to-package-name devel => debug
+fields-wrong-section-contrib-doc (binary): wrong-section-according-to-package-name contrib/devel => contrib/doc
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/fill-values b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/README b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/eval/desc b/t/recipes/checks/fields/section/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..eb53f0b
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/eval/desc
@@ -0,0 +1,4 @@
+Testname: generic-dh-make-2008
+Check: fields/section
+See-Also:
+ Bug#497347
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/eval/hints b/t/recipes/checks/fields/section/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..268dcdd
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/eval/hints
@@ -0,0 +1 @@
+generic-dh-make-2008 (binary): section-is-dh_make-template
diff --git a/t/recipes/checks/fields/section/generic-dh-make-2008/eval/post-test b/t/recipes/checks/fields/section/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/section/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/control b/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/rules b/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/section/legacy-fields/build-spec/fill-values b/t/recipes/checks/fields/section/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/fields/section/legacy-fields/eval/desc b/t/recipes/checks/fields/section/legacy-fields/eval/desc
new file mode 100644
index 0000000..238c163
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/legacy-fields/eval/hints b/t/recipes/checks/fields/section/legacy-fields/eval/hints
new file mode 100644
index 0000000..70e11e8
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/eval/hints
@@ -0,0 +1 @@
+fields (binary): unknown-section does-not-exist
diff --git a/t/recipes/checks/fields/section/legacy-fields/eval/post-test b/t/recipes/checks/fields/section/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/eval/desc b/t/recipes/checks/fields/section/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..6aba0cb
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: fields/section
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/eval/hints b/t/recipes/checks/fields/section/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..b32131f
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/eval/hints
@@ -0,0 +1,3 @@
+libbaz2-dev (binary): wrong-section-according-to-package-name libs => libdevel
+libbaz2-dbg (binary): wrong-section-according-to-package-name libs => debug
+libbaz1-dev (binary): wrong-section-according-to-package-name libs => libdevel
diff --git a/t/recipes/checks/fields/section/legacy-libbaz/eval/post-test b/t/recipes/checks/fields/section/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/fields/section/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/fields/source/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/source/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/source/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/source/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/source/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/source/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/source/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/source/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/source/fields-general-bad/eval/desc b/t/recipes/checks/fields/source/fields-general-bad/eval/desc
new file mode 100644
index 0000000..842ffb1
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/source
diff --git a/t/recipes/checks/fields/source/fields-general-bad/eval/hints b/t/recipes/checks/fields/source/fields-general-bad/eval/hints
new file mode 100644
index 0000000..a910386
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-general-bad/eval/hints
@@ -0,0 +1 @@
+fields-general-BAD? (binary): source-field-malformed fields-general-BAD?
diff --git a/t/recipes/checks/fields/source/fields-malformed-source/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/source/fields-malformed-source/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..67b1c4f
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-malformed-source/build-spec/DEBIAN/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Source: Malformed
+Version: [% $version %]
+Architecture: [% $package_architecture %]
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/source/fields-malformed-source/build-spec/fill-values b/t/recipes/checks/fields/source/fields-malformed-source/build-spec/fill-values
new file mode 100644
index 0000000..797442d
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-malformed-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: fields-malformed-source
+Description: Test for bad source package name
diff --git a/t/recipes/checks/fields/source/fields-malformed-source/eval/desc b/t/recipes/checks/fields/source/fields-malformed-source/eval/desc
new file mode 100644
index 0000000..2620915
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-malformed-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-malformed-source
+Check: fields/source
diff --git a/t/recipes/checks/fields/source/fields-malformed-source/eval/hints b/t/recipes/checks/fields/source/fields-malformed-source/eval/hints
new file mode 100644
index 0000000..2e76f9e
--- /dev/null
+++ b/t/recipes/checks/fields/source/fields-malformed-source/eval/hints
@@ -0,0 +1 @@
+fields-malformed-source (binary): source-field-malformed Malformed
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/templates b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/eval/desc b/t/recipes/checks/fields/standards-version/legacy-binary/eval/desc
new file mode 100644
index 0000000..12da30d
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/eval/hints b/t/recipes/checks/fields/standards-version/legacy-binary/eval/hints
new file mode 100644
index 0000000..dc99982
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (source): standards-version 3.2.1
+binary (source): out-of-date-standards-version 3.2.1 (released 2000-08-24) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-binary/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/eval/desc b/t/recipes/checks/fields/standards-version/legacy-debconf/eval/desc
new file mode 100644
index 0000000..8279bed
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/eval/hints b/t/recipes/checks/fields/standards-version/legacy-debconf/eval/hints
new file mode 100644
index 0000000..8496e1c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/eval/hints
@@ -0,0 +1 @@
+debconf (source): standards-version 3.7.2
diff --git a/t/recipes/checks/fields/standards-version/legacy-debconf/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/desc b/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..6b6e302
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/hints b/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..081bd7f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/hints
@@ -0,0 +1,2 @@
+etcfiles (source): standards-version 3.5.0
+etcfiles (source): out-of-date-standards-version 3.5.0 (released 2001-01-29) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/eval/desc b/t/recipes/checks/fields/standards-version/legacy-fields/eval/desc
new file mode 100644
index 0000000..ea55f4a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/eval/hints b/t/recipes/checks/fields/standards-version/legacy-fields/eval/hints
new file mode 100644
index 0000000..216d3bf
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/eval/hints
@@ -0,0 +1 @@
+fields (source): standards-version 3.9.2
diff --git a/t/recipes/checks/fields/standards-version/legacy-fields/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/eval/desc b/t/recipes/checks/fields/standards-version/legacy-filenames/eval/desc
new file mode 100644
index 0000000..76e1462
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/eval/hints b/t/recipes/checks/fields/standards-version/legacy-filenames/eval/hints
new file mode 100644
index 0000000..a9139ee
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/eval/hints
@@ -0,0 +1,2 @@
+filenames (source): standards-version 3.1.1
+filenames (source): out-of-date-standards-version 3.1.1 (released 1999-11-16) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-filenames/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..57a489c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description uses only UTF-8 high bytes chars.
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/eval/desc b/t/recipes/checks/fields/standards-version/legacy-foo++/eval/desc
new file mode 100644
index 0000000..3a7d107
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/eval/hints b/t/recipes/checks/fields/standards-version/legacy-foo++/eval/hints
new file mode 100644
index 0000000..54434ee
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/eval/hints
@@ -0,0 +1,2 @@
+foo++ (source): standards-version 3.1.1
+foo++ (source): out-of-date-standards-version 3.1.1 (released 1999-11-16) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-foo++/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/desc b/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..d9f58c7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/hints b/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..f068162
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz (source): standards-version 3.2.1
+libbaz (source): out-of-date-standards-version 3.2.1 (released 2000-08-24) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..f5db267
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..93c1a8f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,2 @@
+maintainer-scripts (source): standards-version 3.1.1
+maintainer-scripts (source): out-of-date-standards-version 3.1.1 (released 1999-11-16) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/changelog.in
new file mode 100644
index 0000000..9a82ea7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/changelog.in
@@ -0,0 +1,33 @@
+relations ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm orphaning this package -- I'm sick of it: it's completely broken,
+ lintian complains all over the place.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 02 Dec 2007 15:59:59 -0800
+
+relations (4) unstable; urgency=low
+
+ * Added a package that tests dependencies for multiple versions of
+ libraries, and test some description stuff in there as well.
+
+ -- Josip Rodin <jrodin@jagor.srce.hr> Fri, 29 Nov 2002 20:13:33 +0100
+
+relations (3) unstable; urgency=low
+
+ * Added a virtual provides to test against my virtual depends without
+ a real package first test
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 8 Feb 2001 11:29:53 -0800
+
+relations (2) unstable; urgency=low
+
+ * Added a depends on dpkg (violates policy) and a versioned depends
+ on bash (follows policy)
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 2 Feb 2001 12:37:17 -0800
+
+relations (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Tue, 7 Jul 1998 16:27:56 +0200
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/control b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/control
new file mode 100644
index 0000000..6cd1c04
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/control
@@ -0,0 +1,51 @@
+Source: relations
+Section: misc
+Priority: optional
+Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl
+Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs,
+ car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386],
+ caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386]
+Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc]
+Build-Conflicts-Indep: debmake [!powerpc]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: 3.7.3
+Homepage: lintian.debian.org
+Origin: Debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: relations
+Architecture: all
+Section: contrib/misc
+Pre-Depends: awk|gawk
+Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev
+Provides: mail-reader
+Replaces: relations
+Conflicts: foobar (<< 5+5), foo, relations,
+ gnuwdf,
+Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package
+Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin
+Description: Strange dependency relationships (dummy)
+ This package declares relationships designed to tickle lintian's "fields"
+ check. It should generate a number of tags for these.
+ .
+ The package is built with "dpkg --build --no-check", because some of the
+ relationships used here are normally rejected by dpkg.
+
+Package: relations-multiple-libs
+Architecture: all
+Section: non-free/misc
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev
+Provides: awk
+Enhances: foo
+Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev
+Breaks: libpng3 (<< 1.0), libpng2
+Suggests: x-dev, ghostscript | gs
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships.
+ This tests the depending on different versions of the same library
+ at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
+ .
+ It is a metapackage from the lintian perspective, so the xorg dependency
+ should be allowed.
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/rules
new file mode 100755
index 0000000..5027f33
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ dpkg-gencontrol -prelations -isp
+ dpkg --build debian/tmp ../relations_5_all.deb
+ install -d debian/tmp/usr/share/doc/
+ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs
+ dpkg-gencontrol -prelations-multiple-libs -isp
+ dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb
+
+binary: binary-arch binary-indep
+
+clean::
+ rm -rf debian/tmp debian/files
+
+# Test allowing quilt Build-Depends for manual quilt invocations.
+ TESTING=foo ANOTHER=bar quilt || true
+
+# Test requiring perl Build-Depends for manual perl invocations.
+ [ ! -f Build ] || $(PERL) Build distclean
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/tmp/DEBIAN/control b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/tmp/DEBIAN/control
new file mode 100644
index 0000000..87e7fe6
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/debian/tmp/DEBIAN/control
@@ -0,0 +1,14 @@
+Package: relations-multiple-libs
+Version: 4
+Section: misc
+Priority: optional
+Architecture: all
+Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3
+Installed-Size: 12
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Source: relations
+Description: Duplicate library dependency relationships.
+ Duplicate library dependency relationships. This tests the depending on
+ different versions of the same library at the same time.
+ .
+ At the same time, it conveniently tests some description file checks. :)
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/fill-values
new file mode 100644
index 0000000..7e4661b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-relations
+Source: relations
+Version: 5
+Description: Legacy test "relations"
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/eval/desc b/t/recipes/checks/fields/standards-version/legacy-relations/eval/desc
new file mode 100644
index 0000000..77b29bb
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-relations
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/eval/hints b/t/recipes/checks/fields/standards-version/legacy-relations/eval/hints
new file mode 100644
index 0000000..a6b7706
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/eval/hints
@@ -0,0 +1,2 @@
+relations (source): timewarp-standards-version (2007-12-02 < 2007-12-03)
+relations (source): standards-version 3.7.3
diff --git a/t/recipes/checks/fields/standards-version/legacy-relations/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-relations/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-relations/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/fill-values b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/pre-build b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/eval/desc b/t/recipes/checks/fields/standards-version/legacy-scripts/eval/desc
new file mode 100644
index 0000000..6cbcb6b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/eval/hints b/t/recipes/checks/fields/standards-version/legacy-scripts/eval/hints
new file mode 100644
index 0000000..6763d3d
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/eval/hints
@@ -0,0 +1,2 @@
+scripts (source): standards-version 3.2.1
+scripts (source): out-of-date-standards-version 3.2.1 (released 2000-08-24) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/legacy-scripts/eval/post-test b/t/recipes/checks/fields/standards-version/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/standards-version-classifications/build-spec/fill-values b/t/recipes/checks/fields/standards-version/standards-version-classifications/build-spec/fill-values
new file mode 100644
index 0000000..6734009
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-classifications/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: standards-version-classifications
+Description: Test standards version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/desc b/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/desc
new file mode 100644
index 0000000..eb8d49c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/desc
@@ -0,0 +1,2 @@
+Testname: standards-version-classifications
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/hints b/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/hints
new file mode 100644
index 0000000..028d6d0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/hints
@@ -0,0 +1 @@
+standards-version-classifications (source): standards-version VERSION
diff --git a/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/post-test b/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/post-test
new file mode 100644
index 0000000..8ff6614
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-classifications/eval/post-test
@@ -0,0 +1 @@
+s/(standards-version) [0-9.]+/\1 VERSION/
diff --git a/t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/debian/control.in b/t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/debian/control.in
new file mode 100644
index 0000000..3334af5
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: 3.8
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/fill-values b/t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/fill-values
new file mode 100644
index 0000000..487b533
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-invalid/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: standards-version-invalid
+Description: Test invalid standards version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-invalid/eval/desc b/t/recipes/checks/fields/standards-version/standards-version-invalid/eval/desc
new file mode 100644
index 0000000..7e74fe9
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-invalid/eval/desc
@@ -0,0 +1,2 @@
+Testname: standards-version-invalid
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-invalid/eval/hints b/t/recipes/checks/fields/standards-version/standards-version-invalid/eval/hints
new file mode 100644
index 0000000..ed58ab9
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-invalid/eval/hints
@@ -0,0 +1 @@
+standards-version-invalid (source): invalid-standards-version 3.8
diff --git a/t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/debian/control.in b/t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/debian/control.in
new file mode 100644
index 0000000..a063aa3
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: 5.15.0.0
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/fill-values b/t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/fill-values
new file mode 100644
index 0000000..37ee75a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-newer/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: standards-version-newer
+Description: Test too-new standards version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-newer/eval/desc b/t/recipes/checks/fields/standards-version/standards-version-newer/eval/desc
new file mode 100644
index 0000000..de61950
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-newer/eval/desc
@@ -0,0 +1,2 @@
+Testname: standards-version-newer
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-newer/eval/hints b/t/recipes/checks/fields/standards-version/standards-version-newer/eval/hints
new file mode 100644
index 0000000..9f60483
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-newer/eval/hints
@@ -0,0 +1,2 @@
+standards-version-newer (source): standards-version 5.15.0.0
+standards-version-newer (source): newer-standards-version 5.15.0.0 (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/standards-version-newer/eval/post-test b/t/recipes/checks/fields/standards-version/standards-version-newer/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-newer/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/build-spec/debian/control.in b/t/recipes/checks/fields/standards-version/standards-version-old/build-spec/debian/control.in
new file mode 100644
index 0000000..1db8a5f
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: 3.9.6
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/build-spec/fill-values b/t/recipes/checks/fields/standards-version/standards-version-old/build-spec/fill-values
new file mode 100644
index 0000000..a4f5a62
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: standards-version-old
+Description: Test old standards version on recent package
+# Overrides the "data/standards-version/ancient-date"
+# data file to avoid turning "old" into "ancient".
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/eval/desc b/t/recipes/checks/fields/standards-version/standards-version-old/eval/desc
new file mode 100644
index 0000000..87bb01a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/eval/desc
@@ -0,0 +1,6 @@
+Testname: standards-version-old
+Profile: lintian-test
+Options: --include-dir ./lintian-include-dir
+Check: fields/standards-version
+# Overrides the "data/standards-version/ancient-date"
+# data file to avoid turning "old" into "ancient".
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/eval/hints b/t/recipes/checks/fields/standards-version/standards-version-old/eval/hints
new file mode 100644
index 0000000..f6c0b09
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/eval/hints
@@ -0,0 +1,2 @@
+standards-version-old (source): standards-version 3.9.6
+standards-version-old (source): out-of-date-standards-version 3.9.6 (released 2014-09-17) (current is CURRENT)
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/profiles/lintian-test/main.profile b/t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
new file mode 100644
index 0000000..f0e27cf
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/profiles/lintian-test/main.profile
@@ -0,0 +1,2 @@
+Profile: lintian-test/main
+Extends: debian/main
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date b/t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date
new file mode 100644
index 0000000..42f8743
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/eval/lintian-include-dir/vendors/lintian-test/main/data/standards-version/ancient-date
@@ -0,0 +1,7 @@
+# Any Standards Version released before this day is "ancient"
+#
+# Frozen for this test so we do not have to update the test every time
+# we update the real "ancient-date" data file.
+#
+# Format is ANCIENT < Date
+ANCIENT < 20 Feb 2014
diff --git a/t/recipes/checks/fields/standards-version/standards-version-old/eval/post-test b/t/recipes/checks/fields/standards-version/standards-version-old/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-old/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/debian/changelog.in
new file mode 100644
index 0000000..1918c87
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) UNRELEASED; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] Thu, 15 Mar 2001 07:00:00 +0000
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/fill-values b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/fill-values
new file mode 100644
index 0000000..230b6c2
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: standards-version-timewarp-unrel
+Description: Test newer standards version with unreleased old changelog date
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/desc b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/desc
new file mode 100644
index 0000000..8aee982
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: standards-version-timewarp-unrel
+Test-Against:
+ timewarp-standards-version
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/hints b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/hints
new file mode 100644
index 0000000..a33584b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/hints
@@ -0,0 +1 @@
+standards-version-timewarp-unrel (source): standards-version VERSION
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/post-test b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/post-test
new file mode 100644
index 0000000..8ff6614
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp-unrel/eval/post-test
@@ -0,0 +1 @@
+s/(standards-version) [0-9.]+/\1 VERSION/
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/changelog.in b/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/changelog.in
new file mode 100644
index 0000000..43ce66b
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] Thu, 15 Mar 2001 07:00:00 +0000
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/copyright b/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/copyright
new file mode 100644
index 0000000..8e3f0f0
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/debian/copyright
@@ -0,0 +1,32 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 1900 Always in the Past, Inc. <debian-lint-maint@lists.debian.org>
+License: MIT
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/fill-values b/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/fill-values
new file mode 100644
index 0000000..f309cf7
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: standards-version-timewarp
+Description: Test newer standards version with old changelog date
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/desc b/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/desc
new file mode 100644
index 0000000..394e40a
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/desc
@@ -0,0 +1,2 @@
+Testname: standards-version-timewarp
+Check: fields/standards-version
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/hints b/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/hints
new file mode 100644
index 0000000..eb1810c
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/hints
@@ -0,0 +1,2 @@
+standards-version-timewarp (source): timewarp-standards-version (2001-03-15 < CURRENT)
+standards-version-timewarp (source): standards-version VERSION
diff --git a/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/post-test b/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/post-test
new file mode 100644
index 0000000..b965b05
--- /dev/null
+++ b/t/recipes/checks/fields/standards-version/standards-version-timewarp/eval/post-test
@@ -0,0 +1,2 @@
+s/< [0-9]{4}-[0-9]{2}-[0-9]{2}/< CURRENT/
+s/(standards-version) [0-9.]+/\1 VERSION/
diff --git a/t/recipes/checks/fields/style/all-caps/build-spec/debian/control.in b/t/recipes/checks/fields/style/all-caps/build-spec/debian/control.in
new file mode 100644
index 0000000..3035904
--- /dev/null
+++ b/t/recipes/checks/fields/style/all-caps/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+HOMEPAGE: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/style/all-caps/build-spec/fill-values b/t/recipes/checks/fields/style/all-caps/build-spec/fill-values
new file mode 100644
index 0000000..c6948f5
--- /dev/null
+++ b/t/recipes/checks/fields/style/all-caps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: all-caps
+Description: All caps spelling of field names.
diff --git a/t/recipes/checks/fields/style/all-caps/eval/desc b/t/recipes/checks/fields/style/all-caps/eval/desc
new file mode 100644
index 0000000..ae8925f
--- /dev/null
+++ b/t/recipes/checks/fields/style/all-caps/eval/desc
@@ -0,0 +1,2 @@
+Testname: all-caps
+Check: fields/style
diff --git a/t/recipes/checks/fields/style/all-caps/eval/hints b/t/recipes/checks/fields/style/all-caps/eval/hints
new file mode 100644
index 0000000..c9500f7
--- /dev/null
+++ b/t/recipes/checks/fields/style/all-caps/eval/hints
@@ -0,0 +1 @@
+all-caps (source): cute-field HOMEPAGE vs Homepage [debian/control:8]
diff --git a/t/recipes/checks/fields/style/go-import-path/build-spec/debian/control.in b/t/recipes/checks/fields/style/go-import-path/build-spec/debian/control.in
new file mode 100644
index 0000000..7dde207
--- /dev/null
+++ b/t/recipes/checks/fields/style/go-import-path/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+XS-Go-Import-Path: some-path
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/style/go-import-path/build-spec/fill-values b/t/recipes/checks/fields/style/go-import-path/build-spec/fill-values
new file mode 100644
index 0000000..4fd14b5
--- /dev/null
+++ b/t/recipes/checks/fields/style/go-import-path/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: go-import-path
+Description: Go-Import-Path vs GO-Import-Path (false positive)
diff --git a/t/recipes/checks/fields/style/go-import-path/eval/desc b/t/recipes/checks/fields/style/go-import-path/eval/desc
new file mode 100644
index 0000000..f55916d
--- /dev/null
+++ b/t/recipes/checks/fields/style/go-import-path/eval/desc
@@ -0,0 +1,5 @@
+Testname: go-import-path
+Check: fields/style
+Test-Against:
+ cute-field
+See-Also: Bug#965966
diff --git a/t/recipes/checks/fields/style/go-import-path/eval/hints b/t/recipes/checks/fields/style/go-import-path/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/fields/style/go-import-path/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/fields/style/lower-case-component/build-spec/debian/control.in b/t/recipes/checks/fields/style/lower-case-component/build-spec/debian/control.in
new file mode 100644
index 0000000..c4bb5aa
--- /dev/null
+++ b/t/recipes/checks/fields/style/lower-case-component/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-requires-root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/style/lower-case-component/build-spec/fill-values b/t/recipes/checks/fields/style/lower-case-component/build-spec/fill-values
new file mode 100644
index 0000000..2a356cb
--- /dev/null
+++ b/t/recipes/checks/fields/style/lower-case-component/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lower-case-component
+Description: Component of field name in lower case
diff --git a/t/recipes/checks/fields/style/lower-case-component/eval/desc b/t/recipes/checks/fields/style/lower-case-component/eval/desc
new file mode 100644
index 0000000..4b65289
--- /dev/null
+++ b/t/recipes/checks/fields/style/lower-case-component/eval/desc
@@ -0,0 +1,2 @@
+Testname: lower-case-component
+Check: fields/style
diff --git a/t/recipes/checks/fields/style/lower-case-component/eval/hints b/t/recipes/checks/fields/style/lower-case-component/eval/hints
new file mode 100644
index 0000000..98a87d5
--- /dev/null
+++ b/t/recipes/checks/fields/style/lower-case-component/eval/hints
@@ -0,0 +1 @@
+lower-case-component (source): cute-field Rules-requires-root vs Rules-Requires-Root [debian/control:7]
diff --git a/t/recipes/checks/fields/style/shy-prefix/build-spec/debian/control.in b/t/recipes/checks/fields/style/shy-prefix/build-spec/debian/control.in
new file mode 100644
index 0000000..9c4dc3d
--- /dev/null
+++ b/t/recipes/checks/fields/style/shy-prefix/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Xs-Python-Version: >= 2.7
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/style/shy-prefix/build-spec/fill-values b/t/recipes/checks/fields/style/shy-prefix/build-spec/fill-values
new file mode 100644
index 0000000..360ca26
--- /dev/null
+++ b/t/recipes/checks/fields/style/shy-prefix/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: shy-prefix
+Description: Second letter lowercase in field name with XS- prefix
diff --git a/t/recipes/checks/fields/style/shy-prefix/eval/desc b/t/recipes/checks/fields/style/shy-prefix/eval/desc
new file mode 100644
index 0000000..82a5b4d
--- /dev/null
+++ b/t/recipes/checks/fields/style/shy-prefix/eval/desc
@@ -0,0 +1,2 @@
+Testname: shy-prefix
+Check: fields/style
diff --git a/t/recipes/checks/fields/style/shy-prefix/eval/hints b/t/recipes/checks/fields/style/shy-prefix/eval/hints
new file mode 100644
index 0000000..c4a8860
--- /dev/null
+++ b/t/recipes/checks/fields/style/shy-prefix/eval/hints
@@ -0,0 +1 @@
+shy-prefix (source): cute-field Xs-Python-Version vs XS-Python-Version [debian/control:9]
diff --git a/t/recipes/checks/fields/terminal-control/colorful/build-spec/fill-values b/t/recipes/checks/fields/terminal-control/colorful/build-spec/fill-values
new file mode 100644
index 0000000..d0108c7
--- /dev/null
+++ b/t/recipes/checks/fields/terminal-control/colorful/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: colorful
+Author: Colorful <"colorful"@43-1.org>
+Description: Colorful maintainer from Ansgar's 'colorful' test package (false positive)
diff --git a/t/recipes/checks/fields/terminal-control/colorful/eval/desc b/t/recipes/checks/fields/terminal-control/colorful/eval/desc
new file mode 100644
index 0000000..30aeda4
--- /dev/null
+++ b/t/recipes/checks/fields/terminal-control/colorful/eval/desc
@@ -0,0 +1,3 @@
+Testname: colorful
+Check: fields/terminal-control
+See-Also: Bug#962277
diff --git a/t/recipes/checks/fields/terminal-control/colorful/eval/hints b/t/recipes/checks/fields/terminal-control/colorful/eval/hints
new file mode 100644
index 0000000..c2a029b
--- /dev/null
+++ b/t/recipes/checks/fields/terminal-control/colorful/eval/hints
@@ -0,0 +1,4 @@
+colorful (source): ansi-escape Maintainer Colorful <"colorful"@43-1.org>
+colorful (changes): ansi-escape Maintainer Colorful <"colorful"@43-1.org>
+colorful (changes): ansi-escape Changed-By Colorful <"colorful"@43-1.org>
+colorful (binary): ansi-escape Maintainer Colorful <"colorful"@43-1.org>
diff --git a/t/recipes/checks/fields/trimmed/native-source/build-spec/fill-values b/t/recipes/checks/fields/trimmed/native-source/build-spec/fill-values
new file mode 100644
index 0000000..f544650
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: native-source
+Description: Plain native source package for trimmed field classification tags.
diff --git a/t/recipes/checks/fields/trimmed/native-source/eval/desc b/t/recipes/checks/fields/trimmed/native-source/eval/desc
new file mode 100644
index 0000000..8efa431
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: native-source
+Check: fields/trimmed
diff --git a/t/recipes/checks/fields/trimmed/native-source/eval/hints b/t/recipes/checks/fields/trimmed/native-source/eval/hints
new file mode 100644
index 0000000..7bdcf2a
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-source/eval/hints
@@ -0,0 +1 @@
+native-source (source): trimmed-field Maintainer Debian Lintian Maintainers <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/trimmed/native-source/eval/post-test b/t/recipes/checks/fields/trimmed/native-source/eval/post-test
new file mode 100644
index 0000000..de6da8f
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-source/eval/post-test
@@ -0,0 +1,2 @@
+# retain one field for illustration; many are too volatile for a test
+/[^ ]* \([^)]*\): trimmed-field Maintainer .*/!d
diff --git a/t/recipes/checks/fields/trimmed/native-upload/build-spec/fill-values b/t/recipes/checks/fields/trimmed/native-upload/build-spec/fill-values
new file mode 100644
index 0000000..dcfb84f
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-upload/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: native-upload
+Description: Plain native changes file with debs for trimmed field classification tags.
diff --git a/t/recipes/checks/fields/trimmed/native-upload/eval/desc b/t/recipes/checks/fields/trimmed/native-upload/eval/desc
new file mode 100644
index 0000000..a327de3
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-upload/eval/desc
@@ -0,0 +1,2 @@
+Testname: native-upload
+Check: fields/trimmed
diff --git a/t/recipes/checks/fields/trimmed/native-upload/eval/hints b/t/recipes/checks/fields/trimmed/native-upload/eval/hints
new file mode 100644
index 0000000..976d6f3
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-upload/eval/hints
@@ -0,0 +1,3 @@
+native-upload (source): trimmed-field Maintainer Debian Lintian Maintainers <lintian-maint@debian.org>
+native-upload (changes): trimmed-field Maintainer Debian Lintian Maintainers <lintian-maint@debian.org>
+native-upload (binary): trimmed-field Maintainer Debian Lintian Maintainers <lintian-maint@debian.org>
diff --git a/t/recipes/checks/fields/trimmed/native-upload/eval/post-test b/t/recipes/checks/fields/trimmed/native-upload/eval/post-test
new file mode 100644
index 0000000..de6da8f
--- /dev/null
+++ b/t/recipes/checks/fields/trimmed/native-upload/eval/post-test
@@ -0,0 +1,2 @@
+# retain one field for illustration; many are too volatile for a test
+/[^ ]* \([^)]*\): trimmed-field Maintainer .*/!d
diff --git a/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/debian/control.in b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/debian/control.in
new file mode 100644
index 0000000..63689f8
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+XS-Debian-Vcs-Git: https://salsa.debian.org/foo/bar.git
+Vcs-Git: https://git.launchpad.net/ubuntu/+source/bar
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/fill-values b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/fill-values
new file mode 100644
index 0000000..b3ad32e
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-non-native
+Testname: debian-vcs-git-in-non-debian-profile
+Description: Test to ensure that on non-Debian profiles, Debian-VCS works (false positive)
diff --git a/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/desc b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/desc
new file mode 100644
index 0000000..a0e1dd1
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/desc
@@ -0,0 +1,4 @@
+Testname: debian-vcs-git-in-non-debian-profile
+Check: fields/unknown
+Profile: ubuntu/main
+Test-Against: unknown-field
diff --git a/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/hints b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/debian-vcs-git-in-non-debian-profile/eval/hints
diff --git a/t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/control.in b/t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/control.in
new file mode 100644
index 0000000..185ef5f
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/control.in
@@ -0,0 +1,28 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+XS-Essential: no
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: [% $source %]
+Essential: yes
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]2
+Essential: maybe
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- maybe
+ This is another test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/rules b/t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/rules
new file mode 100755
index 0000000..41937bf
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-essential/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+pkg=fields-essential
+export DH_VERBOSE=1
+%:
+ dh $@
+
+override_dh_builddeb:
+ dh_builddeb --package=$(pkg)
+ dpkg-deb --nocheck --build debian/$(pkg)2 ../$(pkg)2_1.0_all.deb
diff --git a/t/recipes/checks/fields/unknown/fields-essential/build-spec/fill-values b/t/recipes/checks/fields/unknown/fields-essential/build-spec/fill-values
new file mode 100644
index 0000000..ca276e8
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-essential/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-essential
+Description: Test for Essential field-related errors
diff --git a/t/recipes/checks/fields/unknown/fields-essential/eval/desc b/t/recipes/checks/fields/unknown/fields-essential/eval/desc
new file mode 100644
index 0000000..2e8b39b
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-essential/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-essential
+Check: fields/unknown
diff --git a/t/recipes/checks/fields/unknown/fields-essential/eval/hints b/t/recipes/checks/fields/unknown/fields-essential/eval/hints
new file mode 100644
index 0000000..2256d0b
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-essential/eval/hints
@@ -0,0 +1 @@
+fields-essential (source): unknown-field Essential
diff --git a/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/unknown/fields-general-bad/eval/desc b/t/recipes/checks/fields/unknown/fields-general-bad/eval/desc
new file mode 100644
index 0000000..b81a7a5
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/unknown
diff --git a/t/recipes/checks/fields/unknown/fields-general-bad/eval/hints b/t/recipes/checks/fields/unknown/fields-general-bad/eval/hints
new file mode 100644
index 0000000..fc31f73
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-general-bad/eval/hints
@@ -0,0 +1 @@
+fields-general-BAD? (binary): unknown-field Unknown-Field
diff --git a/t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/debian/control.in b/t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..de4411c
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/debian/control.in
@@ -0,0 +1,24 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Require-Root: no
+Rules-Requires-Root: no
+XS-Comment: This is random comment ending up in the dsc file.
+Autobuild: no
+Go-Import-Path: github.com/example/example
+Ruby-Versions: ${ruby:Versions}
+Python-Version: 2.7
+Python3-Version: 3.7
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/fill-values b/t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/fill-values
new file mode 100644
index 0000000..df47230
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-unknown-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-unknown-fields
+Description: General tests for unknown fields
diff --git a/t/recipes/checks/fields/unknown/fields-unknown-fields/eval/desc b/t/recipes/checks/fields/unknown/fields-unknown-fields/eval/desc
new file mode 100644
index 0000000..76f8fc8
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-unknown-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-unknown-fields
+Check: fields/unknown
diff --git a/t/recipes/checks/fields/unknown/fields-unknown-fields/eval/hints b/t/recipes/checks/fields/unknown/fields-unknown-fields/eval/hints
new file mode 100644
index 0000000..5c65b7b
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/fields-unknown-fields/eval/hints
@@ -0,0 +1 @@
+fields-unknown-fields (source): unknown-field Comment
diff --git a/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/debian/control.in b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/debian/control.in
new file mode 100644
index 0000000..54bf0f9
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+XS-../foo: bar
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+XB-../bar: moo
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/fill-values b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/fill-values
new file mode 100644
index 0000000..76e9551
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: unpack-slashes-in-field-name
+Description: Test package with slashes in a control field name
diff --git a/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/desc b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/desc
new file mode 100644
index 0000000..d9d6921
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: unpack-slashes-in-field-name
+Check: fields/unknown
diff --git a/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/hints b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/hints
new file mode 100644
index 0000000..f27147d
--- /dev/null
+++ b/t/recipes/checks/fields/unknown/unpack-slashes-in-field-name/eval/hints
@@ -0,0 +1,2 @@
+unpack-slashes-in-field-name (source): unknown-field ../foo
+unpack-slashes-in-field-name (binary): unknown-field ../bar
diff --git a/t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/debian/control.in b/t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/debian/control.in
new file mode 100644
index 0000000..00f2799
--- /dev/null
+++ b/t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/debian/control.in
@@ -0,0 +1,22 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: lintian-maint@debian.org
+Uploaders: <lintian-maint@debian.org>, Russ Allbery <rra@debian.org>,
+ Russ Allbery <rra@debian.org>,
+ Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>,
+ Double comma <double@comma.com>, ,
+ Mr. Missing Comma <mrmc@comma.com>
+ Mrs. Missing Comma <mrsmc@comma.com>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/fill-values b/t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..d6a4051
--- /dev/null
+++ b/t/recipes/checks/fields/uploaders/fields-maintainer-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-maintainer-general
+Description: Tests of various maintainer and uploader tags
diff --git a/t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/desc b/t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/desc
new file mode 100644
index 0000000..90ff900
--- /dev/null
+++ b/t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-maintainer-general
+Check: fields/uploaders
diff --git a/t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/hints b/t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/hints
new file mode 100644
index 0000000..1060a6c
--- /dev/null
+++ b/t/recipes/checks/fields/uploaders/fields-maintainer-general/eval/hints
@@ -0,0 +1,2 @@
+fields-maintainer-general (source): uploader-name-missing you have used a double comma
+fields-maintainer-general (source): maintainer-also-in-uploaders
diff --git a/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/control.in b/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/rules b/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/fields/urgency/generic-empty/build-spec/fill-values b/t/recipes/checks/fields/urgency/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/fields/urgency/generic-empty/build-spec/orig/README b/t/recipes/checks/fields/urgency/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/fields/urgency/generic-empty/build-spec/pre-build b/t/recipes/checks/fields/urgency/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/fields/urgency/generic-empty/eval/desc b/t/recipes/checks/fields/urgency/generic-empty/eval/desc
new file mode 100644
index 0000000..86791bb
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: fields/urgency
diff --git a/t/recipes/checks/fields/urgency/generic-empty/eval/hints b/t/recipes/checks/fields/urgency/generic-empty/eval/hints
new file mode 100644
index 0000000..361e1cc
--- /dev/null
+++ b/t/recipes/checks/fields/urgency/generic-empty/eval/hints
@@ -0,0 +1 @@
+generic-empty (changes): bad-urgency-in-changes-file unknown
diff --git a/t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/debian/control.in
new file mode 100644
index 0000000..c1c9cdc
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/debian/control.in
@@ -0,0 +1,26 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Uploaders:
+ Wrapped Onto New Line <test@example.com>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+Homepage: https://lintian.debian.org/
+Vcs-Browser:
+# The following line contains "Vcs-Git: \n"
+Vcs-Git:
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests:
+# The following line contains "Provides: \n"
+Provides:
+Recommends: ${false:Positive}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/fill-values b/t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/fill-values
new file mode 100644
index 0000000..65e572e
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/control-has-empty-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-has-empty-field
+Description: Check for empty fields
diff --git a/t/recipes/checks/fields/vcs/control-has-empty-field/eval/desc b/t/recipes/checks/fields/vcs/control-has-empty-field/eval/desc
new file mode 100644
index 0000000..db0637d
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/control-has-empty-field/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-has-empty-field
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/control-has-empty-field/eval/hints b/t/recipes/checks/fields/vcs/control-has-empty-field/eval/hints
new file mode 100644
index 0000000..611b5f2
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/control-has-empty-field/eval/hints
@@ -0,0 +1,5 @@
+control-has-empty-field (source): package-is-co-maintained (with 1 uploaders)
+control-has-empty-field (source): co-maintained-package-with-no-vcs-fields
+control-has-empty-field (changes): package-is-maintained-by-individual
+control-has-empty-field (buildinfo): package-is-maintained-by-individual
+control-has-empty-field (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/debian/control.in
new file mode 100644
index 0000000..f47dd34
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://salsa.debian.org/test/test.git -b valid/syntax [subdir]
+Vcs-Browser: https://salsa.debian.org/test/test
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/fill-values
new file mode 100644
index 0000000..f090b95
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-malformed-vcs-fields-unrel-different-order
+Description: Test malformed VCS-* fields
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/desc b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/desc
new file mode 100644
index 0000000..867ea81
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/desc
@@ -0,0 +1,4 @@
+Testname: fields-malformed-vcs-fields-unrel-different-order
+Test-Against:
+ vcs-field-has-unexpected-spaces
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/hints b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/hints
new file mode 100644
index 0000000..84f91cf
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel-different-order/eval/hints
@@ -0,0 +1,6 @@
+fields-malformed-vcs-fields-unrel-different-order (source): vcs-uri Git https://salsa.debian.org/test/test.git -b valid/syntax [subdir]
+fields-malformed-vcs-fields-unrel-different-order (source): vcs git
+fields-malformed-vcs-fields-unrel-different-order (source): package-is-maintained-by-individual
+fields-malformed-vcs-fields-unrel-different-order (changes): package-is-maintained-by-individual
+fields-malformed-vcs-fields-unrel-different-order (buildinfo): package-is-maintained-by-individual
+fields-malformed-vcs-fields-unrel-different-order (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..6c56f36
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://salsa.debian.org/test/test.git [subdir] -b valid/syntax
+Vcs-Browser: https://salsa.debian.org/test/test
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/fill-values
new file mode 100644
index 0000000..1916a70
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-malformed-vcs-fields-unrel
+Description: Test malformed VCS-* fields
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/desc b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/desc
new file mode 100644
index 0000000..d66e767
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: fields-malformed-vcs-fields-unrel
+Test-Against:
+ vcs-field-has-unexpected-spaces
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/hints b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/hints
new file mode 100644
index 0000000..47a775b
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields-unrel/eval/hints
@@ -0,0 +1,6 @@
+fields-malformed-vcs-fields-unrel (source): vcs-uri Git https://salsa.debian.org/test/test.git [subdir] -b valid/syntax
+fields-malformed-vcs-fields-unrel (source): vcs git
+fields-malformed-vcs-fields-unrel (source): package-is-maintained-by-individual
+fields-malformed-vcs-fields-unrel (changes): package-is-maintained-by-individual
+fields-malformed-vcs-fields-unrel (buildinfo): package-is-maintained-by-individual
+fields-malformed-vcs-fields-unrel (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..d726675
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Browser: svn.debian.org/wsvn/foobar/trunk
+Vcs-Svn: svn+ssh://svn.debian.org/svn/foobar/trunk
+Vcs-Git: https://anonscm.debian.org/test/test.git --branch wrong
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/fill-values
new file mode 100644
index 0000000..7a53bee
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-malformed-vcs-fields
+Description: Test malformed VCS-* fields
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/desc b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/desc
new file mode 100644
index 0000000..e41bb92
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-malformed-vcs-fields
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/hints b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/hints
new file mode 100644
index 0000000..0445201
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-malformed-vcs-fields/eval/hints
@@ -0,0 +1,14 @@
+fields-malformed-vcs-fields (source): vcs-uri Svn svn+ssh://svn.debian.org/svn/foobar/trunk
+fields-malformed-vcs-fields (source): vcs-uri Git https://anonscm.debian.org/test/test.git --branch wrong
+fields-malformed-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Svn svn+ssh://svn.debian.org/svn/foobar/trunk
+fields-malformed-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Git https://anonscm.debian.org/test/test.git --branch wrong
+fields-malformed-vcs-fields (source): vcs-fields-use-more-than-one-vcs git svn
+fields-malformed-vcs-fields (source): vcs-field-uses-unknown-uri-format Browser svn.debian.org/wsvn/foobar/trunk
+fields-malformed-vcs-fields (source): vcs-field-uses-not-recommended-uri-format Svn svn+ssh://svn.debian.org/svn/foobar/trunk
+fields-malformed-vcs-fields (source): vcs-field-has-unexpected-spaces Git https://anonscm.debian.org/test/test.git --branch wrong
+fields-malformed-vcs-fields (source): vcs svn
+fields-malformed-vcs-fields (source): vcs git
+fields-malformed-vcs-fields (source): package-is-maintained-by-individual
+fields-malformed-vcs-fields (changes): package-is-maintained-by-individual
+fields-malformed-vcs-fields (buildinfo): package-is-maintained-by-individual
+fields-malformed-vcs-fields (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/debian/control.in
new file mode 100644
index 0000000..9eb380f
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Vcs-Git: https://salsa.debian.org/project/repo.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/fill-values
new file mode 100644
index 0000000..34b230f
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-missing-vcs-browser
+Description: Check for packages missing Vcs-Browser
diff --git a/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/desc b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/desc
new file mode 100644
index 0000000..1a6b2fa
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-missing-vcs-browser
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/hints b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/hints
new file mode 100644
index 0000000..fc164ff
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-missing-vcs-browser/eval/hints
@@ -0,0 +1,7 @@
+fields-missing-vcs-browser (source): vcs-uri Git https://salsa.debian.org/project/repo.git
+fields-missing-vcs-browser (source): vcs git
+fields-missing-vcs-browser (source): package-is-maintained-by-individual
+fields-missing-vcs-browser (source): missing-vcs-browser-field Vcs-Git https://salsa.debian.org/project/repo.git
+fields-missing-vcs-browser (changes): package-is-maintained-by-individual
+fields-missing-vcs-browser (buildinfo): package-is-maintained-by-individual
+fields-missing-vcs-browser (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..212de12
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: git@git.debian.org:foobar.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/fill-values
new file mode 100644
index 0000000..cca8699
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-not-malformed-vcs-fields
+Description: Test not malformed VCS-* fields (especially #778323)
diff --git a/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/desc b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/desc
new file mode 100644
index 0000000..b0bb689
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/desc
@@ -0,0 +1,4 @@
+Testname: fields-not-malformed-vcs-fields
+Test-Against:
+ vcs-field-uses-unknown-uri-format
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/hints b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/hints
new file mode 100644
index 0000000..5130228
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-not-malformed-vcs-fields/eval/hints
@@ -0,0 +1,7 @@
+fields-not-malformed-vcs-fields (source): vcs-uri Git git@git.debian.org:foobar.git
+fields-not-malformed-vcs-fields (source): vcs-field-uses-not-recommended-uri-format Git git@git.debian.org:foobar.git
+fields-not-malformed-vcs-fields (source): vcs git
+fields-not-malformed-vcs-fields (source): package-is-maintained-by-individual
+fields-not-malformed-vcs-fields (changes): package-is-maintained-by-individual
+fields-not-malformed-vcs-fields (buildinfo): package-is-maintained-by-individual
+fields-not-malformed-vcs-fields (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b341aab
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * QA Upload.
+ * Lintian Test Suite.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in
new file mode 100644
index 0000000..39e7740
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://git.dgit.debian.org/python-ofxhome
+Vcs-Browser: https://browse.dgit.debian.org/python-ofxhome.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values
new file mode 100644
index 0000000..6561c1e
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure-fp
+Description: Test for orphaned package not maintained in Debian infrastucture
+Package-Architecture: all
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc
new file mode 100644
index 0000000..968d201
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure-fp
+Test-Against: orphaned-package-not-maintained-in-debian-infrastructure
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints
new file mode 100644
index 0000000..3002653
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints
@@ -0,0 +1,6 @@
+fields-orphaned-package-not-maintained-in-debian-infrastructure-fp (source): vcs-uri Git https://git.dgit.debian.org/python-ofxhome
+fields-orphaned-package-not-maintained-in-debian-infrastructure-fp (source): vcs git
+fields-orphaned-package-not-maintained-in-debian-infrastructure-fp (source): package-is-maintained-by-individual
+fields-orphaned-package-not-maintained-in-debian-infrastructure-fp (changes): package-is-maintained-by-individual
+fields-orphaned-package-not-maintained-in-debian-infrastructure-fp (buildinfo): package-is-maintained-by-individual
+fields-orphaned-package-not-maintained-in-debian-infrastructure-fp (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b341aab
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * QA Upload.
+ * Lintian Test Suite.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in
new file mode 100644
index 0000000..a553c3a
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://github.com/user/project
+Vcs-Browser: https://github.com/user/project
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values
new file mode 100644
index 0000000..4dfa4f3
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure
+Description: Test for orphaned package not maintained in Debian infrastucture
+Package-Architecture: all
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc
new file mode 100644
index 0000000..ee1e829
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints
new file mode 100644
index 0000000..2252f64
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints
@@ -0,0 +1,7 @@
+fields-orphaned-package-not-maintained-in-debian-infrastructure (source): vcs-uri Git https://github.com/user/project
+fields-orphaned-package-not-maintained-in-debian-infrastructure (source): vcs git
+fields-orphaned-package-not-maintained-in-debian-infrastructure (source): package-is-maintained-by-individual
+fields-orphaned-package-not-maintained-in-debian-infrastructure (source): orphaned-package-not-maintained-in-debian-infrastructure Vcs-Git https://github.com/user/project
+fields-orphaned-package-not-maintained-in-debian-infrastructure (changes): package-is-maintained-by-individual
+fields-orphaned-package-not-maintained-in-debian-infrastructure (buildinfo): package-is-maintained-by-individual
+fields-orphaned-package-not-maintained-in-debian-infrastructure (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..7e22ee3
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://salsa.debian.org/foo/bar.git.git.git.git
+Vcs-Browser: https://salsa.debian.org/foo/bar.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/fill-values
new file mode 100644
index 0000000..658b67a
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-uncanonical-salsa-vcs-fields
+Description: Test for vcs fields needing canonization (salsa)
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/desc b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/desc
new file mode 100644
index 0000000..c675752
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-uncanonical-salsa-vcs-fields
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/hints b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/hints
new file mode 100644
index 0000000..3c9f3c0
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-salsa-vcs-fields/eval/hints
@@ -0,0 +1,8 @@
+fields-uncanonical-salsa-vcs-fields (source): vcs-uri Git https://salsa.debian.org/foo/bar.git.git.git.git
+fields-uncanonical-salsa-vcs-fields (source): vcs-field-not-canonical Git https://salsa.debian.org/foo/bar.git.git.git.git https://salsa.debian.org/foo/bar.git
+fields-uncanonical-salsa-vcs-fields (source): vcs-field-not-canonical Browser https://salsa.debian.org/foo/bar.git https://salsa.debian.org/foo/bar
+fields-uncanonical-salsa-vcs-fields (source): vcs git
+fields-uncanonical-salsa-vcs-fields (source): package-is-maintained-by-individual
+fields-uncanonical-salsa-vcs-fields (changes): package-is-maintained-by-individual
+fields-uncanonical-salsa-vcs-fields (buildinfo): package-is-maintained-by-individual
+fields-uncanonical-salsa-vcs-fields (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..867eefe
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/debian/control.in
@@ -0,0 +1,23 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Browser: https://svn.debian.org/wsvn/foobar/trunk?foo=bar;op=log;something=else
+Vcs-Svn: svn://svn.debian.org/svn/foobar/trunk
+Vcs-Mtn: mtn://www.example.org?org.debian.foobar
+Vcs-Hg: http://hg.debian.org/hg/foobar/pkg/foobar
+Vcs-Git: git://git.debian.org/~djpig/foobar.git -b master
+Vcs-Cvs: :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/foobar module
+Vcs-Bzr: nosmart+http://bzr.debian.org/bzr/collab-maint/foobar
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/fill-values
new file mode 100644
index 0000000..07f1c43
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-uncanonical-vcs-fields
+Description: Test for vcs fields needing canonization
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/desc b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/desc
new file mode 100644
index 0000000..27397ff
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-uncanonical-vcs-fields
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/hints b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/hints
new file mode 100644
index 0000000..9b073c5
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-uncanonical-vcs-fields/eval/hints
@@ -0,0 +1,33 @@
+fields-uncanonical-vcs-fields (source): vcs-uri Svn svn://svn.debian.org/svn/foobar/trunk
+fields-uncanonical-vcs-fields (source): vcs-uri Mtn mtn://www.example.org?org.debian.foobar
+fields-uncanonical-vcs-fields (source): vcs-uri Hg http://hg.debian.org/hg/foobar/pkg/foobar
+fields-uncanonical-vcs-fields (source): vcs-uri Git git://git.debian.org/~djpig/foobar.git -b master
+fields-uncanonical-vcs-fields (source): vcs-uri Cvs :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/foobar module
+fields-uncanonical-vcs-fields (source): vcs-uri Bzr nosmart+http://bzr.debian.org/bzr/collab-maint/foobar
+fields-uncanonical-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Svn svn://svn.debian.org/svn/foobar/trunk
+fields-uncanonical-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Hg http://hg.debian.org/hg/foobar/pkg/foobar
+fields-uncanonical-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Git git://git.debian.org/~djpig/foobar.git -b master
+fields-uncanonical-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Bzr nosmart+http://bzr.debian.org/bzr/collab-maint/foobar
+fields-uncanonical-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Browser https://svn.debian.org/wsvn/foobar/trunk?foo=bar;op=log;something=else
+fields-uncanonical-vcs-fields (source): vcs-git-uses-invalid-user-uri Git git://git.debian.org/~djpig/foobar.git https://anonscm.debian.org/git/users/djpig/foobar.git
+fields-uncanonical-vcs-fields (source): vcs-fields-use-more-than-one-vcs bzr cvs git hg mtn svn
+fields-uncanonical-vcs-fields (source): vcs-field-uses-insecure-uri Svn svn://svn.debian.org/svn/foobar/trunk
+fields-uncanonical-vcs-fields (source): vcs-field-uses-insecure-uri Hg http://hg.debian.org/hg/foobar/pkg/foobar
+fields-uncanonical-vcs-fields (source): vcs-field-uses-insecure-uri Git git://git.debian.org/~djpig/foobar.git -b master
+fields-uncanonical-vcs-fields (source): vcs-field-uses-insecure-uri Cvs :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/foobar module
+fields-uncanonical-vcs-fields (source): vcs-field-uses-insecure-uri Bzr nosmart+http://bzr.debian.org/bzr/collab-maint/foobar
+fields-uncanonical-vcs-fields (source): vcs-field-not-canonical Svn svn://svn.debian.org/svn/foobar/trunk svn://anonscm.debian.org/foobar/trunk
+fields-uncanonical-vcs-fields (source): vcs-field-not-canonical Hg http://hg.debian.org/hg/foobar/pkg/foobar https://anonscm.debian.org/hg/foobar/pkg/foobar
+fields-uncanonical-vcs-fields (source): vcs-field-not-canonical Bzr nosmart+http://bzr.debian.org/bzr/collab-maint/foobar nosmart+https://anonscm.debian.org/bzr/collab-maint/foobar
+fields-uncanonical-vcs-fields (source): vcs-field-bitrotted Cvs :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/foobar :pserver:anonymous@anonscm.debian.org:/cvs/foobar
+fields-uncanonical-vcs-fields (source): vcs-field-bitrotted Browser https://svn.debian.org/wsvn/foobar/trunk?foo=bar;op=log;something=else https://anonscm.debian.org/viewvc/foobar/trunk?foo=bar;something=else
+fields-uncanonical-vcs-fields (source): vcs svn
+fields-uncanonical-vcs-fields (source): vcs mtn
+fields-uncanonical-vcs-fields (source): vcs hg
+fields-uncanonical-vcs-fields (source): vcs git
+fields-uncanonical-vcs-fields (source): vcs cvs
+fields-uncanonical-vcs-fields (source): vcs bzr
+fields-uncanonical-vcs-fields (source): package-is-maintained-by-individual
+fields-uncanonical-vcs-fields (changes): package-is-maintained-by-individual
+fields-uncanonical-vcs-fields (buildinfo): package-is-maintained-by-individual
+fields-uncanonical-vcs-fields (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/debian/control.in
new file mode 100644
index 0000000..9be25c5
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Browser: http://salsa.debian.org/toddy/foobar
+Vcs-Git: git://salsa.debian.org/users/toddy/foobar.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/fill-values
new file mode 100644
index 0000000..edb1367
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-vcs-field-insecure-uri
+Description: Test for VCS-* fields using insecure URIs
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/desc b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/desc
new file mode 100644
index 0000000..e2fe1de
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-vcs-field-insecure-uri
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/hints b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/hints
new file mode 100644
index 0000000..90a1b13
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-insecure-uri/eval/hints
@@ -0,0 +1,8 @@
+fields-vcs-field-insecure-uri (source): vcs-uri Git git://salsa.debian.org/users/toddy/foobar.git
+fields-vcs-field-insecure-uri (source): vcs-field-uses-insecure-uri Git git://salsa.debian.org/users/toddy/foobar.git
+fields-vcs-field-insecure-uri (source): vcs-field-uses-insecure-uri Browser http://salsa.debian.org/toddy/foobar
+fields-vcs-field-insecure-uri (source): vcs git
+fields-vcs-field-insecure-uri (source): package-is-maintained-by-individual
+fields-vcs-field-insecure-uri (changes): package-is-maintained-by-individual
+fields-vcs-field-insecure-uri (buildinfo): package-is-maintained-by-individual
+fields-vcs-field-insecure-uri (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/debian/control.in
new file mode 100644
index 0000000..02d8676
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/debian/control.in
@@ -0,0 +1,21 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Vcs-Bzr: https://gitlab.org/lintian/lintian.git
+Vcs-Git: https://salsa.debian.org/lintian/lintian.git
+Vcs-Svn: https://salsa.debian.org/lintian/lintian.git
+Vcs-Browser: https://salsa.debian.org/lintian/lintian
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..8611280
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-vcs-field-mismatch
+Description: Check for packages with mismatched Vcs-* fields
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/desc b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/desc
new file mode 100644
index 0000000..0447dd8
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-vcs-field-mismatch
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/hints b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/hints
new file mode 100644
index 0000000..3d7136e
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-field-mismatch/eval/hints
@@ -0,0 +1,13 @@
+fields-vcs-field-mismatch (source): vcs-uri Svn https://salsa.debian.org/lintian/lintian.git
+fields-vcs-field-mismatch (source): vcs-uri Git https://salsa.debian.org/lintian/lintian.git
+fields-vcs-field-mismatch (source): vcs-uri Bzr https://gitlab.org/lintian/lintian.git
+fields-vcs-field-mismatch (source): vcs-fields-use-more-than-one-vcs bzr git svn
+fields-vcs-field-mismatch (source): vcs-field-mismatch Vcs-Svn != Vcs-Git https://salsa.debian.org/lintian/lintian.git
+fields-vcs-field-mismatch (source): vcs-field-mismatch Vcs-Bzr != Vcs-Git https://gitlab.org/lintian/lintian.git
+fields-vcs-field-mismatch (source): vcs svn
+fields-vcs-field-mismatch (source): vcs git
+fields-vcs-field-mismatch (source): vcs bzr
+fields-vcs-field-mismatch (source): package-is-maintained-by-individual
+fields-vcs-field-mismatch (changes): package-is-maintained-by-individual
+fields-vcs-field-mismatch (buildinfo): package-is-maintained-by-individual
+fields-vcs-field-mismatch (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/debian/control.in
new file mode 100644
index 0000000..18b6e81
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/debian/control.in
@@ -0,0 +1,23 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Browser: https://anonscm.debian.org/viewvc/foobar/trunk?rev=0&sc=0
+Vcs-Svn: svn://anonscm.debian.org/foobar/trunk
+Vcs-Mtn: www.example.org org.debian.foobar
+Vcs-Hg: https://anonscm.debian.org/hg/foobar/pkg/foobar -b master
+Vcs-Git: https://anonscm.debian.org/users/djpig/foobar.git -b master
+Vcs-Cvs: :pserver:anonymous@anonscm.debian.org:/cvs/foobar module
+Vcs-Bzr: nosmart+http://anonscm.debian.org/bzr/collab-maint/foobar
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/fill-values
new file mode 100644
index 0000000..4179ac4
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-fields/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-vcs-fields
+Description: Test well formed VCS-* fields
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-fields/eval/desc b/t/recipes/checks/fields/vcs/fields-vcs-fields/eval/desc
new file mode 100644
index 0000000..60ce3bf
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-fields/eval/desc
@@ -0,0 +1,8 @@
+Testname: fields-vcs-fields
+Test-Against:
+ vcs-field-bitrotted
+ vcs-field-has-unexpected-spaces
+ vcs-field-not-canonical
+ vcs-field-uses-unknown-uri-format
+ vcs-git-uses-invalid-user-uri
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-fields/eval/hints b/t/recipes/checks/fields/vcs/fields-vcs-fields/eval/hints
new file mode 100644
index 0000000..a6b3361
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-fields/eval/hints
@@ -0,0 +1,27 @@
+fields-vcs-fields (source): vcs-uri Svn svn://anonscm.debian.org/foobar/trunk
+fields-vcs-fields (source): vcs-uri Mtn www.example.org org.debian.foobar
+fields-vcs-fields (source): vcs-uri Hg https://anonscm.debian.org/hg/foobar/pkg/foobar -b master
+fields-vcs-fields (source): vcs-uri Git https://anonscm.debian.org/users/djpig/foobar.git -b master
+fields-vcs-fields (source): vcs-uri Cvs :pserver:anonymous@anonscm.debian.org:/cvs/foobar module
+fields-vcs-fields (source): vcs-uri Bzr nosmart+http://anonscm.debian.org/bzr/collab-maint/foobar
+fields-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Svn svn://anonscm.debian.org/foobar/trunk
+fields-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Hg https://anonscm.debian.org/hg/foobar/pkg/foobar -b master
+fields-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Git https://anonscm.debian.org/users/djpig/foobar.git -b master
+fields-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Bzr nosmart+http://anonscm.debian.org/bzr/collab-maint/foobar
+fields-vcs-fields (source): vcs-obsolete-in-debian-infrastructure Browser https://anonscm.debian.org/viewvc/foobar/trunk?rev=0&sc=0
+fields-vcs-fields (source): vcs-fields-use-more-than-one-vcs bzr cvs git hg mtn svn
+fields-vcs-fields (source): vcs-field-uses-not-recommended-uri-format Mtn www.example.org org.debian.foobar
+fields-vcs-fields (source): vcs-field-uses-insecure-uri Svn svn://anonscm.debian.org/foobar/trunk
+fields-vcs-fields (source): vcs-field-uses-insecure-uri Cvs :pserver:anonymous@anonscm.debian.org:/cvs/foobar module
+fields-vcs-fields (source): vcs-field-uses-insecure-uri Bzr nosmart+http://anonscm.debian.org/bzr/collab-maint/foobar
+fields-vcs-fields (source): vcs-browser-links-to-empty-view https://anonscm.debian.org/viewvc/foobar/trunk?rev=0&sc=0
+fields-vcs-fields (source): vcs svn
+fields-vcs-fields (source): vcs mtn
+fields-vcs-fields (source): vcs hg
+fields-vcs-fields (source): vcs git
+fields-vcs-fields (source): vcs cvs
+fields-vcs-fields (source): vcs bzr
+fields-vcs-fields (source): package-is-maintained-by-individual
+fields-vcs-fields (changes): package-is-maintained-by-individual
+fields-vcs-fields (buildinfo): package-is-maintained-by-individual
+fields-vcs-fields (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..0e690fc
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Vcs-Git: https://salsa.debian.org/foo/bar.git
+Vcs-Browser: https://salsa.debian.org/foo/bar
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/fill-values
new file mode 100644
index 0000000..72be2d8
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-vcs-obsolete-in-debian-infrastructure-unrel
+Description: Check for false positives with deprecated Vcs-* fields
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/desc b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/desc
new file mode 100644
index 0000000..653f1d3
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/desc
@@ -0,0 +1,5 @@
+Testname: fields-vcs-obsolete-in-debian-infrastructure-unrel
+Test-Against:
+ vcs-obsolete-in-debian-infrastructure
+ vcs-field-not-canonical
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/hints b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/hints
new file mode 100644
index 0000000..3b06ac0
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure-unrel/eval/hints
@@ -0,0 +1,6 @@
+fields-vcs-obsolete-in-debian-infrastructure-unrel (source): vcs-uri Git https://salsa.debian.org/foo/bar.git
+fields-vcs-obsolete-in-debian-infrastructure-unrel (source): vcs git
+fields-vcs-obsolete-in-debian-infrastructure-unrel (source): package-is-maintained-by-individual
+fields-vcs-obsolete-in-debian-infrastructure-unrel (changes): package-is-maintained-by-individual
+fields-vcs-obsolete-in-debian-infrastructure-unrel (buildinfo): package-is-maintained-by-individual
+fields-vcs-obsolete-in-debian-infrastructure-unrel (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/debian/control.in
new file mode 100644
index 0000000..79f8014
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Vcs-Svn: svn://anonscm.debian.org/foobar/trunk
+Vcs-Browser: https://anonscm.debian.org/git/lintian/lintian.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/fill-values b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/fill-values
new file mode 100644
index 0000000..5d800ca
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-vcs-obsolete-in-debian-infrastructure
+Description: Check for packages with deprecated Vcs-* fields in the Debian infrastructure
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/desc b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/desc
new file mode 100644
index 0000000..5f7f8be
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-vcs-obsolete-in-debian-infrastructure
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/hints b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/hints
new file mode 100644
index 0000000..dcaac6c
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/fields-vcs-obsolete-in-debian-infrastructure/eval/hints
@@ -0,0 +1,9 @@
+fields-vcs-obsolete-in-debian-infrastructure (source): vcs-uri Svn svn://anonscm.debian.org/foobar/trunk
+fields-vcs-obsolete-in-debian-infrastructure (source): vcs-obsolete-in-debian-infrastructure Svn svn://anonscm.debian.org/foobar/trunk
+fields-vcs-obsolete-in-debian-infrastructure (source): vcs-obsolete-in-debian-infrastructure Browser https://anonscm.debian.org/git/lintian/lintian.git
+fields-vcs-obsolete-in-debian-infrastructure (source): vcs-field-uses-insecure-uri Svn svn://anonscm.debian.org/foobar/trunk
+fields-vcs-obsolete-in-debian-infrastructure (source): vcs svn
+fields-vcs-obsolete-in-debian-infrastructure (source): package-is-maintained-by-individual
+fields-vcs-obsolete-in-debian-infrastructure (changes): package-is-maintained-by-individual
+fields-vcs-obsolete-in-debian-infrastructure (buildinfo): package-is-maintained-by-individual
+fields-vcs-obsolete-in-debian-infrastructure (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/control b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/rules b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/templates b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/fill-values b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/eval/desc b/t/recipes/checks/fields/vcs/legacy-binary/eval/desc
new file mode 100644
index 0000000..17862c3
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/eval/hints b/t/recipes/checks/fields/vcs/legacy-binary/eval/hints
new file mode 100644
index 0000000..6369c95
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/eval/hints
@@ -0,0 +1,9 @@
+binary (source): vcs-uri Svn http://svn.wolffelaar.nl/lintian/trunk
+binary (source): vcs-field-uses-insecure-uri Svn http://svn.wolffelaar.nl/lintian/trunk
+binary (source): vcs-field-uses-insecure-uri Browser http://svn.wolffelaar.nl/lintian/trunk
+binary (source): vcs svn
+binary (source): package-is-co-maintained (with 3 uploaders)
+binary (changes): package-is-maintained-by-individual
+binary (buildinfo): package-is-maintained-by-individual
+binary-data (binary): package-is-maintained-by-individual
+binary (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/legacy-binary/eval/post-test b/t/recipes/checks/fields/vcs/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/changelog.in b/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/changelog.in
new file mode 100644
index 0000000..07162ee
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Niels Thykier <niels@thykier.net> [% $date %]
diff --git a/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/control.in
new file mode 100644
index 0000000..fd4b548
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Uploaders: Niels Thykier <niels@thykier.net>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/fill-values b/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/fill-values
new file mode 100644
index 0000000..4b90c15
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/nmu-qa-upload/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: nmu-qa-upload
+Version: 1.0+nmu1
+Description: Test for QA upload issues
+Author: Debian QA Group <packages@qa.debian.org>
diff --git a/t/recipes/checks/fields/vcs/nmu-qa-upload/eval/desc b/t/recipes/checks/fields/vcs/nmu-qa-upload/eval/desc
new file mode 100644
index 0000000..e177f4e
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/nmu-qa-upload/eval/desc
@@ -0,0 +1,3 @@
+Testname: nmu-qa-upload
+Test-Against: orphaned-package-not-maintained-in-debian-infrastructure
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/nmu-qa-upload/eval/hints b/t/recipes/checks/fields/vcs/nmu-qa-upload/eval/hints
new file mode 100644
index 0000000..77f71a0
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/nmu-qa-upload/eval/hints
@@ -0,0 +1,5 @@
+nmu-qa-upload (source): package-is-co-maintained (with 1 uploaders)
+nmu-qa-upload (source): co-maintained-package-with-no-vcs-fields
+nmu-qa-upload (changes): package-is-maintained-by-individual
+nmu-qa-upload (buildinfo): package-is-maintained-by-individual
+nmu-qa-upload (binary): package-is-maintained-by-individual
diff --git a/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/changelog.in b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b341aab
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * QA Upload.
+ * Lintian Test Suite.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/control.in
new file mode 100644
index 0000000..b2a3ed4
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://salsa.debian.org/lechner-guest/pius.git
+Vcs-Browser: https://salsa.debian.org/lechner-guest/pius
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/fill-values b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/fill-values
new file mode 100644
index 0000000..ac20c27
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: orphaned-package-in-private-salsa-space
+Description: Orphaned package maintained in private salsa space
+Package-Architecture: all
diff --git a/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/desc b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/desc
new file mode 100644
index 0000000..a0dbf6b
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/desc
@@ -0,0 +1,2 @@
+Testname: orphaned-package-in-private-salsa-space
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/hints b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/hints
new file mode 100644
index 0000000..ee38e50
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/orphaned-package-in-private-salsa-space/eval/hints
@@ -0,0 +1,4 @@
+orphaned-package-in-private-salsa-space (source): vcs-uri Git https://salsa.debian.org/lechner-guest/pius.git
+orphaned-package-in-private-salsa-space (source): vcs git
+orphaned-package-in-private-salsa-space (source): package-is-maintained-by-individual
+orphaned-package-in-private-salsa-space (source): orphaned-package-maintained-in-private-space Vcs-Git https://salsa.debian.org/lechner-guest/pius.git
diff --git a/t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/debian/control.in
new file mode 100644
index 0000000..60d4f4e
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian Team-Team <teamteam@lists.alioth.debian.org >
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://salsa.debian.org/lechner-guest/pius.git
+Vcs-Browser: https://salsa.debian.org/lechner-guest/pius
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/fill-values b/t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/fill-values
new file mode 100644
index 0000000..1a4a1d8
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-alioth/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: team-maintained-alioth
+Description: Package that is team maintained, with a @lists.alioth.debian.org email
diff --git a/t/recipes/checks/fields/vcs/team-maintained-alioth/eval/desc b/t/recipes/checks/fields/vcs/team-maintained-alioth/eval/desc
new file mode 100644
index 0000000..815928a
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-alioth/eval/desc
@@ -0,0 +1,2 @@
+Testname: team-maintained-alioth
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/team-maintained-alioth/eval/hints b/t/recipes/checks/fields/vcs/team-maintained-alioth/eval/hints
new file mode 100644
index 0000000..afa4a91
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-alioth/eval/hints
@@ -0,0 +1,3 @@
+team-maintained-alioth (source): vcs-uri Git https://salsa.debian.org/lechner-guest/pius.git
+team-maintained-alioth (source): vcs git
+team-maintained-alioth (source): package-is-team-maintained teamteam@lists.alioth.debian.org (with 0 uploaders)
diff --git a/t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/debian/control.in b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/debian/control.in
new file mode 100644
index 0000000..a790261
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian Team-Team <team+team@tracker.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://salsa.debian.org/lechner-guest/pius.git
+Vcs-Browser: https://salsa.debian.org/lechner-guest/pius
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/fill-values b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/fill-values
new file mode 100644
index 0000000..21901ad
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: team-maintained-tracker-do
+Description: Package that is team maintained, with a @tracker.debian.org email
diff --git a/t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/desc b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/desc
new file mode 100644
index 0000000..26a3c78
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/desc
@@ -0,0 +1,2 @@
+Testname: team-maintained-tracker-do
+Check: fields/vcs
diff --git a/t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/hints b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/hints
new file mode 100644
index 0000000..2ddb4df
--- /dev/null
+++ b/t/recipes/checks/fields/vcs/team-maintained-tracker-do/eval/hints
@@ -0,0 +1,3 @@
+team-maintained-tracker-do (source): vcs-uri Git https://salsa.debian.org/lechner-guest/pius.git
+team-maintained-tracker-do (source): vcs git
+team-maintained-tracker-do (source): package-is-team-maintained team+team@tracker.debian.org (with 0 uploaders)
diff --git a/t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/debian/changelog.in b/t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..936b6bf
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * NMU.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/fill-values b/t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/fill-values
new file mode 100644
index 0000000..1e83afa
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-binary-nmu-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-binary-nmu-version
+Skeleton: upload-non-native
+Version: 1.0-1.0.1
+Description: Check binary NMU version handling
diff --git a/t/recipes/checks/fields/version/fields-binary-nmu-version/eval/desc b/t/recipes/checks/fields/version/fields-binary-nmu-version/eval/desc
new file mode 100644
index 0000000..2aa972b
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-binary-nmu-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-binary-nmu-version
+Check: fields/version
diff --git a/t/recipes/checks/fields/version/fields-binary-nmu-version/eval/hints b/t/recipes/checks/fields/version/fields-binary-nmu-version/eval/hints
new file mode 100644
index 0000000..8b1fa11
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-binary-nmu-version/eval/hints
@@ -0,0 +1 @@
+fields-binary-nmu-version (source): binary-nmu-debian-revision-in-source 1.0-1.0.1
diff --git a/t/recipes/checks/fields/version/fields-general-bad/build-spec/DEBIAN/control.in b/t/recipes/checks/fields/version/fields-general-bad/build-spec/DEBIAN/control.in
new file mode 100644
index 0000000..fec0c25
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-general-bad/build-spec/DEBIAN/control.in
@@ -0,0 +1,17 @@
+Package: fields-general-BAD?
+Source: [% $source %]
+Version: 1.0?
+Architecture: weird i386 amd64
+Maintainer: [% $author %]
+Section:
+Priority: is
+ weird
+Unknown-Field: Hallo World
+Depends: other-package (>= 1.0?), another-package (>< 1.0)
+Conflicts: somepkg | anotherpkg
+Recommends: g++ (>= s4.1)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/version/fields-general-bad/build-spec/doc/changelog.in b/t/recipes/checks/fields/version/fields-general-bad/build-spec/doc/changelog.in
new file mode 100644
index 0000000..dc4c24e
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-general-bad/build-spec/doc/changelog.in
@@ -0,0 +1,17 @@
+[% $testname %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $testname %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/recipes/checks/fields/version/fields-general-bad/build-spec/fill-values b/t/recipes/checks/fields/version/fields-general-bad/build-spec/fill-values
new file mode 100644
index 0000000..a18e752
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-general-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: deb
+Testname: fields-general-bad
+Source: fields-general-BAD?
+Description: Test for package with control bad values
diff --git a/t/recipes/checks/fields/version/fields-general-bad/build-spec/root/usr/lib/lintian/some-file b/t/recipes/checks/fields/version/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-general-bad/build-spec/root/usr/lib/lintian/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/fields/version/fields-general-bad/eval/desc b/t/recipes/checks/fields/version/fields-general-bad/eval/desc
new file mode 100644
index 0000000..e315057
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-general-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-general-bad
+Check: fields/version
diff --git a/t/recipes/checks/fields/version/fields-general-bad/eval/hints b/t/recipes/checks/fields/version/fields-general-bad/eval/hints
new file mode 100644
index 0000000..a3a277e
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-general-bad/eval/hints
@@ -0,0 +1 @@
+fields-general-BAD? (binary): bad-version-number 1.0?
diff --git a/t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/changelog.in b/t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2895dec
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] [% $date %]
+
diff --git a/t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/rules b/t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/rules
new file mode 100644
index 0000000..ce09a53
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-version-bad/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_gencontrol:
+ dh_gencontrol -- -v1.0-0
diff --git a/t/recipes/checks/fields/version/fields-version-bad/build-spec/fill-values b/t/recipes/checks/fields/version/fields-version-bad/build-spec/fill-values
new file mode 100644
index 0000000..fddcd45
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-version-bad/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-bad
+Version: 0-.3
+Description: Test for weird versions
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/fields/version/fields-version-bad/eval/desc b/t/recipes/checks/fields/version/fields-version-bad/eval/desc
new file mode 100644
index 0000000..0693520
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-version-bad/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-version-bad
+Check: fields/version
diff --git a/t/recipes/checks/fields/version/fields-version-bad/eval/hints b/t/recipes/checks/fields/version/fields-version-bad/eval/hints
new file mode 100644
index 0000000..dd9cdc1
--- /dev/null
+++ b/t/recipes/checks/fields/version/fields-version-bad/eval/hints
@@ -0,0 +1,4 @@
+fields-version-bad (source): debian-revision-not-well-formed 0-.3
+fields-version-bad (changes): debian-revision-not-well-formed 0-.3
+fields-version-bad (buildinfo): debian-revision-not-well-formed 0-.3
+fields-version-bad (binary): debian-revision-is-zero 1.0-0
diff --git a/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/control b/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/rules b/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/fields/version/legacy-fields/build-spec/fill-values b/t/recipes/checks/fields/version/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/fields/version/legacy-fields/eval/desc b/t/recipes/checks/fields/version/legacy-fields/eval/desc
new file mode 100644
index 0000000..357797c
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: fields/version
diff --git a/t/recipes/checks/fields/version/legacy-fields/eval/hints b/t/recipes/checks/fields/version/legacy-fields/eval/hints
new file mode 100644
index 0000000..74134fb
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/eval/hints
@@ -0,0 +1,5 @@
+fields (source): debian-revision-not-well-formed 1.5-.3
+fields (changes): debian-revision-not-well-formed 1.5-.3
+fields (buildinfo): debian-revision-not-well-formed 1.5-.3
+fields (binary): debian-revision-not-well-formed 1.5-.3
+another-version (binary): debian-revision-is-zero 123.4-0
diff --git a/t/recipes/checks/fields/version/legacy-fields/eval/post-test b/t/recipes/checks/fields/version/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/fields/version/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/fields/version/repack/count/dfsg1/build-spec/fill-values b/t/recipes/checks/fields/version/repack/count/dfsg1/build-spec/fill-values
new file mode 100644
index 0000000..88e34f3
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/count/dfsg1/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: dfsg1
+Skeleton: upload-non-native
+Version: 1.0+dfsg1-1
+Description: Start with +dfsg-1 instead of +dfsg1-1
+See-Also:
+ https://lists.debian.org/debian-devel/2021/10/msg00026.html
diff --git a/t/recipes/checks/fields/version/repack/count/dfsg1/eval/desc b/t/recipes/checks/fields/version/repack/count/dfsg1/eval/desc
new file mode 100644
index 0000000..dc56923
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/count/dfsg1/eval/desc
@@ -0,0 +1,2 @@
+Testname: dfsg1
+Check: fields/version/repack/count
diff --git a/t/recipes/checks/fields/version/repack/count/dfsg1/eval/hints b/t/recipes/checks/fields/version/repack/count/dfsg1/eval/hints
new file mode 100644
index 0000000..3ae4907
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/count/dfsg1/eval/hints
@@ -0,0 +1 @@
+dfsg1 (source): anticipated-repack-count 1.0+dfsg1-1
diff --git a/t/recipes/checks/fields/version/repack/count/extra-dot/build-spec/fill-values b/t/recipes/checks/fields/version/repack/count/extra-dot/build-spec/fill-values
new file mode 100644
index 0000000..215d96e
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/count/extra-dot/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: extra-dot
+Skeleton: upload-non-native
+Version: 1.0+dfsg.2-1
+Description: Remove extra dot from repack count
+See-Also:
+ https://lists.debian.org/debian-devel/2021/10/msg00026.html
diff --git a/t/recipes/checks/fields/version/repack/count/extra-dot/eval/desc b/t/recipes/checks/fields/version/repack/count/extra-dot/eval/desc
new file mode 100644
index 0000000..fbe8935
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/count/extra-dot/eval/desc
@@ -0,0 +1,2 @@
+Testname: extra-dot
+Check: fields/version/repack/count
diff --git a/t/recipes/checks/fields/version/repack/count/extra-dot/eval/hints b/t/recipes/checks/fields/version/repack/count/extra-dot/eval/hints
new file mode 100644
index 0000000..17855b4
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/count/extra-dot/eval/hints
@@ -0,0 +1 @@
+extra-dot (source): dot-before-repack-count 1.0+dfsg.2-1
diff --git a/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/build-spec/fill-values b/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/build-spec/fill-values
new file mode 100644
index 0000000..1246466
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-version-dfsg-native
+Version: 1.0.dfsg1
+Description: Use of dfsg in a native package
diff --git a/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/desc b/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/desc
new file mode 100644
index 0000000..ba73222
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-version-dfsg-native
+Check: fields/version/repack/native
diff --git a/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/hints b/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/hints
new file mode 100644
index 0000000..5d98b4d
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/native/fields-version-dfsg-native/eval/hints
@@ -0,0 +1 @@
+fields-version-dfsg-native (source): dfsg-version-in-native-package 1.0.dfsg1
diff --git a/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/build-spec/fill-values b/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/build-spec/fill-values
new file mode 100644
index 0000000..412adaa
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-dot-dfsg
+Skeleton: upload-non-native
+Version: 1.0.dfsg1-1
+Description: Use of ".dfsg"
diff --git a/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/desc b/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/desc
new file mode 100644
index 0000000..1be5f5e
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-version-dot-dfsg
+Check: fields/version/repack/period
diff --git a/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/hints b/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/hints
new file mode 100644
index 0000000..a86fb60
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/period/fields-version-dot-dfsg/eval/hints
@@ -0,0 +1 @@
+fields-version-dot-dfsg (source): dfsg-version-with-period 1.0.dfsg1-1
diff --git a/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/build-spec/fill-values b/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/build-spec/fill-values
new file mode 100644
index 0000000..afcb140
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: tilde-dfsg
+Skeleton: upload-non-native
+Version: 1.0~dfsg-1
+Description: Check for dfsg with tilde (~) prefix
+See-Also:
+ https://lists.debian.org/debian-devel/2021/10/msg00012.html
diff --git a/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/desc b/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/desc
new file mode 100644
index 0000000..269dc1e
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/desc
@@ -0,0 +1,2 @@
+Testname: tilde-dfsg
+Check: fields/version/repack/tilde
diff --git a/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/hints b/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/hints
new file mode 100644
index 0000000..0976b4e
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/tilde/tilde-dfsg/eval/hints
@@ -0,0 +1 @@
+tilde-dfsg (source): dfsg-version-with-tilde 1.0~dfsg-1
diff --git a/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/build-spec/fill-values b/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/build-spec/fill-values
new file mode 100644
index 0000000..077bc94
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fields-version-dsfg
+Skeleton: upload-non-native
+Version: 1.0+dsfg1-1
+Description: Check for the dsfg typo
diff --git a/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/desc b/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/desc
new file mode 100644
index 0000000..ef97a2d
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-version-dsfg
+Check: fields/version/repack/typo
diff --git a/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/hints b/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/hints
new file mode 100644
index 0000000..af0b9c4
--- /dev/null
+++ b/t/recipes/checks/fields/version/repack/typo/fields-version-dsfg/eval/hints
@@ -0,0 +1 @@
+fields-version-dsfg (source): dfsg-version-misspelled 1.0+dsfg1-1
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/debian/compat.in b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/fill-values b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/fill-values
new file mode 100644
index 0000000..4551548
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-multiarch-wrong-dir
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Multiarch-related tests but not multiarch itself
+Package-Architecture: any
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/Makefile b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/Makefile
new file mode 100644
index 0000000..58cac33
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/Makefile
@@ -0,0 +1,26 @@
+
+# Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use
+# dpkg-architecture -qDEB_HOST_MULTIARCH
+# Therefore this test is hardcoded to x86 and amd64
+
+ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq (i386,$(ARCH))
+ WRONG_TRIPLET = x86_64-linux-gnu
+else
+ WRONG_TRIPLET = i386-linux-gnu
+endif
+
+
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ # Install it once under the wrong dir
+ install -d $(DESTDIR)/usr/lib/$(WRONG_TRIPLET)
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/$(WRONG_TRIPLET)/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/basic.c b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/desc b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/desc
new file mode 100644
index 0000000..5803c3b
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/desc
@@ -0,0 +1,3 @@
+Testname: binaries-multiarch-wrong-dir
+Test-Architectures: i386 amd64
+Check: files/architecture
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/hints b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/hints
new file mode 100644
index 0000000..4492b0b
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/hints
@@ -0,0 +1 @@
+binaries-multiarch-wrong-dir (binary): triplet-dir-and-architecture-mismatch INCOMPATIBILITY STATEMENT [usr/lib/TRIPLET/]
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/post-test b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/post-test
new file mode 100644
index 0000000..d938f40
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch-wrong-dir/eval/post-test
@@ -0,0 +1,4 @@
+s/i386-linux-gnu/TRIPLET/
+s/x86_64-linux-gnu/TRIPLET/
+s/is for i386 instead of amd64/INCOMPATIBILITY STATEMENT/
+s/is for amd64 instead of i386/INCOMPATIBILITY STATEMENT/
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/compat.in b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/control.in b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/control.in
new file mode 100644
index 0000000..aa271ff
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/control.in
@@ -0,0 +1,21 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}, multiarch-support
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Note there is an explicitly pre-depends on multiarch-support, since
+ older versions of debhelper might not use it yet. dpkg-dev will
+ remove the duplicate entry (if any).
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/libbasic2.symbols b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/libbasic2.symbols
new file mode 100644
index 0000000..c2b8fb3
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/libbasic2.symbols
@@ -0,0 +1,2 @@
+libbasic.so.2 libbasic2 #MINVER#
+ lib_interface@Base 1.0
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/rules b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/rules
new file mode 100644
index 0000000..249fe25
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+
+# Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use
+# dpkg-architecture -qDEB_HOST_MULTIARCH
+# Therefore this test is hardcoded to x86 and amd64
+
+ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq (i386,$(ARCH))
+ TRIPLET = i386-linux-gnu
+else
+ TRIPLET = x86_64-linux-gnu
+endif
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_makeshlibs:
+ # dpkg-dev uses ld.so.conf so if we do not pass the lib directly
+ # this will fail on all x86 machines without with libc6 < 2.13-5
+ dh_makeshlibs -- -edebian/libbasic2/usr/lib/$(TRIPLET)/libbasic.so.2
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/fill-values b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/fill-values
new file mode 100644
index 0000000..a521479
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: binaries-multiarch
+Description: Test of a correct multiarch package
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/Makefile b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/Makefile
new file mode 100644
index 0000000..979e366
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/Makefile
@@ -0,0 +1,26 @@
+
+# Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use
+# dpkg-architecture -qDEB_HOST_MULTIARCH
+# Therefore this test is hardcoded to x86 and amd64
+
+ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifeq (i386,$(ARCH))
+ TRIPLET = i386-linux-gnu
+else
+ TRIPLET = x86_64-linux-gnu
+endif
+
+
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/usr/lib/$(TRIPLET)
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/$(TRIPLET)/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/basic.c b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/basic.c
new file mode 100644
index 0000000..27e93fc
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/build-spec/orig/basic.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+
+static void
+hardening_trigger(char *p, int i, void (*f)(char *))
+{
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
+
+int
+lib_interface(void)
+{
+ printf("Hello world!\n");
+ hardening_trigger(NULL, 0, NULL);
+ return 0;
+}
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/eval/desc b/t/recipes/checks/files/architecture/binaries-multiarch/eval/desc
new file mode 100644
index 0000000..039d4be
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/eval/desc
@@ -0,0 +1,4 @@
+Testname: binaries-multiarch
+Test-Architectures: i386 amd64
+Test-Against: triplet-dir-and-architecture-mismatch
+Check: files/architecture
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/eval/hints b/t/recipes/checks/files/architecture/binaries-multiarch/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/architecture/binaries-multiarch/eval/post-test b/t/recipes/checks/files/architecture/binaries-multiarch/eval/post-test
new file mode 100644
index 0000000..fdc0a20
--- /dev/null
+++ b/t/recipes/checks/files/architecture/binaries-multiarch/eval/post-test
@@ -0,0 +1,2 @@
+s/i386-linux-gnu/x86_64-linux-gnu/
+s/is for i386/is for amd64/
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/debian/control.in b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..f46d6ef
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: utils
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/fill-values b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/fill-values
new file mode 100644
index 0000000..1ce50ee
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: cruft-source-is-missing-unrel
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Package-Architecture: any
+Description: Check for source-is-missing false positives
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/orig/main.c b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/orig/main.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/orig/main.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-build b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-build
new file mode 100755
index 0000000..db309af
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-build
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd "$1"
+
+mkdir -p debian/missing-sources/bar
+cp main.c debian/missing-sources/bar/main.c
+
+ln -s bar debian/missing-sources/foo
+ln -s bar debian/missing-sources/quux
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-upstream b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-upstream
new file mode 100755
index 0000000..fb28255
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/build-spec/pre-upstream
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd "$1"
+
+
+gcc -o foo main.c
+gcc -o bar main.c
+mkdir -p baz/
+gcc -o baz/quux main.c
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/desc b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/desc
new file mode 100644
index 0000000..d9675d9
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-source-is-missing-unrel
+Check: files/architecture
diff --git a/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/hints b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/hints
new file mode 100644
index 0000000..0668955
--- /dev/null
+++ b/t/recipes/checks/files/architecture/cruft-source-is-missing-unrel/eval/hints
@@ -0,0 +1 @@
+cruft-source-is-missing-unrel (binary): package-contains-no-arch-dependent-files
diff --git a/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/debian/install b/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/debian/install
new file mode 100644
index 0000000..1001b9b
--- /dev/null
+++ b/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/debian/install
@@ -0,0 +1 @@
+__init__.py /usr/lib/python3/dist-packages/foo
diff --git a/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/fill-values b/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/fill-values
new file mode 100644
index 0000000..5066a7b
--- /dev/null
+++ b/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: empty-files-arch-any
+Package-Architecture: any
+Description: Only empty files but marked architecture-dependent
diff --git a/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/orig/__init__.py b/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/orig/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/architecture/empty-files-arch-any/build-spec/orig/__init__.py
diff --git a/t/recipes/checks/files/architecture/empty-files-arch-any/eval/desc b/t/recipes/checks/files/architecture/empty-files-arch-any/eval/desc
new file mode 100644
index 0000000..e056a8f
--- /dev/null
+++ b/t/recipes/checks/files/architecture/empty-files-arch-any/eval/desc
@@ -0,0 +1,2 @@
+Testname: empty-files-arch-any
+Check: files/architecture
diff --git a/t/recipes/checks/files/architecture/empty-files-arch-any/eval/hints b/t/recipes/checks/files/architecture/empty-files-arch-any/eval/hints
new file mode 100644
index 0000000..eda52b6
--- /dev/null
+++ b/t/recipes/checks/files/architecture/empty-files-arch-any/eval/hints
@@ -0,0 +1 @@
+empty-files-arch-any (binary): package-contains-no-arch-dependent-files
diff --git a/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/control.in b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/control.in
new file mode 100644
index 0000000..f0f7ed0
--- /dev/null
+++ b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/install b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/fill-values b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/fill-values
new file mode 100644
index 0000000..5f57097
--- /dev/null
+++ b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-arch-indep-not-marked-all
+Package-Architecture: any
+Description: Test of arch indep package not marked arch:all
diff --git a/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/orig/some-file b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/orig/some-file
new file mode 100644
index 0000000..02c9d2d
--- /dev/null
+++ b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/build-spec/orig/some-file
@@ -0,0 +1 @@
+Hi, I could totally be architecture dependent.
diff --git a/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/desc b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/desc
new file mode 100644
index 0000000..92b894c
--- /dev/null
+++ b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-arch-indep-not-marked-all
+Check: files/architecture
diff --git a/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/hints b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/hints
new file mode 100644
index 0000000..a9537ca
--- /dev/null
+++ b/t/recipes/checks/files/architecture/files-arch-indep-not-marked-all/eval/hints
@@ -0,0 +1 @@
+files-arch-indep-not-marked-all (binary): package-contains-no-arch-dependent-files
diff --git a/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/debian/install b/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/debian/install
new file mode 100644
index 0000000..fa93a48
--- /dev/null
+++ b/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/debian/install
@@ -0,0 +1 @@
+dependency_links.txt /usr/lib/python3/dist-packages/foo.egg-info
diff --git a/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/fill-values b/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/fill-values
new file mode 100644
index 0000000..7cdbf9d
--- /dev/null
+++ b/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: very-short-files-arch-any
+Package-Architecture: any
+Description: No file magic available but marked architecture-dependent
diff --git a/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/orig/dependency_links.txt b/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/orig/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/architecture/very-short-files-arch-any/build-spec/orig/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/architecture/very-short-files-arch-any/eval/desc b/t/recipes/checks/files/architecture/very-short-files-arch-any/eval/desc
new file mode 100644
index 0000000..aaa31fa
--- /dev/null
+++ b/t/recipes/checks/files/architecture/very-short-files-arch-any/eval/desc
@@ -0,0 +1,2 @@
+Testname: very-short-files-arch-any
+Check: files/architecture
diff --git a/t/recipes/checks/files/architecture/very-short-files-arch-any/eval/hints b/t/recipes/checks/files/architecture/very-short-files-arch-any/eval/hints
new file mode 100644
index 0000000..439be0a
--- /dev/null
+++ b/t/recipes/checks/files/architecture/very-short-files-arch-any/eval/hints
@@ -0,0 +1 @@
+very-short-files-arch-any (binary): package-contains-no-arch-dependent-files
diff --git a/t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/fill-values b/t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/fill-values
new file mode 100644
index 0000000..f616eca
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-empty-diff
+Source-Format: 1.0
+Skeleton: upload-non-native
+Description: Test an empty Debian diff
diff --git a/t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/pre-upstream.in b/t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/pre-upstream.in
new file mode 100755
index 0000000..9dcdfd1
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-empty-diff/build-spec/pre-upstream.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e
+
+cp -rp "[% $source_path %]/debian" "$1"
diff --git a/t/recipes/checks/files/artifact/cruft-empty-diff/eval/desc b/t/recipes/checks/files/artifact/cruft-empty-diff/eval/desc
new file mode 100644
index 0000000..a14797e
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-empty-diff/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-empty-diff
+Check: files/artifact
+See-Also:
+ Bug#498668
diff --git a/t/recipes/checks/files/artifact/cruft-empty-diff/eval/hints b/t/recipes/checks/files/artifact/cruft-empty-diff/eval/hints
new file mode 100644
index 0000000..a0d7c56
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-empty-diff/eval/hints
@@ -0,0 +1 @@
+cruft-empty-diff (source): no-debian-changes
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/rules b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/somepackage.substvars b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/somepackage.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/somepackage.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/substvars b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/fill-values b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/fill-values
new file mode 100644
index 0000000..c6798f7
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-diff
+Skeleton: upload-non-native
+Source-Format: 1.0
+Description: Check for cruft added in the diff
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/pre-build b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/pre-build
new file mode 100755
index 0000000..537b323
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/build-spec/pre-build
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+mkdir "${dir}/.pc"
+echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/eval/desc b/t/recipes/checks/files/artifact/cruft-general-diff/eval/desc
new file mode 100644
index 0000000..a6c44cd
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-general-diff
+Check: files/artifact
+See-Also:
+ Bug#598251
diff --git a/t/recipes/checks/files/artifact/cruft-general-diff/eval/hints b/t/recipes/checks/files/artifact/cruft-general-diff/eval/hints
new file mode 100644
index 0000000..773b6df
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-diff/eval/hints
@@ -0,0 +1,16 @@
+cruft-general-diff (source): debian-adds-svn-control-dir [.svn/]
+cruft-general-diff (source): debian-adds-svn-conflict-file [foo.r1352]
+cruft-general-diff (source): debian-adds-svn-commit-file [svn-commit.tmp]
+cruft-general-diff (source): debian-adds-svk-commit-file [svk-commit444.tmp]
+cruft-general-diff (source): debian-adds-quilt-control-dir [.pc/]
+cruft-general-diff (source): debian-adds-patch-failure-file [foo.rej]
+cruft-general-diff (source): debian-adds-hg-tags-file [.hgtags]
+cruft-general-diff (source): debian-adds-hg-control-dir [.hg/]
+cruft-general-diff (source): debian-adds-git-control-dir [.git/]
+cruft-general-diff (source): debian-adds-editor-backup-file [foo~]
+cruft-general-diff (source): debian-adds-cvs-control-dir [CVS/]
+cruft-general-diff (source): debian-adds-cvs-conflict-copy [.#foo.1.1]
+cruft-general-diff (source): debian-adds-bzr-control-dir [.bzr/]
+cruft-general-diff (source): debian-adds-bts-control-dir [.be/]
+cruft-general-diff (source): debian-adds-arch-inventory-file [.arch-inventory]
+cruft-general-diff (source): debian-adds-arch-control-dir [{arch}/]
diff --git a/t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/rules b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/substvars b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/files/artifact/cruft-general-native/build-spec/fill-values b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/fill-values
new file mode 100644
index 0000000..8460259
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-general-native
+Description: Check for cruft in a native package
diff --git a/t/recipes/checks/files/artifact/cruft-general-native/build-spec/pre-build b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/pre-build
new file mode 100755
index 0000000..c594074
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-native/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/files/artifact/cruft-general-native/eval/desc b/t/recipes/checks/files/artifact/cruft-general-native/eval/desc
new file mode 100644
index 0000000..08a8e32
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-native
+Check: files/artifact
diff --git a/t/recipes/checks/files/artifact/cruft-general-native/eval/hints b/t/recipes/checks/files/artifact/cruft-general-native/eval/hints
new file mode 100644
index 0000000..46e6e4e
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-native/eval/hints
@@ -0,0 +1,15 @@
+cruft-general-native (source): source-contains-svn-control-dir [.svn/]
+cruft-general-native (source): source-contains-svn-conflict-file [foo.r1352]
+cruft-general-native (source): source-contains-svn-commit-file [svn-commit.tmp]
+cruft-general-native (source): source-contains-svk-commit-file [svk-commit444.tmp]
+cruft-general-native (source): source-contains-patch-failure-file [foo.rej]
+cruft-general-native (source): source-contains-hg-tags-file [.hgtags]
+cruft-general-native (source): source-contains-hg-control-dir [.hg/]
+cruft-general-native (source): source-contains-git-control-dir [.git/]
+cruft-general-native (source): source-contains-editor-backup-file [foo~]
+cruft-general-native (source): source-contains-cvs-control-dir [CVS/]
+cruft-general-native (source): source-contains-cvs-conflict-copy [.#foo.1.1]
+cruft-general-native (source): source-contains-bzr-control-dir [.bzr/]
+cruft-general-native (source): source-contains-bts-control-dir [.be/]
+cruft-general-native (source): source-contains-arch-inventory-file [.arch-inventory]
+cruft-general-native (source): source-contains-arch-control-dir [{arch}/]
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/README.source b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/README.source
new file mode 100644
index 0000000..0bbaa60
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/README.source
@@ -0,0 +1 @@
+Some information about the patch system
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/rules b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/somepackage.substvars b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/somepackage.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/somepackage.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/substvars b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/fill-values b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/fill-values
new file mode 100644
index 0000000..01bda9c
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-quilt
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Check for cruft added in a 3.0 (quilt) package
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/pre-build b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/pre-build
new file mode 100755
index 0000000..53e0ddd
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/build-spec/pre-build
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+mkdir "${dir}/.pc"
+echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/eval/desc b/t/recipes/checks/files/artifact/cruft-general-quilt/eval/desc
new file mode 100644
index 0000000..8148862
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-general-quilt
+Check: files/artifact
+See-Also:
+ Bug#598251
diff --git a/t/recipes/checks/files/artifact/cruft-general-quilt/eval/hints b/t/recipes/checks/files/artifact/cruft-general-quilt/eval/hints
new file mode 100644
index 0000000..f6d19f8
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-quilt/eval/hints
@@ -0,0 +1,16 @@
+cruft-general-quilt (source): debian-adds-svn-control-dir [debian/.svn/]
+cruft-general-quilt (source): debian-adds-svn-conflict-file [debian/foo.r1352]
+cruft-general-quilt (source): debian-adds-svn-commit-file [debian/svn-commit.tmp]
+cruft-general-quilt (source): debian-adds-svk-commit-file [debian/svk-commit444.tmp]
+cruft-general-quilt (source): debian-adds-quilt-control-dir [debian/.pc/]
+cruft-general-quilt (source): debian-adds-patch-failure-file [debian/foo.rej]
+cruft-general-quilt (source): debian-adds-hg-tags-file [debian/.hgtags]
+cruft-general-quilt (source): debian-adds-hg-control-dir [debian/.hg/]
+cruft-general-quilt (source): debian-adds-git-control-dir [debian/.git/]
+cruft-general-quilt (source): debian-adds-editor-backup-file [debian/foo~]
+cruft-general-quilt (source): debian-adds-cvs-control-dir [debian/CVS/]
+cruft-general-quilt (source): debian-adds-cvs-conflict-copy [debian/.#foo.1.1]
+cruft-general-quilt (source): debian-adds-bzr-control-dir [debian/.bzr/]
+cruft-general-quilt (source): debian-adds-bts-control-dir [debian/.be/]
+cruft-general-quilt (source): debian-adds-arch-inventory-file [debian/.arch-inventory]
+cruft-general-quilt (source): debian-adds-arch-control-dir [debian/{arch}/]
diff --git a/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/fill-values b/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/fill-values
new file mode 100644
index 0000000..b153334
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: cruft-general-test-suite
+Skeleton: upload-non-native
+Description: Check that cruft in test suites is okay
diff --git a/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/orig/hello.c b/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/orig/hello.c
new file mode 100644
index 0000000..1b47b80
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ printf("Hello world!\n");
+ return 0;
+}
diff --git a/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/pre-upstream b/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/pre-upstream
new file mode 100755
index 0000000..8665c92
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-test-suite/build-spec/pre-upstream
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist upstream. We do much of it
+# here rather than in the template so that Lintian itself can be imported into
+# revision control systems.
+
+set -e
+dir="$1"
+
+mkdir -p "${dir}/t/CVS"
+echo 'source-contains-cvs-control-dir' > "${dir}/t/CVS/Entries"
+mkdir -p "${dir}/foo/t/.svn"
+echo 'source-contains-svn-control-dir' > "${dir}/foo/t/.svn/format"
+mkdir -p "${dir}/test/.bzr"
+echo 'source-contains-bzr-control-dir' > "${dir}/test/.bzr/foo"
+mkdir -p "${dir}/bar/test/{arch}"
+echo 'source-contains-arch-control-dir' > "${dir}/bar/test/{arch}/foo"
+mkdir -p "${dir}/tests/.git"
+echo 'source-contains-git-control-dir' > "${dir}/tests/.git/foo"
+mkdir -p "${dir}/baz/foo/tests/.hg"
+echo 'source-contains-hg-control-dir' > "${dir}/baz/foo/tests/.hg/foo"
+mkdir -p "${dir}/testset/.be"
+echo 'source-contains-bts-control-dir' > "${dir}/testset/.be/foo"
+
+echo 'source-contains-svn-commit-file' > "${dir}/t/svn-commit.tmp"
+echo 'source-contains-svk-commit-file' > "${dir}/t/svk-commit444.tmp"
+echo 'source-contains-arch-inventory-file' > "${dir}/t/.arch-inventory"
+echo 'source-contains-hg-tags-file' > "${dir}/t/.hgtags"
+echo 'source-contains-cvs-conflict-copy' > "${dir}/t/.#foo.1.1"
+echo 'source-contains-svn-conflict-file' > "${dir}/t/foo.r1352"
+
+echo 'configure-generated-file-in-source' > "${dir}/tests/config.cache"
+
+cd "$1"
+gcc -o t/hello hello.c
diff --git a/t/recipes/checks/files/artifact/cruft-general-test-suite/eval/desc b/t/recipes/checks/files/artifact/cruft-general-test-suite/eval/desc
new file mode 100644
index 0000000..05cb06f
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-test-suite/eval/desc
@@ -0,0 +1,16 @@
+Testname: cruft-general-test-suite
+Check: files/artifact
+Test-Against:
+ source-contains-arch-control-dir
+ source-contains-arch-inventory-file
+ source-contains-bts-control-dir
+ source-contains-bzr-control-dir
+ source-contains-cvs-conflict-copy
+ source-contains-cvs-control-dir
+ source-contains-git-control-dir
+ source-contains-hg-control-dir
+ source-contains-hg-tags-file
+ source-contains-svk-commit-file
+ source-contains-svn-commit-file
+ source-contains-svn-conflict-file
+ source-contains-svn-control-dir
diff --git a/t/recipes/checks/files/artifact/cruft-general-test-suite/eval/hints b/t/recipes/checks/files/artifact/cruft-general-test-suite/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-test-suite/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/patches/wig-pen b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
new file mode 100644
index 0000000..a452b53
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/patches/wig-pen
@@ -0,0 +1,5 @@
+--- upstream/README
++++ debian/README
+@@ -1 +1 @@
+-README
++README for wig&pen
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/rules b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/rules
new file mode 100755
index 0000000..413418b
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_prep:
+ dh_prep -X~ -Xrej
+
+clean:
+ @echo 'Do nothing'
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/substvars b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/debian/substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/fill-values b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/fill-values
new file mode 100644
index 0000000..edb39d9
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-general-wig-pen
+Skeleton: upload-non-native
+Source-Format: 2.0
+Description: Check for cruft added in a 2.0 package
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/orig/README b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/pre-build b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/pre-build
new file mode 100755
index 0000000..78f359c
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/build-spec/pre-build
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1/debian"
+
+mkdir "${dir}/CVS"
+echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries"
+mkdir "${dir}/.svn"
+echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format"
+mkdir "${dir}/.bzr"
+echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo"
+mkdir "${dir}/{arch}"
+echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo"
+mkdir "${dir}/.git"
+echo 'diff-contains-git-control-dir' > "${dir}/.git/foo"
+mkdir "${dir}/.hg"
+echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo"
+mkdir "${dir}/.be"
+echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo"
+
+echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt"
+echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp"
+echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp"
+echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory"
+echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags"
+echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1"
+echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352"
+echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej"
+echo 'diff-contains-editor-backup-file' > "${dir}/foo~"
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/desc b/t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/desc
new file mode 100644
index 0000000..404ac05
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-wig-pen
+Check: files/artifact
diff --git a/t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/hints b/t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/hints
new file mode 100644
index 0000000..1b8bb32
--- /dev/null
+++ b/t/recipes/checks/files/artifact/cruft-general-wig-pen/eval/hints
@@ -0,0 +1,15 @@
+cruft-general-wig-pen (source): debian-adds-svn-control-dir [debian/.svn/]
+cruft-general-wig-pen (source): debian-adds-svn-conflict-file [debian/foo.r1352]
+cruft-general-wig-pen (source): debian-adds-svn-commit-file [debian/svn-commit.tmp]
+cruft-general-wig-pen (source): debian-adds-svk-commit-file [debian/svk-commit444.tmp]
+cruft-general-wig-pen (source): debian-adds-patch-failure-file [debian/foo.rej]
+cruft-general-wig-pen (source): debian-adds-hg-tags-file [debian/.hgtags]
+cruft-general-wig-pen (source): debian-adds-hg-control-dir [debian/.hg/]
+cruft-general-wig-pen (source): debian-adds-git-control-dir [debian/.git/]
+cruft-general-wig-pen (source): debian-adds-editor-backup-file [debian/foo~]
+cruft-general-wig-pen (source): debian-adds-cvs-control-dir [debian/CVS/]
+cruft-general-wig-pen (source): debian-adds-cvs-conflict-copy [debian/.#foo.1.1]
+cruft-general-wig-pen (source): debian-adds-bzr-control-dir [debian/.bzr/]
+cruft-general-wig-pen (source): debian-adds-bts-control-dir [debian/.be/]
+cruft-general-wig-pen (source): debian-adds-arch-inventory-file [debian/.arch-inventory]
+cruft-general-wig-pen (source): debian-adds-arch-control-dir [debian/{arch}/]
diff --git a/t/recipes/checks/files/banned/fake-banned-file/build-spec/debian/install b/t/recipes/checks/files/banned/fake-banned-file/build-spec/debian/install
new file mode 100644
index 0000000..399564c
--- /dev/null
+++ b/t/recipes/checks/files/banned/fake-banned-file/build-spec/debian/install
@@ -0,0 +1 @@
+data* usr/share/lintian/
diff --git a/t/recipes/checks/files/banned/fake-banned-file/build-spec/fill-values b/t/recipes/checks/files/banned/fake-banned-file/build-spec/fill-values
new file mode 100644
index 0000000..fbc69f4
--- /dev/null
+++ b/t/recipes/checks/files/banned/fake-banned-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fake-banned-file
+Description: Test of md5sums forbidden-file
diff --git a/t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-forbidden-lintian-files b/t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-forbidden-lintian-files
new file mode 100644
index 0000000..4a6664f
--- /dev/null
+++ b/t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-forbidden-lintian-files
@@ -0,0 +1,5 @@
+This file is here to test lintian md5sums forbidden data file.
+
+It is a free software under CC0 license if copyrightable.
+
+Bastien ROUCARIÈS \ No newline at end of file
diff --git a/t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-non-free-lintian-files b/t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-non-free-lintian-files
new file mode 100644
index 0000000..70bb33a
--- /dev/null
+++ b/t/recipes/checks/files/banned/fake-banned-file/build-spec/orig/data-non-free-lintian-files
@@ -0,0 +1,5 @@
+This file is here to test lintian md5sums non free file
+
+It is a free software under CC0 license if copyrightable.
+
+Bastien ROUCARIÈS \ No newline at end of file
diff --git a/t/recipes/checks/files/banned/fake-banned-file/eval/desc b/t/recipes/checks/files/banned/fake-banned-file/eval/desc
new file mode 100644
index 0000000..e8df3c6
--- /dev/null
+++ b/t/recipes/checks/files/banned/fake-banned-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: fake-banned-file
+Check: files/banned
diff --git a/t/recipes/checks/files/banned/fake-banned-file/eval/hints b/t/recipes/checks/files/banned/fake-banned-file/eval/hints
new file mode 100644
index 0000000..f175644
--- /dev/null
+++ b/t/recipes/checks/files/banned/fake-banned-file/eval/hints
@@ -0,0 +1 @@
+fake-banned-file (source): license-problem-md5sum-non-distributable-file usual name is data-forbidden-lintian-files. This is part of lintian test suite, used for testing this tag See also http://lintian.debian.org. [data-forbidden-lintian-files]
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/debian/install b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/debian/install
new file mode 100644
index 0000000..399564c
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/debian/install
@@ -0,0 +1 @@
+data* usr/share/lintian/
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/fill-values b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/fill-values
new file mode 100644
index 0000000..9a793ab
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-non-free-img
+Description: Test of non free image like lenna
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna-2.jpeg b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna-2.jpeg
new file mode 100644
index 0000000..ddaae15
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna-2.jpeg
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.bmp b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.bmp
new file mode 100644
index 0000000..ec36f51
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.bmp
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.eps b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.eps
new file mode 100644
index 0000000..1e24299
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.eps
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.jpeg b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.jpeg
new file mode 100644
index 0000000..beba59d
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.jpeg
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.mat b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.mat
new file mode 100644
index 0000000..cc91977
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.mat
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.pdf b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.pdf
new file mode 100644
index 0000000..7f011a5
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.pdf
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.png b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.png
new file mode 100644
index 0000000..4e78df8
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.png
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.ps b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.ps
new file mode 100644
index 0000000..7c0029c
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/build-spec/orig/data-fake-lenna.ps
Binary files differ
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/desc b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/desc
new file mode 100644
index 0000000..cdb3d9d
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-non-free-img
+Check: files/banned/lenna
diff --git a/t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/hints b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/hints
new file mode 100644
index 0000000..92f39c3
--- /dev/null
+++ b/t/recipes/checks/files/banned/lenna/cruft-non-free-img/eval/hints
@@ -0,0 +1,7 @@
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.ps]
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.png]
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.pdf]
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.mat]
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.jpeg]
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.eps]
+cruft-non-free-img (source): license-problem-non-free-img-lenna [data-fake-lenna.bmp]
diff --git a/t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/debian/rules b/t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/debian/rules
new file mode 100644
index 0000000..506639f
--- /dev/null
+++ b/t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/debian/rules
@@ -0,0 +1,73 @@
+#!/usr/bin/make -f
+
+PKG :=$(shell dh_listpackages)
+SHARE:= debian/$(PKG)/usr/share
+DATA := $(SHARE)/$(PKG)
+DOC := $(SHARE)/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DOC) $(DATA)
+
+ # Vcs stuff
+ mkdir $(DATA)/.svn $(DATA)/.git
+ touch $(DATA)/.svn/file
+ touch $(DATA)/.git/file
+ touch $(DATA)/.gitignore
+ touch $(DATA)/.git_ignore
+ mkdir $(DATA)/sub-git1/
+ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz
+ touch $(DATA)/sub-git1/.gitattributes
+ touch $(DATA)/sub-git1/.gitmodules
+
+ touch $(DATA)/svn-commit-yeehaa.tmp
+ touch $(DATA)/svk-commit-yeehaa.tmp
+
+ # bts control dir
+ mkdir $(DATA)/.be
+ touch $(DATA)/.be/file
+
+ # macos stuff
+ touch $(DATA)/.DS_Store
+ touch $(DATA)/._stuff
+
+ # windows
+ touch $(DATA)/Thumbs.db
+
+ # Foreign READMEs
+ echo "Hallo World Mac" > $(DOC)/README.mac
+ echo "Hallo World Win" > $(DOC)/README.windows
+
+ # Linda override
+ mkdir -p $(SHARE)/linda/overrides
+ touch $(SHARE)/linda/overrides/$(PKG)
+
+ # CMake private files
+ mkdir -p $(SHARE)/cmake-3.1/Modules
+ touch $(SHARE)/cmake-3.1/FindFoo.cmake
+ touch $(SHARE)/cmake-3.1/Modules/FindVar.cmake
+
+ # Ignored Cargo sources
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/.gitignore
+ touch $(SHARE)/cargo/registry/crate-1.0.0/LICENSE
+ touch $(SHARE)/cargo/registry/crate-1.0.0/templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/foo_templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/foo_templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d
+ touch $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d/readme.tmpl
+ echo '#!/bin/sh' > $(SHARE)/cargo/registry/crate-1.0.0/test.sh
+ echo '#!/usr/bin/python' > $(SHARE)/cargo/registry/crate-1.0.0/test.py
+ chmod a+x $(SHARE)/cargo/registry/crate-1.0.0/test.py
+
+ # Documentation outside /usr/share/doc
+ touch $(DATA)/readme.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme_1.1.txt
+ touch $(DATA)/readme-1.1.txt
+ touch $(DATA)/readmefirst.txt
+ touch $(DATA)/readMesh_off.m # False-positive from #914500
diff --git a/t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/fill-values b/t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/fill-values
new file mode 100644
index 0000000..b55ed53
--- /dev/null
+++ b/t/recipes/checks/files/bugs/files-package-contains-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-package-contains-foo
+Description: Test tags about cruft in binary packages
diff --git a/t/recipes/checks/files/bugs/files-package-contains-foo/eval/desc b/t/recipes/checks/files/bugs/files-package-contains-foo/eval/desc
new file mode 100644
index 0000000..c5565dc
--- /dev/null
+++ b/t/recipes/checks/files/bugs/files-package-contains-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-foo
+Check: files/bugs
diff --git a/t/recipes/checks/files/bugs/files-package-contains-foo/eval/hints b/t/recipes/checks/files/bugs/files-package-contains-foo/eval/hints
new file mode 100644
index 0000000..176942d
--- /dev/null
+++ b/t/recipes/checks/files/bugs/files-package-contains-foo/eval/hints
@@ -0,0 +1 @@
+files-package-contains-foo (binary): package-contains-bts-control-dir [usr/share/files-package-contains-foo/.be/]
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/eval/desc b/t/recipes/checks/files/bugs/legacy-filenames/eval/desc
new file mode 100644
index 0000000..3b14631
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/bugs
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/eval/hints b/t/recipes/checks/files/bugs/legacy-filenames/eval/hints
new file mode 100644
index 0000000..2b4cef3
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/eval/hints
@@ -0,0 +1,2 @@
+filenames (binary): package-contains-bts-control-dir [usr/lib/ma-dir/perl/version/.ditrack/]
+filenames (binary): package-contains-bts-control-dir [usr/lib/ma-dir/perl/version/.be/]
diff --git a/t/recipes/checks/files/bugs/legacy-filenames/eval/post-test b/t/recipes/checks/files/bugs/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/bugs/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/eval/desc b/t/recipes/checks/files/build-path/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..c2968d2
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/build-path
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/eval/hints b/t/recipes/checks/files/build-path/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..a68cf51
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/eval/hints
@@ -0,0 +1,14 @@
+files-foo-in-bar (binary): dir-or-file-in-build-tree [var/lib/sbuild/bar]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [var/lib/sbuild/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [var/lib/buildd/bar]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [var/lib/buildd/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [var/cache/pbuilder/build/bar]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [var/cache/pbuilder/build/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [tmp/buildd/dir/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [tmp/buildd/dir/foo/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [tmp/buildd/dir/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [tmp/buildd/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [build/dir/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [build/dir/foo/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [build/dir/]
+files-foo-in-bar (binary): dir-or-file-in-build-tree [build/]
diff --git a/t/recipes/checks/files/build-path/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/build-path/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/build-path/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/debian/install b/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/fill-values b/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/fill-values
new file mode 100644
index 0000000..0651418
--- /dev/null
+++ b/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: not-a-bz2
+Skeleton: upload-native
+Description: A file with .bz2 extension that is not a bzip2 file
+Extra-Build-Depends: bzip2
diff --git a/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/orig/not-a.bz2 b/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/orig/not-a.bz2
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/bz2/not-a-bz2/build-spec/orig/not-a.bz2
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/desc b/t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/desc
new file mode 100644
index 0000000..18ab6a8
--- /dev/null
+++ b/t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-a-bz2
+Check: files/compressed/bz2
diff --git a/t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/hints b/t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/hints
new file mode 100644
index 0000000..100270a
--- /dev/null
+++ b/t/recipes/checks/files/compressed/bz2/not-a-bz2/eval/hints
@@ -0,0 +1 @@
+not-a-bz2 (binary): broken-bz2 [etc/not-a.bz2]
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/clean b/t/recipes/checks/files/compressed/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/dirs b/t/recipes/checks/files/compressed/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/examples b/t/recipes/checks/files/compressed/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/install b/t/recipes/checks/files/compressed/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/links b/t/recipes/checks/files/compressed/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/manpages b/t/recipes/checks/files/compressed/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/debian/rules b/t/recipes/checks/files/compressed/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/fill-values b/t/recipes/checks/files/compressed/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/compressed/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/dir b/t/recipes/checks/files/compressed/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/compressed/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/compressed/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/compressed/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/compressed/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/compressed/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/compressed/files-general/build-spec/orig/types b/t/recipes/checks/files/compressed/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/compressed/files-general/eval/desc b/t/recipes/checks/files/compressed/files-general/eval/desc
new file mode 100644
index 0000000..21a2996
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/compressed
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/compressed/files-general/eval/hints b/t/recipes/checks/files/compressed/files-general/eval/hints
new file mode 100644
index 0000000..7ac7833
--- /dev/null
+++ b/t/recipes/checks/files/compressed/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): compressed-duplicate [usr/share/doc/lintian/lintian-16x16.png.gz]
diff --git a/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/control.in b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/control.in
new file mode 100644
index 0000000..567bd9b
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Multi-Arch: same
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+
+
diff --git a/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/install b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/install
new file mode 100644
index 0000000..cfd0b7d
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/install
@@ -0,0 +1 @@
+*.gz* etc/
diff --git a/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/rules b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/rules
new file mode 100755
index 0000000..8ed2f6a
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ dh_auto_build
+ # changelog says Mon, 02 Mar 2020 17:44:19 +0000
+ touch -m -d "2003-06-21 12:12:12 UTC" before-changelog
+ gzip before-changelog
+ touch -m -d "Mon, 02 Mar 2020 23:44:19 +0000" after-changelog
+ gzip after-changelog
+
+override_dh_install:
+ dh_install
+
+override_dh_clean:
+ dh_clean
+ rm -f before-changelog.gz after-changelog.gz
+
+override_dh_strip_nondeterminism:
+ # Skip, it messes with our test
diff --git a/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/fill-values b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/fill-values
new file mode 100644
index 0000000..3238173
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: files-gzip-ma-same
+Skeleton: upload-native
+Package-Architecture: any
+Description: Test for issues handling gz in Multi-Arch same pkgs
+Date: Mon, 02 Mar 2020 17:44:19 +0000
diff --git a/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/desc b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/desc
new file mode 100644
index 0000000..c1c585c
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-gzip-ma-same
+Check: files/compressed/gz
diff --git a/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/hints b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/hints
new file mode 100644
index 0000000..8dad13f
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/files-gzip-ma-same/eval/hints
@@ -0,0 +1 @@
+files-gzip-ma-same (binary): gzip-file-is-not-multi-arch-same-safe [etc/after-changelog.gz]
diff --git a/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/debian/install b/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/fill-values b/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/fill-values
new file mode 100644
index 0000000..7f28eea
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: not-a-gz
+Skeleton: upload-native
+Description: A file with .gz extension that is not a gzip file
diff --git a/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/orig/not-a.gz b/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/orig/not-a.gz
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/not-a-gz/build-spec/orig/not-a.gz
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/gz/not-a-gz/eval/desc b/t/recipes/checks/files/compressed/gz/not-a-gz/eval/desc
new file mode 100644
index 0000000..f7c6a1d
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/not-a-gz/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-a-gz
+Check: files/compressed/gz
diff --git a/t/recipes/checks/files/compressed/gz/not-a-gz/eval/hints b/t/recipes/checks/files/compressed/gz/not-a-gz/eval/hints
new file mode 100644
index 0000000..b9cc63a
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/not-a-gz/eval/hints
@@ -0,0 +1 @@
+not-a-gz (binary): broken-gz [etc/not-a.gz]
diff --git a/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/install b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/install
new file mode 100644
index 0000000..cfd0b7d
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/install
@@ -0,0 +1 @@
+*.gz* etc/
diff --git a/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/rules b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/rules
new file mode 100755
index 0000000..ff06ff9
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+pkg=files-gzip
+%:
+ dh $@
+
+override_dh_auto_build:
+ dh_auto_build
+ # changelog says Mon, 02 Mar 2020 17:44:19 +0000
+ touch -m -d "2003-06-21 12:12:12 UTC" before-changelog
+ gzip before-changelog
+ touch -m -d "Mon, 02 Mar 2020 23:44:19 +0000" after-changelog
+ gzip after-changelog
+
+override_dh_install:
+ dh_install
+
+override_dh_clean:
+ dh_clean
+ rm -f before-changelog.gz after-changelog.gz
+
+override_dh_strip_nondeterminism:
+ # Skip, it messes with our test
diff --git a/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/fill-values b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/fill-values
new file mode 100644
index 0000000..e2fbea1
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: timestamp-in-gzip
+Skeleton: upload-native
+Description: Test for timestamps in gzipped files
+Date: Mon, 02 Mar 2020 17:44:19 +0000
diff --git a/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/desc b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/desc
new file mode 100644
index 0000000..7e22629
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/desc
@@ -0,0 +1,3 @@
+Testname: timestamp-in-gzip
+Check: files/compressed/gz
+See-Also: Bug#762105
diff --git a/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/hints b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/hints
new file mode 100644
index 0000000..3e3fd32
--- /dev/null
+++ b/t/recipes/checks/files/compressed/gz/timestamp-in-gzip/eval/hints
@@ -0,0 +1 @@
+timestamp-in-gzip (binary): package-contains-timestamped-gzip 2020-03-02T23:44:19 [etc/after-changelog.gz]
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/eval/desc b/t/recipes/checks/files/compressed/legacy-filenames/eval/desc
new file mode 100644
index 0000000..e17f6e9
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/compressed
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/eval/hints b/t/recipes/checks/files/compressed/legacy-filenames/eval/hints
new file mode 100644
index 0000000..3d99836
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): compressed-duplicate [usr/share/filenames/prototype.js.gz]
diff --git a/t/recipes/checks/files/compressed/legacy-filenames/eval/post-test b/t/recipes/checks/files/compressed/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/compressed/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/debian/install b/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/fill-values b/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/fill-values
new file mode 100644
index 0000000..26f1692
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: not-an-lz
+Skeleton: upload-native
+Description: A file with .lz extension that is not an lz file
+Extra-Build-Depends: mtools
diff --git a/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/orig/not-an.lz b/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/orig/not-an.lz
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lz/not-an-lz/build-spec/orig/not-an.lz
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/lz/not-an-lz/eval/desc b/t/recipes/checks/files/compressed/lz/not-an-lz/eval/desc
new file mode 100644
index 0000000..e67ead5
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lz/not-an-lz/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-an-lz
+Check: files/compressed/lz
diff --git a/t/recipes/checks/files/compressed/lz/not-an-lz/eval/hints b/t/recipes/checks/files/compressed/lz/not-an-lz/eval/hints
new file mode 100644
index 0000000..bc292d7
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lz/not-an-lz/eval/hints
@@ -0,0 +1 @@
+not-an-lz (binary): broken-lz [etc/not-an.lz]
diff --git a/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/debian/install b/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/fill-values b/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/fill-values
new file mode 100644
index 0000000..fb41123
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: not-an-lzma
+Skeleton: upload-native
+Description: A file with .lzma extension that is not a lzma file
+Extra-Build-Depends: xz-utils
diff --git a/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/orig/not-an.lzma b/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/orig/not-an.lzma
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzma/not-an-lzma/build-spec/orig/not-an.lzma
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/desc b/t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/desc
new file mode 100644
index 0000000..d993408
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-an-lzma
+Check: files/compressed/lzma
diff --git a/t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/hints b/t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/hints
new file mode 100644
index 0000000..f1b05db
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzma/not-an-lzma/eval/hints
@@ -0,0 +1 @@
+not-an-lzma (binary): broken-lzma [etc/not-an.lzma]
diff --git a/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/debian/install b/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/fill-values b/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/fill-values
new file mode 100644
index 0000000..8a1ed13
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: not-an-lzo
+Skeleton: upload-native
+Description: A file with .lzo extension that is not an lzo file
+Extra-Build-Depends: lzop
diff --git a/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/orig/not-an.lzo b/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/orig/not-an.lzo
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzo/not-an-lzo/build-spec/orig/not-an.lzo
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/desc b/t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/desc
new file mode 100644
index 0000000..2745496
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-an-lzo
+Check: files/compressed/lzo
diff --git a/t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/hints b/t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/hints
new file mode 100644
index 0000000..fc954fe
--- /dev/null
+++ b/t/recipes/checks/files/compressed/lzo/not-an-lzo/eval/hints
@@ -0,0 +1 @@
+not-an-lzo (binary): broken-lzo [etc/not-an.lzo]
diff --git a/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/debian/install b/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/fill-values b/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/fill-values
new file mode 100644
index 0000000..40c8b6c
--- /dev/null
+++ b/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: not-an-xz
+Skeleton: upload-native
+Description: A file with .xz extension that is not an xz file
+Extra-Build-Depends: xz-utils
diff --git a/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/orig/not-an.xz b/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/orig/not-an.xz
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/xz/not-an-xz/build-spec/orig/not-an.xz
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/xz/not-an-xz/eval/desc b/t/recipes/checks/files/compressed/xz/not-an-xz/eval/desc
new file mode 100644
index 0000000..577e174
--- /dev/null
+++ b/t/recipes/checks/files/compressed/xz/not-an-xz/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-an-xz
+Check: files/compressed/xz
diff --git a/t/recipes/checks/files/compressed/xz/not-an-xz/eval/hints b/t/recipes/checks/files/compressed/xz/not-an-xz/eval/hints
new file mode 100644
index 0000000..5b47fe1
--- /dev/null
+++ b/t/recipes/checks/files/compressed/xz/not-an-xz/eval/hints
@@ -0,0 +1 @@
+not-an-xz (binary): broken-xz [etc/not-an.xz]
diff --git a/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/debian/install b/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/debian/install
new file mode 100644
index 0000000..99d4719
--- /dev/null
+++ b/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/debian/install
@@ -0,0 +1 @@
+*.* etc/
diff --git a/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/fill-values b/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/fill-values
new file mode 100644
index 0000000..e8e46c7
--- /dev/null
+++ b/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: not-a-zip
+Skeleton: upload-native
+Description: A file with .zip extension that is not a zip file
+Extra-Build-Depends: unzip
diff --git a/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/orig/not-a.zip b/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/orig/not-a.zip
new file mode 100644
index 0000000..6b1ab43
--- /dev/null
+++ b/t/recipes/checks/files/compressed/zip/not-a-zip/build-spec/orig/not-a.zip
@@ -0,0 +1 @@
+NO COMPRESSED CONTENT HERE.
diff --git a/t/recipes/checks/files/compressed/zip/not-a-zip/eval/desc b/t/recipes/checks/files/compressed/zip/not-a-zip/eval/desc
new file mode 100644
index 0000000..58c745c
--- /dev/null
+++ b/t/recipes/checks/files/compressed/zip/not-a-zip/eval/desc
@@ -0,0 +1,2 @@
+Testname: not-a-zip
+Check: files/compressed/zip
diff --git a/t/recipes/checks/files/compressed/zip/not-a-zip/eval/hints b/t/recipes/checks/files/compressed/zip/not-a-zip/eval/hints
new file mode 100644
index 0000000..ab7dd51
--- /dev/null
+++ b/t/recipes/checks/files/compressed/zip/not-a-zip/eval/hints
@@ -0,0 +1 @@
+not-a-zip (binary): broken-zip [etc/not-a.zip]
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-all.install b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-all.install
new file mode 100644
index 0000000..53238e4
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-all.install
@@ -0,0 +1 @@
+usr/bin/*-all-config
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-foreign.install b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-foreign.install
new file mode 100644
index 0000000..156218d
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-foreign.install
@@ -0,0 +1 @@
+usr/bin/*-foreign-config
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-no.install b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-no.install
new file mode 100644
index 0000000..a3a2d45
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/config-ma-no.install
@@ -0,0 +1 @@
+usr/bin/*-no-config
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/control.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/control.in
new file mode 100644
index 0000000..df3690e
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/debian/control.in
@@ -0,0 +1,40 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: config-ma-no
+Architecture: any
+Depends: ${misc:Depends}, ${shlib:Depends}
+Multi-arch: no
+Description: Contains config test file no
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch any ma no config script.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: config-ma-foreign
+Architecture: any
+Multi-arch: foreign
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: Contains config test file foreign
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch any config script ma foreign.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: config-all
+Architecture: all
+Depends: ${misc:Depends}, ${shlib:Depends}
+Multi-arch: no
+Description: Contains config test file all arch
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch all ma no config script.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/fill-values b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/fill-values
new file mode 100644
index 0000000..b352204
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-old-config-script
+Description: Check for detection of old style config script
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/Makefile b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/Makefile
new file mode 100644
index 0000000..5c7831d
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/Makefile
@@ -0,0 +1,18 @@
+ARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+ifeq ($(ARCH), x86_64-linux-gnu)
+ ARCH_CROSS=i386-linux-gnu
+else
+ ARCH_CROSS=x86_64-linux-gnu
+endif
+
+all:
+ find generated -name '*-config.in' -exec sh -c 'echo "build" {} && cat {} | sed -e s/\$$\(ARCH\)/$(ARCH)/g -e s/\$$\(ARCH_CROSS\)/$(ARCH_CROSS)/g > `echo {} | sed -e s/\-config\.in$$/\-config/g -e s,/ARCH_,/$(ARCH)_,g`' \;
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -m 755 generated/*-config $(DESTDIR)/usr/bin
+
+clean distclean:
+ rm -f generated/*.config
+
+check test:
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-all-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-all-config.in
new file mode 100644
index 0000000..8e7070b
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-all-config.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "-I/usr/include/$(ARCH)/someconfig.h"
+
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-all-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-all-config.in
new file mode 100644
index 0000000..665922b
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-all-config.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "-I/usr/include/$(ARCH_CROSS)/someconfig.h"
+
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-foreign-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-foreign-config.in
new file mode 100644
index 0000000..665922b
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-cross-foreign-config.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "-I/usr/include/$(ARCH_CROSS)/someconfig.h"
+
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-foreign-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-foreign-config.in
new file mode 100644
index 0000000..9d7a85c
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/ARCH_-arch-foreign-config.in
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "-I/usr/include/$(ARCH)/arch-include-arch"
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-all-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-all-config.in
new file mode 100644
index 0000000..9d7a85c
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-all-config.in
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "-I/usr/include/$(ARCH)/arch-include-arch"
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-all-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-all-config.in
new file mode 100644
index 0000000..665922b
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-all-config.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "-I/usr/include/$(ARCH_CROSS)/someconfig.h"
+
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-foreign-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-foreign-config.in
new file mode 100644
index 0000000..665922b
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-foreign-config.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "-I/usr/include/$(ARCH_CROSS)/someconfig.h"
+
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-no-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-no-config.in
new file mode 100644
index 0000000..665922b
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-cross-no-config.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "-I/usr/include/$(ARCH_CROSS)/someconfig.h"
+
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-foreign-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-foreign-config.in
new file mode 100644
index 0000000..9d7a85c
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-foreign-config.in
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "-I/usr/include/$(ARCH)/arch-include-arch"
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-no-config.in b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-no-config.in
new file mode 100644
index 0000000..9d7a85c
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/build-spec/orig/generated/arch-no-config.in
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "-I/usr/include/$(ARCH)/arch-include-arch"
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/eval/desc b/t/recipes/checks/files/config-scripts/files-old-config-script/eval/desc
new file mode 100644
index 0000000..a7dd4d9
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-old-config-script
+Check: files/config-scripts
+Test-Architectures: amd64
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/eval/hints b/t/recipes/checks/files/config-scripts/files-old-config-script/eval/hints
new file mode 100644
index 0000000..115ae53
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/eval/hints
@@ -0,0 +1,16 @@
+config-ma-no (binary): old-style-config-script [usr/bin/arch-no-config]
+config-ma-no (binary): old-style-config-script [usr/bin/arch-cross-no-config]
+config-ma-foreign (binary): old-style-config-script-multiarch-path full text contains architecture specific dir x86_64-linux-gnu [usr/bin/arch-foreign-config]
+config-ma-foreign (binary): old-style-config-script-multiarch-path full text contains architecture specific dir i386-linux-gnu [usr/bin/x86_64-linux-gnu_-arch-cross-foreign-config]
+config-ma-foreign (binary): old-style-config-script-multiarch-path full text contains architecture specific dir i386-linux-gnu [usr/bin/arch-cross-foreign-config]
+config-ma-foreign (binary): old-style-config-script [usr/bin/x86_64-linux-gnu_-arch-foreign-config]
+config-ma-foreign (binary): old-style-config-script [usr/bin/x86_64-linux-gnu_-arch-cross-foreign-config]
+config-ma-foreign (binary): old-style-config-script [usr/bin/arch-foreign-config]
+config-ma-foreign (binary): old-style-config-script [usr/bin/arch-cross-foreign-config]
+config-all (binary): old-style-config-script-multiarch-path-arch-all full text contains architecture specific dir x86_64-linux-gnu [usr/bin/arch-all-config]
+config-all (binary): old-style-config-script-multiarch-path-arch-all full text contains architecture specific dir i386-linux-gnu [usr/bin/x86_64-linux-gnu_-arch-cross-all-config]
+config-all (binary): old-style-config-script-multiarch-path-arch-all full text contains architecture specific dir i386-linux-gnu [usr/bin/arch-cross-all-config]
+config-all (binary): old-style-config-script [usr/bin/x86_64-linux-gnu_-arch-cross-all-config]
+config-all (binary): old-style-config-script [usr/bin/x86_64-linux-gnu_-arch-all-config]
+config-all (binary): old-style-config-script [usr/bin/arch-cross-all-config]
+config-all (binary): old-style-config-script [usr/bin/arch-all-config]
diff --git a/t/recipes/checks/files/config-scripts/files-old-config-script/eval/post-test b/t/recipes/checks/files/config-scripts/files-old-config-script/eval/post-test
new file mode 100644
index 0000000..686ad87
--- /dev/null
+++ b/t/recipes/checks/files/config-scripts/files-old-config-script/eval/post-test
@@ -0,0 +1,3 @@
+s/full text contains architecture specific dir \S+$/full text contains architecture specific dir ARCH/
+s, usr/lib/[^/]+/, usr/lib/ARCH/,
+s, usr/bin/[^/]+_-, usr/bin/TRIPLET_-,
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/debian/install b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/debian/install
new file mode 100644
index 0000000..b28d0c7
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/debian/install
@@ -0,0 +1,2 @@
+our-script usr/bin
+calls-sbin usr/bin
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/fill-values b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/fill-values
new file mode 100644
index 0000000..ea3ffc8
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: bin-sbin-confusion-in-script
+Description: Mix up bin and sbin when calling a package's own executables
+Package-Architecture: any
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/calls-sbin b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/calls-sbin
new file mode 100755
index 0000000..7bf1674
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/calls-sbin
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+BIN_PATH="/bin/our-script"
+SBIN_PATH="/sbin/our-script"
+USR_BIN_PATH="/usr/bin/our-script"
+USR_SBIN_PATH="/usr/sbin/our-script"
+
+printf "Calling %s\n" $BIN_PATH
+printf "Calling %s\n" $SBIN_PATH
+printf "Calling %s\n" $USR_BIN_PATH
+printf "Calling %s\n" $USR_SBIN_PATH
+
+exit 0
+
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/our-script b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/our-script
new file mode 100755
index 0000000..b80088b
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/build-spec/orig/our-script
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "THIS SCRIPT DOES NOTHING"
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/desc b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/desc
new file mode 100644
index 0000000..c4a8c4a
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/desc
@@ -0,0 +1,2 @@
+Testname: bin-sbin-confusion-in-script
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/hints b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/hints
new file mode 100644
index 0000000..37825d2
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/hints
@@ -0,0 +1,3 @@
+bin-sbin-confusion-in-script (binary): bin-sbin-mismatch usr/sbin/our-script -> usr/bin/our-script [usr/bin/calls-sbin]
+bin-sbin-confusion-in-script (binary): bin-sbin-mismatch sbin/our-script -> usr/bin/our-script [usr/bin/calls-sbin]
+bin-sbin-confusion-in-script (binary): bin-sbin-mismatch bin/our-script -> usr/bin/our-script [usr/bin/calls-sbin]
diff --git a/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/post-test b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/post-test
new file mode 100644
index 0000000..56a64fc
--- /dev/null
+++ b/t/recipes/checks/files/contents/bin-sbin-confusion-in-script/eval/post-test
@@ -0,0 +1,2 @@
+/bin-sbin-confusion-in-script \(binary\): bin-sbin-mismatch usr\/bin\/calls-sbin sbin\/our-script -> usr\/bin\/our-script/ d
+/bin-sbin-confusion-in-script \(binary\): bin-sbin-mismatch usr\/bin\/calls-sbin bin\/our-script -> usr\/bin\/our-script/ d
diff --git a/t/recipes/checks/files/contents/contains-build-path/build-spec/debian/docs b/t/recipes/checks/files/contents/contains-build-path/build-spec/debian/docs
new file mode 100644
index 0000000..ef624d3
--- /dev/null
+++ b/t/recipes/checks/files/contents/contains-build-path/build-spec/debian/docs
@@ -0,0 +1 @@
+build-path
diff --git a/t/recipes/checks/files/contents/contains-build-path/build-spec/debian/rules b/t/recipes/checks/files/contents/contains-build-path/build-spec/debian/rules
new file mode 100755
index 0000000..1a1253b
--- /dev/null
+++ b/t/recipes/checks/files/contents/contains-build-path/build-spec/debian/rules
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/files/contents/contains-build-path/build-spec/fill-values b/t/recipes/checks/files/contents/contains-build-path/build-spec/fill-values
new file mode 100644
index 0000000..b3d6600
--- /dev/null
+++ b/t/recipes/checks/files/contents/contains-build-path/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: contains-build-path
+Skeleton: upload-native
+Description: Test for upload containing build path
+Build-Command: make --trace -f [% $source_path %]/Makefile DEFAULT_DH_COMPAT=[% $dh_compat_level %] DEB_BUILD_OPTIONS='buildinfo=+path'
diff --git a/t/recipes/checks/files/contents/contains-build-path/build-spec/orig/Makefile b/t/recipes/checks/files/contents/contains-build-path/build-spec/orig/Makefile
new file mode 100644
index 0000000..d41bfb4
--- /dev/null
+++ b/t/recipes/checks/files/contents/contains-build-path/build-spec/orig/Makefile
@@ -0,0 +1,2 @@
+all:
+ echo $(shell pwd) > build-path
diff --git a/t/recipes/checks/files/contents/contains-build-path/eval/desc b/t/recipes/checks/files/contents/contains-build-path/eval/desc
new file mode 100644
index 0000000..a9d8759
--- /dev/null
+++ b/t/recipes/checks/files/contents/contains-build-path/eval/desc
@@ -0,0 +1,2 @@
+Testname: contains-build-path
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/contains-build-path/eval/hints b/t/recipes/checks/files/contents/contains-build-path/eval/hints
new file mode 100644
index 0000000..40c49db
--- /dev/null
+++ b/t/recipes/checks/files/contents/contains-build-path/eval/hints
@@ -0,0 +1 @@
+contains-build-path (binary): file-references-package-build-path [usr/share/doc/contains-build-path/build-path]
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/control.in b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/control.in
new file mode 100644
index 0000000..40990f3
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/control.in
@@ -0,0 +1,51 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-has-depends
+Architecture: all
+Depends: ${misc:Depends}, sensible-utils
+Description: [% $description %] (with dependency)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a dependency on sensible-utils.
+
+Package: [% $source %]-has-recommends
+Architecture: all
+Depends: ${misc:Depends}
+Recommends: sensible-utils
+Description: [% $description %] (with Recommends dependency)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a Recommends dependency on sensible-utils.
+
+Package: [% $source %]-has-suggests
+Architecture: all
+Depends: ${misc:Depends}
+Suggests: sensible-utils
+Description: [% $description %] (with Suggests dependency)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a Suggests dependency on sensible-utils.
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.install b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.install
new file mode 100644
index 0000000..cebc38f
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.install
@@ -0,0 +1 @@
+test-script var/lib/test2
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.postinst b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.postinst
new file mode 100644
index 0000000..f369cc0
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-depends.postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+sensible-pager
+
+#DEBHELPER#
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.install b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.install
new file mode 100644
index 0000000..9c708a6
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.install
@@ -0,0 +1 @@
+test-script var/lib/test3
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.postinst b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.postinst
new file mode 100644
index 0000000..f369cc0
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-recommends.postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+sensible-pager
+
+#DEBHELPER#
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.install b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.install
new file mode 100644
index 0000000..97920c7
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.install
@@ -0,0 +1 @@
+test-script var/lib/test4
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.postinst b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.postinst
new file mode 100644
index 0000000..f369cc0
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils-has-suggests.postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+sensible-pager
+
+#DEBHELPER#
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.docs b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.docs
new file mode 100644
index 0000000..7d83343
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.docs
@@ -0,0 +1 @@
+test-script
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.install b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.install
new file mode 100644
index 0000000..118348c
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.install
@@ -0,0 +1,2 @@
+test-script var/lib/test
+test-script usr/share/locale
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.postinst b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.postinst
new file mode 100644
index 0000000..f369cc0
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/debian/files-missing-depends-on-sensible-utils.postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+sensible-pager
+
+#DEBHELPER#
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/fill-values b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/fill-values
new file mode 100644
index 0000000..80f994c
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-missing-depends-on-sensible-utils
+Description: Check missing dep on sensible-utils
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/orig/test-script b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/orig/test-script
new file mode 100755
index 0000000..f0a46b2
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/build-spec/orig/test-script
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+sensible-editor
+
+# sensible-pager false positive
+
+# Only report on the first match
+select-editor
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/desc b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/desc
new file mode 100644
index 0000000..466a08d
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-missing-depends-on-sensible-utils
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/hints b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/hints
new file mode 100644
index 0000000..f5ccd1f
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-missing-depends-on-sensible-utils/eval/hints
@@ -0,0 +1,4 @@
+files-missing-depends-on-sensible-utils (binary): missing-depends-on-sensible-utils sensible-pager [postinst]
+files-missing-depends-on-sensible-utils (binary): missing-depends-on-sensible-utils sensible-editor [var/lib/test/test-script]
+files-missing-depends-on-sensible-utils (binary): missing-depends-on-sensible-utils sensible-editor [usr/share/locale/test-script]
+files-missing-depends-on-sensible-utils (binary): missing-depends-on-sensible-utils sensible-editor [usr/share/doc/files-missing-depends-on-sensible-utils/test-script]
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs
new file mode 100644
index 0000000..58d7b07
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.docs
@@ -0,0 +1,2 @@
+test-1
+test-2
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install
new file mode 100644
index 0000000..1cc1957
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/debian/files-uses-dpkg-database-directly.install
@@ -0,0 +1,6 @@
+test-1 var/lib/test
+test-2 var/lib/test
+README var/lib/test
+misc.txt var/lib/test
+test-1 usr/share/locale
+test-2 usr/share/locale
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/fill-values b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/fill-values
new file mode 100644
index 0000000..ccf850c
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-uses-dpkg-database-directly
+Description: Check for code using dpkg internals
+Package-Architecture: any
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/Makefile b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/Makefile
new file mode 100644
index 0000000..e9d446e
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/Makefile
@@ -0,0 +1,11 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o test test.c
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -m 755 -c test $(DESTDIR)/usr/bin/test
+
+clean distclean:
+ rm -f test
+
+check test:
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/README b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/README
new file mode 100644
index 0000000..a5c0f7b
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/README
@@ -0,0 +1 @@
+/var/lib/dpkg/foo is a false positive.
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/misc.txt b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/misc.txt
new file mode 100644
index 0000000..f51cff6
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/misc.txt
@@ -0,0 +1 @@
+This file is false positive as it references /var/lib/dpkg/foo.
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-1 b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-1
new file mode 100755
index 0000000..1732799
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-1
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/triggers/other-package
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-2 b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-2
new file mode 100755
index 0000000..91f2f88
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test-2
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo /var/lib/dpkg/info/other-package.list
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test.c b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test.c
new file mode 100644
index 0000000..de46c32
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/build-spec/orig/test.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <string.h>
+
+#define VAR_LIB_DPKG "/var/lib/dpkg"
+
+int
+main(void)
+{
+ printf("/var/lib/dpkg\n");
+ printf("%s\n", VAR_LIB_DPKG);
+
+ return 0;
+}
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/desc b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/desc
new file mode 100644
index 0000000..e560eda
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-uses-dpkg-database-directly
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/hints b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/hints
new file mode 100644
index 0000000..f4025f8
--- /dev/null
+++ b/t/recipes/checks/files/contents/files-uses-dpkg-database-directly/eval/hints
@@ -0,0 +1,7 @@
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [var/lib/test/test-2]
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [var/lib/test/test-1]
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [usr/share/locale/test-2]
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [usr/share/locale/test-1]
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [usr/share/doc/files-uses-dpkg-database-directly/test-2]
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [usr/share/doc/files-uses-dpkg-database-directly/test-1]
+files-uses-dpkg-database-directly (binary): uses-dpkg-database-directly [usr/bin/test]
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..a13c546
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..f4643c6
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,2 @@
+maintainer-scripts (binary): uses-dpkg-database-directly [preinst]
+maintainer-scripts (binary): uses-dpkg-database-directly [postinst]
diff --git a/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/fill-values b/t/recipes/checks/files/contents/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/files/contents/legacy-scripts/build-spec/pre-build b/t/recipes/checks/files/contents/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/files/contents/legacy-scripts/eval/desc b/t/recipes/checks/files/contents/legacy-scripts/eval/desc
new file mode 100644
index 0000000..1eb353c
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/legacy-scripts/eval/hints b/t/recipes/checks/files/contents/legacy-scripts/eval/hints
new file mode 100644
index 0000000..4d60834
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/eval/hints
@@ -0,0 +1,2 @@
+scripts (binary): missing-depends-on-sensible-utils sensible-editor [usr/src/scripts/gccbug.dpatch]
+scripts (binary): missing-depends-on-sensible-utils sensible-editor [usr/share/scripts/gccbug.dpatch]
diff --git a/t/recipes/checks/files/contents/legacy-scripts/eval/post-test b/t/recipes/checks/files/contents/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/files/contents/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/fill-values b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/fill-values
new file mode 100644
index 0000000..85fc8d9
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-gfdl-fp-sliding-win
+Description: Check for FP with GFDL invariants sections
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi
new file mode 100644
index 0000000..d9c1b54
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/orig/src/normal.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/pre-build b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/pre-build
new file mode 100755
index 0000000..5ee6c94
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/build-spec/pre-build
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+# Attempt to break the GFDL so that the "redeeming" part of the
+# license gets in the window /after/ the triggering part. c/cruft
+# handles this case correctly now and we don't want to mess that up
+# later.
+
+use strict;
+use warnings;
+
+# Keep in sync with checks/cruft
+use constant BLOCK_SIZE => 16_384;
+
+my ($rootdir) = @ARGV;
+my $dir = "$rootdir/debian/src";
+my $file = "$dir/good.texi";
+
+unless (-d $dir) {
+ mkdir $dir or die "mkdir $dir: $!";
+}
+
+my $slash = '/';
+my $gfdl_start = <<EOT ;
+Permission is granted to copy, distribute and${slash}or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation;
+EOT
+
+my $gfdl_end = <<EOT;
+with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+EOT
+
+my $fill = BLOCK_SIZE - length $gfdl_start;
+my $prefix = ' ' x ($fill - 1);
+
+open my $fd, '>', $file or die "open $file: $!";
+
+print {$fd} $prefix, "\n";
+print {$fd} $gfdl_start;
+print {$fd} $gfdl_end;
+
+close $fd or die "close $file: $!";
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/desc b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/desc
new file mode 100644
index 0000000..94e67b4
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-gfdl-fp-sliding-win
+Check: files/contents/line-length
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/hints b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/hints
new file mode 100644
index 0000000..6a5fc39
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-fp-sliding-win/eval/hints
@@ -0,0 +1 @@
+cruft-gfdl-fp-sliding-win (source): very-long-line-length-in-source-file 16183 > 512 [debian/src/good.texi:1]
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/fill-values b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/fill-values
new file mode 100644
index 0000000..2c57a2a
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-gfdl-invariants
+Description: Check for GFDL invariants sections
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
new file mode 100644
index 0000000..ba8175d
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
@@ -0,0 +1,12 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with the Front-Cover texts
+being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
+(a) below. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this @acronym{GNU} manual. Buying copies from the @acronym{FSF}
+supports it in developing @acronym{GNU} and promoting software
+freedom.''
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
new file mode 100644
index 0000000..a0a6634
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
@@ -0,0 +1,6 @@
+\section*{GNU Free Documentation License}\label{SEC:FDL}
+\subsection*{GNU Free Documentation License}\label{SEC:FDL}
+ \subsubsection{GNU Free Documentation License}\label{SEC:FDL}
+
+This document is distributed under the term of the GNU Free Documentation
+License. See, the attached file for copying conditions.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/empty.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
new file mode 100644
index 0000000..8e87b5f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
new file mode 100644
index 0000000..7ad0640
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation.
+
+A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
new file mode 100644
index 0000000..19560b4
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
@@ -0,0 +1,125 @@
+{\rtf1\ansi\ansicpg1252\cocoartf102{\fonttbl\f2\fnil Bitstream Charter;\f0\fnil Droid Sans Mono;\f1\fnil FreeSans;}
+{\colortbl;\red0\green0\blue200;\red0\green0\blue0;\red255\green0\blue0;}
+{{\NeXTGraphic iconoGimp3.tif \width1816 \height1309}\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\f0\fs24 \'AC}\f1\fs48 \b\cf1 \'A1Welcome to FisicaLab!\cf0\fs24\b0\cf2 \par
+\par
+\fs20\i Copyright (C) 2009, 2010, 2012 German A. Arias.\par
+ Permission is granted to copy, distribute and/or modify this document\par
+ under the terms of the GNU Free Documentation License, Version 1.3\par
+ or any later version published by the Free Software Foundation;\par
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\par
+ A copy of the license is included in the section entitled "GNU\par
+ Free Documentation License".\fs24\i0 \par
+\par
+\par
+FisicaLab is an educational application to solve physics problems. Its main objective is let the user to focus in physics concepts, leaving aside the mathematical details (FisicaLab take care of them). This allows the user to become familiar with the physical concepts without running the risk of getting lost in mathematical details. And so, when the user gain confidence in applying physical concepts, will be better prepared to solve the problems by hand (with pen and paper). FisicaLab is easy to use and very intuitive. However, in order to take advantage of all its features, we recommend you read first these help files.\par
+\par
+FisicaLab display to two windows, one named \b Modules and elements\b0 and other named \b Chalkboard\b0 . The first of these windows, contain all modules that can be used to solve problems. These modules are grouped by: kinematics, static, dynamics, ... (see image below). You can select one of these groups with the buttons at the top of the window, marked with (1) in the image. When you leave the mouse\rquote s cursor above one of these buttons, a label with the group name is displayed. The buttons marked with (2) let you select the system of units, SI or English. You can see the modules of the selected group inside the box marked with (3). The tabs marked with (4) let you select one of the available modules. The elements of the selected module are displayed inside the box marked with (5). This elements let you set the problems. Inside the box marked with (6) you can write the element\rquote s data (if any element is selected, this box will be empty).\f2 \par
+\par
+ \cf0\f0{{\NeXTGraphic FisicaLabPanel.jpg \width7680 \height10760}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\f1 The window named \b Chalkboard\b0 (see image below), have at the top two buttons, marked with (7). The button at the left let you solve the problem, and the other is to clean the chalkboard. The black box marked with (8) is the chalkboard, where you add the elements to set the problems. You need keep in mind, although you can\rquote t see, that the chalkboard is a grid formed with cells of 50x50 pixels. By default the chalkboard size is 26x18 cells. In \b Preferences\b0 panel you can change the size to a maximum of 100x100 cells (A greater size than the default could be useful for trusses problems). The text view marked with (9) is where FisicaLab show the answer and messages. The checkbox marked with (10) erase the content of the text view before show the next answer or message. If you want keep the previous content, unselect this checkbox. In this case you can add notes to identify the results of the different problems.\f2 \par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic FisicaLabPizarra.jpg \width8540 \height6680}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\par
+\f1\fs28\b Handling the elements\f2\fs24\b0 \par
+ \par
+\f1 To add elements at the chalkboard, do a click above the desired element. The mouse\rquote s cursor will become in an open hand, meaning this that we will add an element. Do a click above the chalkboard in the position where you want the element, the mouse\rquote s cursor will back at its original shape. Each time you add a new element, or select one different, a yellow square will be drawn around the current element. The data of the current element are displayed, for its edition, at panel \b Modules and elements\b0 . When you leave the mouse\rquote s cursor above one element in the chalkboard, a label with the element\rquote s data is displayed. In \b Preferences\b0 panel you can configure the font size of these labels.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic chalkboardProperties.jpg \width9020 \height4600}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+If you want move an element, click above it with the \b Control\b0 key pressed, the mouse\rquote s cursor will become in a close hand, meaning this that we are moving an element. Do click in the new position and the mouse\rquote s cursor will back at its original shape. In other hand, if you want delete an element, do click above it with the \b Shift\b0 key pressed.\par
+\par
+Keep in mind that FisicaLab don\rquote t let you combine elements from different modules. The elements in each module are enough to set a wide variety of problems.\f2 \par
+\par
+\par
+\f1\fs28\b Element data\f2\fs24\b0 \par
+\par
+\f1 When you select an element in the chalkboard, or add a new element, you will see a table at the bottom of the window \b Modules and elements\b0 . With a double click above any field of the second column, you can write the data. FisicaLab supports scientific notation, to use this use the letter E. For example, to write the number 3.45x10-5, write:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 3.45E-5\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All numerical data must be without spaces. For example, the following numbers are wrong:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc - 5.3\par
+7.8E - 8\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, FisicaLab can use many conversion factors. To use these, add the character @ before the conversion. If you have selected the SI system, FisicaLab assumes that all data are in meters, kg, seconds, etc. With the English system, FisicaLab assumes that all data are in feet, pounds, slugs, seconds, etc. (in the English system the mass must be in slugs). For example, if you want write an speed of 75 km/h, use:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 75 @ km/h\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Here, we have one space before and after the character @, but these are for clarity, and are not required. Each module has its how conversion factors, as you can see in the sections that deal about these. \par
+\par
+You can use letters or words to represent the unknown data. If, for example, the final velocity is an unknown data, you can represent this like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc fv\par
+finalv\par
+fvel\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql or any other combination. But, we recommend you use letters or words that are related with the unknown data. Also, the conversion factors can be used with the unknown data. For example, if the time is unknown, and you want this in minutes, write something like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc t @ min\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql The scientific notation can be used with the unknowns, adding the characters #E at the end of the name. For example, for a coefficient of thermal expansion, that is a small value:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc coefficient#E\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, this can be used with a conversion factor. For example, for a very long distance that we want in kilometers:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc distance#E @ km\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All the conversion factors are available in a contextual menu. After select the row of data where want add the factor, a right mouse click open a context menu with all available factors.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic menuContextual.jpg \width6120 \height5320}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+FisicaLab allows mathematical operations directly on the fields where you enter data. Can be carried out operations of addition (+), subtraction (-), multiplication (*) and division (/). Although not allowed to group operations by parentheses. It also provides some useful functions for certain calculations. These are listed below with its description:\par
+\par
+\b cos(ang)\tab \tab Calculates the cosine of the sexagesimal angle "ang".\par
+sin(ang)\tab \tab Calculates the sine of the sexagesimal angle "ang".\par
+tan(ang)\tab \tab Calculates the tangent of the sexagesimal angle "ang".\par
+sqrt(x)\tab \tab Calculates the square root of the number "x".\par
+hypot(a,b)\tab Calculates the hypotenuse of a right triangle whose legs are "a" and "b".\par
+leg(c,a)\tab \tab Calculates the leg of the right triangle whose hypotenuse is "c" and the\par
+\tab \tab \tab other leg is "a".\par
+rd(m1,m2,d)\tab Calculates the distance of the mass "m1" to the center of mass of the\par
+\tab \tab \tab system consisting of the masses "m1" and "m2", which are spaced a\par
+\tab \tab \tab distance "d".\b0 \par
+\par
+The numbers that are passed as parameters to these functions must have consistent units. For example, in the \b hypot()\b0 function both legs must be in the same units, whether centimeters, meters, inches, etc. These functions can be used in operations of addition, subtraction, multiplication and division. In these operations blank spaces are not allowed. Here are some examples:\par
+\par
+\pard\ql\b\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 8*cos(34)\par
+hypot(4,3)-2\par
+rd(3,6,40)*sin(30) @ cm\par
+15*8/hypot(13,8)\b0 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Once entered the operation, FisicaLab will do the calculation and will write the result in the entry. Note that is possible to apply conversion factors. Although these can also be applied after carrying out the calculation.\par
+\par
+The fields where you enter angles do not allow the operations and functions described above. This is because these fields have their own operations and functions. For example, FisicaLab allows write the angles as slopes (a/b), and automatically convert this to sexagesimal angles. What is very useful for problems of trusses.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic angulos.jpg \width5080 \height2660}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+For these fields are available two functions that calculates an angle from other relationships. These functions are:\par
+\par
+\b acos(a/c)\tab Calculates the sexagesimal angle whose cosine is the ratio "a/c".\par
+asin(b/c)\tab \tab Calculates the sexagesimal angle whose sine is the ratio "b/c".\b0 \par
+\par
+If an operation is entered incorrectly, for example if it contains spaces or contains a function with an incorrect number of parameters, FisicaLab will do nothing and will take that string as an unknown.\par
+\par
+\par
+\b Caution:\b0 \cf0\cf3 If, for example, you add a mass conversion factor in a time data, this will cause an error in the solution. And you will not get a message about this error.\cf0\f2\cf2 \par
+\par
+\par
+\f1\fs28\b How it works\f2\fs24\b0 \par
+\par
+\f1 FisicaLab work over the base of \i number of equations = number of unknown data\i0 . In general you don\rquote t need worry about this. But in some cases you will see the error \b "The system is undetermined"\b0 . This occurs when you write numeric data in a field that must be an unknown data. The examples show this cases.\f2 \par
+\par
+\par
+\f1\fs28\b Messages\f2\fs24\b0 \par
+\par
+\f1 FisicaLab write a wide variety of messages in the text view when a problem is wrong. However, you always will see a message about the calculation\rquote s status, as you can see in the following image:\par
+\par
+\pard\ql\f0\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0{{\NeXTGraphic cinema44.tif \width4760 \height800}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+The last line say \b "State = success"\b0 , meaning that the calculation was successful. Any other status different as \i success\i0 , mean that or the set problem don\rquote t have a solution, or an unexpected error occurred.\par
+\par
+} \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
new file mode 100644
index 0000000..b8e14bc
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
@@ -0,0 +1,56 @@
+<html lang="en">
+<head>
+<title>Some title</title>
+<!--
+Some verbatim test
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds.-->
+</head>
+<body>
+This is
+ <pre class="sp">
+</pre>
+Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+ <p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being &ldquo;Funding Free Software&rdquo;, the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+&ldquo;GNU Free Documentation License&rdquo;.
+
+ <p>(a) The Front-Cover Text is:
+
+ <p>A GNU Manual
+
+ <p>(b) The Back-Cover Text is:
+
+ <p>You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published raises funds.
+ <pre class="sp">
+
+</pre>
+</body>
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
new file mode 100644
index 0000000..aa1d8e0
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A Debian Manual'',
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
new file mode 100644
index 0000000..e649d17
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with the Invariant Sections being just "GNU
+Manifesto", with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section
+entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
new file mode 100644
index 0000000..8883cac
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
@@ -0,0 +1,25 @@
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
new file mode 100644
index 0000000..fd6ed32
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
@@ -0,0 +1,8 @@
+No ;after version
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts;
+A copy of the license is included in the section entitled
+license GNU Free Documentation License
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
new file mode 100644
index 0000000..2be8767
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
@@ -0,0 +1,12 @@
+Published by the Free Software Foundation,
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301, USA
+
+Copyright @copyright{} 2005, 2010, 2014-2016 Sergey Poznyakoff
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover and Back-Cover texts. A copy of
+the license is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
new file mode 100644
index 0000000..73f9c3a
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
@@ -0,0 +1,16 @@
+#: C/index.docbook:65(legalnotice/para)
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the <citetitle>GNU Free Documentation License</citetitle>, "
+"Version 1.1 or any later version published by the Free Software Foundation "
+"with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A "
+"copy of the license is <link linkend=\"fdl\">included</link>."
+msgstr ""
+"Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free "
+"Documentation License (GFDL), Version 1.1 oder jeder späteren, von der Free "
+"Software Foundation veröffentlichten Version ohne unveränderbare Abschnitte "
+"sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt "
+"und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem "
+"<ulink type=\"help\" url=\"ghelp:fdl\">Link</ulink> oder in der mit diesem "
+"Handbuch gelieferten Datei COPYING-DOCS."
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
new file mode 100644
index 0000000..d3490c4
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
@@ -0,0 +1,9 @@
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License
+(FDL), either version 1.2 of the license,
+or (at your option) any later version published by the free software
+foundation (FSF); with no invariant sections,
+with no front-cover text, and with no back-cover texts
+A copy of the license is included in the
+section entitled "GNU Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
new file mode 100644
index 0000000..37449fb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
@@ -0,0 +1,6 @@
+ <para>This document documents free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ (&gpl;), either version 2 of the License, or (at your option) any
+ later version published by the &fsf;.
+ A copy of the license is included in <xref linkend="gpl"/>.
+ </para>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
new file mode 100644
index 0000000..d11e67b
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
@@ -0,0 +1,9 @@
+# French translation for SANE backend options
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.1
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, with no Front-Cover Texts, and with
+# no Back-Cover.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
new file mode 100644
index 0000000..6ace5df
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
@@ -0,0 +1,12 @@
+<html>
+<!--- This is a old false positive -->
+<body>
+ <div class="legalnotice">
+ <p>Permission is granted to copy, distribute, and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in <a href="../appendix/fdl.html" title="Appendix&nbsp;G.&nbsp;GNU Free Documentation License">Appendix&nbsp;G, <i>GNU Free Documentation License</i></a>.
+ </p>
+ <p>The example programs in this book are free software; you can redistribute and/or modify them under the terms of the <span class="application">Python</span> license as published by the <span class="application">Python</span> Software Foundation. A copy of the license is included in <a href="../appendix/license.html" title="Appendix&nbsp;H.&nbsp;Python license">Appendix&nbsp;H, <i>Python license</i></a>.
+ </p>
+ </div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
new file mode 100644
index 0000000..5291fd3
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
@@ -0,0 +1,15 @@
+/* false positive from some package */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant\nSections, with no\nFront-Cover Texts,\nand with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
new file mode 100644
index 0000000..23aa0af
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
@@ -0,0 +1,15 @@
+/* false positive from findutils */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant Sections, with no Front-Cover Texts, and with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
new file mode 100644
index 0000000..ee27a4f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
@@ -0,0 +1,9 @@
+<P align="JUSTIFY" style="margin-bottom: 0cm"><FONT face="tahoma"><FONT size="2">
+Permission is granted to copy, distribute
+and/or modify this document under the terms
+of the GNU Free Documentation License, Version
+1.1 or any later version published by the
+Free Software Foundation; with the Invariant
+Sections being LIST THEIR TITLES, with the
+Front-Cover Texts being LIST, and with the
+Back-Cover Texts being LIST.</FONT></FONT></P> \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
new file mode 100644
index 0000000..426c273
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
@@ -0,0 +1 @@
+<td>Permission is granted to copy, distribute and/or modify this document under the terms of the <b><a href="https://en.wikipedia.org/wiki/en:GNU_Free_Documentation_License" class="extiw" title="w:en:GNU Free Documentation License">GNU Free Documentation License</a></b>, Version 1.2 or any later version published by the <a href="https://en.wikipedia.org/wiki/en:Free_Software_Foundation" class="extiw" title="w:en:Free Software Foundation">Free Software Foundation</a>; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled <i><a href="/wiki/Commons:GNU_Free_Documentation_License,_version_1.2" title="Commons:GNU Free Documentation License, version 1.2">GNU Free Documentation License</a></i>.<span class="licensetpl_link" style="display:none;">http://www.gnu.org/copyleft/fdl.html</span><span class="licensetpl_short" style="display:none;">GFDL</span><span class="licensetpl_long" style="display:none;">GNU Free Documentation License</span><span class="licensetpl_link_req" style="display:none;">true</span><span class="licensetpl_attr_req" style="display:none;">true</span></td> \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
new file mode 100644
index 0000000..fffca61
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
new file mode 100644
index 0000000..fc52ba9
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
@@ -0,0 +1,13 @@
+false positive found in license text:
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being @var{list their titles}, with the
+ Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
new file mode 100644
index 0000000..46cbd2f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the<br/> Invariant Sections<br /> being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
new file mode 100644
index 0000000..00e496c
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
@@ -0,0 +1,7 @@
+% Permission is granted to copy, distribute and/or modify this document
+% under the terms of the GNU Free Documentation License, Version 1.1 or
+% any later version published by the Free Software Foundation; with no
+% Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+% Texts. A copy of the license is included in the section entitled
+% ``GNU Free Documentation License.''
+%
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
new file mode 100644
index 0000000..f01cd4c
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<a class="link" href="#fdl-invariant">Invariant Sections</link>, with no <a class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <a class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</a>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
new file mode 100644
index 0000000..cc7a754
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
@@ -0,0 +1,14 @@
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+Copyright 2008, Free Software Foundation.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.1 or any later version published by the Free Software
+Foundation; with noInvariant Sections (*note fdl-invariant::),
+with no Front-Cover Texts (*note fdl-cover-texts::), and with no
+Back-Cover Texts (*note fdl-cover-texts::). A copy of the license
+is included in the section entitled "GNU Free Documentation
+License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
new file mode 100644
index 0000000..9e77873
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<link class="link" href="#fdl-invariant">Invariant Sections</link>, with no <link class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <link class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</link>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
new file mode 100644
index 0000000..07b3003
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
@@ -0,0 +1,42 @@
+#: C/fdl-appendix.xml:79(sect1/para)
+msgid ""
+"A <_:quote-1/> is a named appendix or a front-matter section of the <_:"
+"link-2/> that deals exclusively with the relationship of the publishers or "
+"authors of the Document to the Document's overall subject (or to related "
+"matters) and contains nothing that could fall directly within that overall "
+"subject. (For example, if the Document is in part a textbook of mathematics, "
+"a Secondary Section may not explain any mathematics.) The relationship could "
+"be a matter of historical connection with the subject or with related "
+"matters, or of legal, commercial, philosophical, ethical or political "
+"position regarding them."
+msgstr ""
+"Une <_:quote-1/> désigne une annexe au <_:link-2/>, ou toute information "
+"indiquant les rapports entre l'auteur ou l'éditeur et le sujet (ou tout "
+"autre sujet connexe) du Document, sans toutefois être en rapport direct avec "
+"le sujet lui-même (par exemple, si le Document est un manuel de "
+"mathématiques, une Section secondaire ne traitera d'aucune notion "
+"mathématique). Cette section peut contenir des informations relatives à "
+"l'historique du Document, des sources documentaires, des dispositions "
+"légales, commerciales, philosophiques, ou des positions éthiques ou "
+"politiques susceptibles de concerner le sujet traité."
+
+
+#: C/fdl-appendix.xml:632(blockquote/para)
+#, fuzzy
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU Free Documentation License, Version 1.1 or any later "
+"version published by the Free Software Foundation; with the <_:link-1/> being "
+"LIST THEIR TITLES, with the <_:link-2/> being LIST, and with the <_:link-3/> "
+"being LIST. A copy of the license is included in the section entitled <_:"
+"quote-4/>."
+msgstr ""
+"Es wird die Erlaubnis gegeben, dieses Dokument zu kopieren, verteilen und/"
+"oder zu verändern unter den Bedingungen der GNU Free Documentation License, "
+"Version 1.1 oder einer späteren, von der Free Software Foundation "
+"veröffentlichten Version; mit den <link linkend=\"fdl-invariant"
+"\">Unveränderlichen Abschnitten</link>. DEREN TITEL AUFGEZÄHLT sind, mit den "
+"<link linkend=\"fdl-cover-texts\">Vorderseitentexten</link>, die AUFGEZÄHLT "
+"sind, und mit den <link linkend=\"fdl-cover-texts\">Rückseitentexten</link>, "
+"die AUFGEZÄHLT sind. Eine Kopie dieser Lizenz ist in dem Abschnitt enthalten, "
+"der mit <quote>GNU Free Documentation License</quote> betitelt ist."
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
new file mode 100644
index 0000000..ae8c973
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
@@ -0,0 +1,102 @@
+Description: hyphen-used-as-minus-sign
+ This manual page seems to contain a hyphen where a minus sign was
+ intended.
+Author: Ruben Molina <rmolina@udea.edu.co>
+Forwarded: no
+Last-Update: 2011-06-25
+
+Index: kst-2.0.3/src/kst/kst.1.txt
+===================================================================
+--- kst-2.0.3.orig/src/kst/kst.1.txt
++++ kst-2.0.3/src/kst/kst.1.txt
+@@ -47,7 +47,7 @@ kst may be run entirely from within its
+ command line arguments are needed. kst has a powerful wizard for
+ easily setting up new plots.
+
+-In the second invocation, kst loads pre-saved plot specifications from the
++In the second invocation, kst loads pre\-saved plot specifications from the
+ file
+ .I kstfile
+ and optionally may override some of the settings in that file.
+@@ -64,7 +64,7 @@ plot all curves in separate plots
+ .TP
+ .B \-a\fR
+ average frames (simple mean) when plotting with
+-.B -s\fR.
++.B \-s\fR.
+ .TP
+ .B \-\-A4\fR
+ use A4 sized paper for printing. Requires
+@@ -90,7 +90,7 @@ and instead use
+ .B \-f\ STARTFRAME\fR
+ begin plotting at
+ .I STARTFRAME
+-frames into the data. Set to -1 to start at
++frames into the data. Set to \-1 to start at
+ .I NUMFRAMES
+ from the end of the data.
+ .TP
+@@ -112,7 +112,7 @@ use US Letter sized paper for printing.
+ .B \-n\ NUMFRAMES\fR
+ plot at most
+ .I NUMFRAMES
+-frames of data. Set to -1 to indicate all of the data.
++frames of data. Set to \-1 to indicate all of the data.
+ .TP
+ .B \-P\ PLOTNAME\fR
+ plot all plots in the plot named
+@@ -145,7 +145,7 @@ frames when plotting.
+ .B \-x\ FIELD\fR
+ use
+ .I FIELD
+-as the X-axis vector.
++as the X\-axis vector.
+ .TP
+ .B \-y\ FIELD\fR
+ plot
+@@ -158,30 +158,30 @@ plot
+ as an image.
+ .SH EXAMPLES
+ Plot all data in column 2 from data.dat.
+- kst data.dat -y 2
++ kst data.dat \-y 2
+
+ Same as above, except only read 20 lines, starting at line 10.
+- kst data.dat -f 10 -n 20 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 2
+
+ also read col 1. One plot per curve.
+- kst data.dat -f 10 -n 20 -y 1 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 1 \-y 2
+
+ Read col 1 from data2.dat and col 1 from data.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-y 1
+
+ Same as above, except read 40 lines starting at 30 in data2.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -f 30 -n 40 -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-f 30 \-n 40 \-y 1
+
+ Specify the X vector and error bars:
+ Plot x = col 1 and Y = col 2 and error flags = col 3 from data.dat
+- kst data.dat -x 1 -e 3 -y 2
++ kst data.dat \-x 1 \-e 3 \-y 2
+
+ Get the X vector from data1.dat, and the Y vector from data2.dat.
+- kst data1.dat -x 1 data2.dat -y 1
++ kst data1.dat \-x 1 data2.dat \-y 1
+
+ Placement:
+ Plot column 2 and column 3 in plot P1 and column 4 in plot P2
+- kst data.dat -P P1 -y 2 -y 3 -P P2 -y 4
++ kst data.dat \-P P1 \-y 2 \-y 3 \-P P2 \-y 4
+ .SH BUGS
+ Please report bugs to either the kst mailing list at
+ .I kst@kde.org
+@@ -198,6 +198,6 @@ Matthew Truch <matt@truch.net>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2 or
+ any later version published by the Free Software Foundation; with no
++Invariant Sections, with no Front\-Cover Texts, and with no Back\-Cover
+ Texts. A copy of the license is included in the `COPYING.DOC' file
+ as part of the kst distribution.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
new file mode 100644
index 0000000..0168da6
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
@@ -0,0 +1,6 @@
+<para>Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.2 or any later version published by the Free Software
+Foundation; with &FDLInvariantSections;, with &FDLFrontCoverText;, and
+with &FDLBackCoverText;. A copy of the license is included in <xref linkend="gnu-fdl"/>.</para>
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
new file mode 100644
index 0000000..96f3be3
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
@@ -0,0 +1,20 @@
+<!-- **********************************************************************
+ 4 more.docbook
+ 5 +++++++++++++++++++++++++++
+ 6 copyright : (C) 2000 - 2010
+ 7 XXXXXX
+ 8 XXXX
+ 9 e-mail : XXXX@XXXX
+ 10 web site : YYYYYY
+ 11 description : something
+ 12
+ 13 ***************************************************************************
+ 14 * Permission is granted to copy, distribute and/or modify this *
+ 15 * document under the terms of the GNU Free Documentation License, *
+ 16 * Version 1.1 or any later version published by the Free Software *
+ 17 * Foundation; with no Invariant Sections, no Front-Cover Texts and *
+ 18 * no Back-Cover Texts. A copy of the license is available on the *
+ 19 * GNU site http://www.gnu.org/licenses/fdl.html or by writing to: *
+ 20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, *
+ 21 * MA 02111-1307, USA. *
+ 22 *********************************************************************** --> \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
new file mode 100644
index 0000000..d082bfc
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\href{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
new file mode 100644
index 0000000..e193a16
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\hyperlink{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
new file mode 100644
index 0000000..370ea73
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
@@ -0,0 +1,2 @@
+Copyright @sx(c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-\/Cover Texts, and no Back-\/Cover Texts. A copy of the license is included in the section entitled \char`\"{}GNU
+Free Documentation License\char`\"{}. \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
new file mode 100644
index 0000000..107d9fb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation
+License\url{http://www.gnu.org/copyleft/fdl.html}, Version 1.1 or any
+later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the chapter entitled "GNU
+Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
new file mode 100644
index 0000000..8a5eb6e
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
@@ -0,0 +1,7 @@
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation. There
+ are no invariant sections. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+ </para>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
new file mode 100644
index 0000000..56939ee
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
new file mode 100644
index 0000000..4e66d64
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
@@ -0,0 +1,19 @@
+Permission is granted to copy, distribute and/or modify the
+documentation for GNU LilyPond under the terms of the GNU Free
+Documentation License as published by the Free Software Foundation,
+either version 1.3, or (at your option) any later version; with no
+Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
+
+A copy of the license is contained in the file COPYING.FDL.
+
+The following exceptions apply:
+
+ * It does not apply to input files (contained in the
+ directory tree Documentation/snippets/); these are in
+ the public domain.
+
+ * It does not apply to any manual which explicitly states
+ another license.
+
+ * It does not apply to the MusicXML unit test suite,
+ which is licensed under the MIT license.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
new file mode 100644
index 0000000..dffaccc
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover, and no Back-Cover texts.
+A copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
new file mode 100644
index 0000000..e1fd5a2
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
@@ -0,0 +1,28 @@
+<html>
+<body>
+<p>Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+</p>
+<div class="smallexample">
+<pre class="smallexample">Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to
+copy and modify this GNU manual. Buying copies from the FSF
+supports it in developing GNU and promoting software freedom.''
+</pre></div>
+
+<p>If the FSF does not publish this manual on paper, then omit the last
+sentence in (a) that talks about copies from GNU Press. If the FSF is
+not the copyright holder, then replace &lsquo;<samp>FSF</samp>&rsquo; with the appropriate
+name.
+</p>
+</body>
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
new file mode 100644
index 0000000..633e758
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
@@ -0,0 +1,13 @@
+Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+
+@smallexample
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
new file mode 100644
index 0000000..b5c2685
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
@@ -0,0 +1,7 @@
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.1
+@c or any later version published by the Free Software Foundation;
+@c with no Invariant Sections, with no
+@c Front-Cover Texts, and with no Back-Cover Texts.
+@c A copy of the license is included in the section entitled ``GNU
+@c Free Documentation License''.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
new file mode 100644
index 0000000..a58e927
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
@@ -0,0 +1,13 @@
+ /*****************************************************************************/
+/** \mainpage Cal3D API Reference
+ * <center>
+ * <p>
+ * Permission is granted to copy, distribute and/or modify this document
+ * under the terms of the GNU Free Documentation License, Version 1.1 or
+ * any later version published by the Free Software Foundation;
+ * with no Invariant Sections, no Front-Cover Texts and
+ * no Back-Cover Texts;
+ * A copy of the license is included in the section entitled
+ * \link license "GNU Free Documentation License" \endlink .
+ * </center>
+ *****************************************************************************/
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
new file mode 100644
index 0000000..d9c1b54
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
new file mode 100644
index 0000000..dd888e2
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; no Invariant Sections, no Front-Cover Texts,
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
new file mode 100644
index 0000000..747d2e0
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<!-- Permission is granted to copy, distribute and/or modify this document -->
+<!-- under the terms of the GNU Free Documentation License, Version 1.3 or -->
+<!-- any later version published by the Free Software Foundation; with no -->
+<!-- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -->
+<!-- a copy of the license is included under /home -->
+</body>
+</html>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
new file mode 100644
index 0000000..f33dfcd
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
@@ -0,0 +1,7 @@
+.\" manual page for blaze, a command wrapper for BlazeBlogger
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.3 or
+.\" any later version published by the Free Software Foundation; with no
+.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+.\" A copy of the license is included below. \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
new file mode 100644
index 0000000..22ae575
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-
+Cover Texts and
+no Back-
+Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8 b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
new file mode 100644
index 0000000..5a4df93
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
@@ -0,0 +1,9 @@
+.\" Copyright (C) XXX
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.1
+.\" or any later version published by the Free Software Foundation;
+.\" with the Invariant Sections being no invariant sections, with the
+.\" Front-Cover Texts being no front-cover texts, and with the Back-Cover
+.\" Texts being no back-cover texts. A copy of the license is included with
+.\" this package in the file "COPYING.DOC." \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
new file mode 100644
index 0000000..3241276
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, Front-Cover or Back-Cover texts. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''. \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
new file mode 100644
index 0000000..950d936
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
@@ -0,0 +1,4 @@
+Permission is granted to copy, distribute and/or modify this document under \
+the terms of the GNU Free Documentation License, Version 1.1 or any later \
+version published by the Free Software Foundation; without any Invariant \
+Sections. A copy of the license is included in the file GFDL.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
new file mode 100644
index 0000000..96037ac
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
@@ -0,0 +1,8 @@
+Parted 2.13 version with strange grammar.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the no Invariant Sections, with the no Front-Cover Texts, and
+with no Back-Cover Texts. A copy of the license is included in the
+file, COPYING.DOC.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
new file mode 100644
index 0000000..f1d17a5
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
@@ -0,0 +1,15 @@
+<para>För att använda GNU Free Documentation License för ett dokument du har skrivit, inkludera en kopia av licensen [det engelska originalet] i dokumentet och placera följande copyrightklausul omedelbart efter titelsidan:</para>
+
+<blockquote>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with the <link linkend="fdl-invariant">Invariant Sections</link> being LIST
+ THEIR TITLES, with the <link linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST,
+ and with the <link linkend="fdl-cover-texts">Back-Cover
+ Texts</link> being LIST. A copy of the license is included in
+ the section entitled <quote>GNU Free Documentation
+ License</quote>.
+ </para>
+</blockquote>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
new file mode 100644
index 0000000..73e379b
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
@@ -0,0 +1,7 @@
+1,6d0
+< Permission is granted to copy, distribute and/or modify this
+< document under the terms of the GNU Free Documentation License,
+< version 1.3 or any later version published by the Free Software
+< Foundation; with no Invariant Sections, no Front-Cover Texts and
+< no Back-Cover Texts. A copy of the license is included in the
+< section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
new file mode 100644
index 0000000..600653e
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
@@ -0,0 +1,18 @@
+*** make-stds.texi 2013-02-17 21:44:05.485250349 +0100
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
+***************
+*** 1,7 ****
+! @c Permission is granted to copy, distribute and/or modify this document
+! @c under the terms of the GNU Free Documentation License, Version 1.1
+! @c or any later version published by the Free Software Foundation;
+! @c with no Invariant Sections, with no
+! @c Front-Cover Texts, and with no Back-Cover Texts.
+! @c A copy of the license is included in the section entitled ``GNU
+! @c Free Documentation License''.
+--- 1,6 ----
+! Permission is granted to copy, distribute and/or modify this
+! document under the terms of the GNU Free Documentation License,
+! version 1.3 or any later version published by the Free Software
+! Foundation; with no Invariant Sections, no Front-Cover Texts and
+! no Back-Cover Texts. A copy of the license is included in the
+! section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
new file mode 100644
index 0000000..db6e4f9
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
@@ -0,0 +1,9 @@
+--- /dev/null 2013-05-15 23:18:30.206386135 +0200
++++ normal.texi 2012-12-20 21:23:22.829397718 +0100
+@@ -0,0 +1,6 @@
++Permission is granted to copy, distribute and/or modify this
++document under the terms of the GNU Free Documentation License,
++version 1.3 or any later version published by the Free Software
++Foundation; with no Invariant Sections, no Front-Cover Texts and
++no Back-Cover Texts. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
new file mode 100644
index 0000000..347adff
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
@@ -0,0 +1,9 @@
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
++++ /dev/null 2013-05-15 23:18:30.206386135 +0200
+@@ -1,6 +0,0 @@
+-Permission is granted to copy, distribute and/or modify this
+-document under the terms of the GNU Free Documentation License,
+-version 1.3 or any later version published by the Free Software
+-Foundation; with no Invariant Sections, no Front-Cover Texts and
+-no Back-Cover Texts. A copy of the license is included in the
+-section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
new file mode 100644
index 0000000..f64bfaf
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
@@ -0,0 +1,7 @@
+0a1,6
+> Permission is granted to copy, distribute and/or modify this
+> document under the terms of the GNU Free Documentation License,
+> version 1.3 or any later version published by the Free Software
+> Foundation; with no Invariant Sections, no Front-Cover Texts and
+> no Back-Cover Texts. A copy of the license is included in the
+> section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
new file mode 100644
index 0000000..2ab3103
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
@@ -0,0 +1,19 @@
+@copying
+This manual documents PHP mode version @value{version} for
+use with GNU Emacs.
+
+Copyright @copyright{} 2008 Aaron S. Hawley
+
+@quotation
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, and no
+Cover Texts. A copy of the license is included in the
+section entitled ``Copying This Manual.''
+
+A copy of the license is also available from the Free
+Software Foundation Web site at
+@url{http://www.gnu.org/licenses/fdl.html}.
+
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
new file mode 100644
index 0000000..8a0594a
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
@@ -0,0 +1,7 @@
+Some user ident with pipe (|)
+ | Permission is granted to copy, distribute and/or modify this
+ | document under the terms of the GNU Free Documentation License,
+ | version 1.3 or any later version published by the Free Software
+ | Foundation; with no Invariant Sections, no Front-Cover Texts and
+ | no Back-Cover Texts. A copy of the license is included in the
+ | section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
new file mode 100644
index 0000000..58edd5b
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no <quote>Back-Cover Texts</quote>.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
new file mode 100644
index 0000000..112c734
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
@@ -0,0 +1,9 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation;
+with no <quote>invariant sections</quote>, <quote>front-cover texts</quote> or <quote>back-cover texts</quote>,
+each as defined in the license.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
new file mode 100644
index 0000000..ff31741
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
@@ -0,0 +1,11 @@
+<div style="text-align: justify;"><span class="text">
+Permission is granted to copy, distribute
+and/or modify this document under the terms of the GNU Free
+Documentation License, Version 1.2 or any later version published by
+the Free Software Foundation; with no Invariant Sections Texts.</span><br>
+
+
+<span class="text">A copy of the license is included here below.</span><br>
+
+
+</div>
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
new file mode 100644
index 0000000..c803dc5
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
@@ -0,0 +1,9 @@
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'' and ``GNU Free
+Documentation License'', with no Front-Cover Texts, and with no
+Back-Cover Texts. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
new file mode 100644
index 0000000..e0a41a6
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
@@ -0,0 +1,8 @@
+#~ "Permission is granted to copy, distribute and/or modify this document "
+#~ "under the terms of the GNU Free Documentation License, Version 1.1 or any "
+#~ "later version published by the Free Software Foundation; with the <link "
+#~ "linkend=\"fdl-invariant\">Invariant Sections</link> being LIST THEIR "
+#~ "TITLES, with the <link linkend=\"fdl-cover-texts\">Front-Cover Texts</"
+#~ "link> being LIST, and with the <link linkend=\"fdl-cover-texts\">Back-"
+#~ "Cover Texts</link> being LIST. A copy of the license is included in the "
+#~ "section entitled <quote>GNU Free Documentation License</quote>." \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
new file mode 100644
index 0000000..9327024
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with no Front-Cover texts
+and with no Back-Cover Texts. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
new file mode 100644
index 0000000..b6e1240
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
@@ -0,0 +1,8 @@
+% note the end is not classical...
+% Copyright (c) 2002--2004 Philipp Lehman
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, version 1.2, with no
+% invariant sections, with no front-cover texts, and no back-cover texts. This
+% document is distributed in the hope that it will be useful, but without any
+% warranty; without even the implied warranty of merchantability or fitness for
+% a particular purpose.
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
new file mode 100644
index 0000000..d4b872c
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
@@ -0,0 +1,6 @@
+Copyright © 2002--2004 Philipp Lehman
+
+Permission is granted to copy, distribute and\slash or modify this document under the terms of the GNU Free Documentation License, version 1.2, with no invariant sections, no front-cover texts, and no back-cover texts.
+
+A copy of the license is included in the appendix.
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
new file mode 100644
index 0000000..2043b26
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
@@ -0,0 +1,21 @@
+/*
+ * :permissions ("Permission is granted to copy, distribute and/or modify this document"
+ * "under the terms of the GNU Free Documentation License, Version 1.1"
+ * "or any later version published by the Free Software Foundation;"
+ * "with the Invariant Sections being:"
+ * ""
+ * " The GNU General Public License"
+ * " The GNU Free Documentation License"
+ * ""
+ * "with the Front-Cover Texts being"
+ * ""
+ * " (none),"
+ * ""
+ * "and with the Back-Cover Texts being"
+ * ""
+ * " (none)."
+ * ""
+ * "A copy of the license is included in the section entitled \"GNU"
+ * "Free Documentation License\"."))
+ *
+ */ \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
new file mode 100644
index 0000000..6f634a6
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the <ulink url="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
+License</ulink>, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
new file mode 100644
index 0000000..8463a59
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
@@ -0,0 +1,7 @@
+This is ok
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no Invariant Sections, Front-
+ or Back-Cover Texts. A copy of the license is included in the
+ section entitled "{GNU Free Documentation License}".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
new file mode 100644
index 0000000..8782eed
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Section, no Front-Cover Text and
+no Back-Cover Text. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1 b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
new file mode 100644
index 0000000..83a4acf
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
@@ -0,0 +1,12 @@
+.\"
+.\" Manpage example
+.\"
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
+Free Software\*(R", the Front-Cover texts being (a) (see below), and with
+the Back-Cover Texts being (b) (see below). A copy of the license is
+included in the \fIgfdl\fR\|(7) man page.
+.PP
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/desc b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/desc
new file mode 100644
index 0000000..1b103e4
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-gfdl-invariants
+Check: files/contents/line-length
diff --git a/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/hints b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/hints
new file mode 100644
index 0000000..8b77efb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-gfdl-invariants/eval/hints
@@ -0,0 +1,2 @@
+cruft-gfdl-invariants (source): very-long-line-length-in-source-file 975 > 512 [src/false-positive.rtf:16]
+cruft-gfdl-invariants (source): very-long-line-length-in-source-file 1162 > 512 [src/oldfalsepositive/fontsMX.html:1]
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/install b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/json.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/json.js
new file mode 100644
index 0000000..9a338bf
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/json.js
@@ -0,0 +1,529 @@
+/*
+ json.js
+ 2012-10-08
+
+ Public Domain
+
+ No warranty expressed or implied. Use at your own risk.
+
+ This file has been superceded by http://www.JSON.org/json2.js
+
+ See http://www.JSON.org/js.html
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+ This file adds these methods to JavaScript:
+
+ object.toJSONString(whitelist)
+ This method produce a JSON text from a JavaScript value.
+ It must not contain any cyclical references. Illegal values
+ will be excluded.
+
+ The default conversion for dates is to an ISO string. You can
+ add a toJSONString method to any date object to get a different
+ representation.
+
+ The object and array methods can take an optional whitelist
+ argument. A whitelist is an array of strings. If it is provided,
+ keys in objects not found in the whitelist are excluded.
+
+ string.parseJSON(filter)
+ This method parses a JSON text to produce an object or
+ array. It can throw a SyntaxError exception.
+
+ The optional filter parameter is a function which can filter and
+ transform the results. It receives each of the keys and values, and
+ its return value is used instead of the original value. If it
+ returns what it received, then structure is not modified. If it
+ returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. If a key contains the string 'date' then
+ // convert the value to a date.
+
+ myData = text.parseJSON(function (key, value) {
+ return key.indexOf('date') >= 0 ? new Date(value) : value;
+ });
+
+ This file will break programs with improper for..in loops. See
+ http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true, unparam: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, parseJSON, prototype, push, replace, slice,
+ stringify, test, toJSON, toJSONString, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' : gap ?
+ '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' : gap ?
+ '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+ '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+
+// Augment the basic prototypes if they have not already been augmented.
+// These forms are obsolete. It is recommended that JSON.stringify and
+// JSON.parse be used instead.
+
+ if (!Object.prototype.toJSONString) {
+ Object.prototype.toJSONString = function (filter) {
+ return JSON.stringify(this, filter);
+ };
+ Object.prototype.parseJSON = function (filter) {
+ return JSON.parse(this, filter);
+ };
+ }
+}());
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/fill-values b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/fill-values
new file mode 100644
index 0000000..5dd0aba
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-minified-js
+Description: Misc errors related to minified javascript
+Extra-Build-Depends: uglifyjs
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/README b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/README
new file mode 100644
index 0000000..914d120
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/README
@@ -0,0 +1 @@
+Here we test deploy java \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js
new file mode 100644
index 0000000..aa511b3
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js
@@ -0,0 +1,19 @@
+(function(modules, cache, entry) {
+ req(entry);
+ function req(name) {
+ if (cache[name]) return cache[name].exports;
+ var m = cache[name] = {exports: {}};
+ modules[name][0].call(m.exports, modRequire, m, m.exports, window);
+ return m.exports;
+ function modRequire(alias) {
+ var id = modules[name][1][alias];
+ if (!id) throw new Error("Cannot find module " + alias);
+ return req(id);
+ }
+ }
+})({0: [function(require,module,exports,global){
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
+}, {}],}, {}, 0);
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.js
new file mode 100644
index 0000000..2cb2fb3
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/deployJava/deployJava.js
@@ -0,0 +1,3 @@
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js
new file mode 100644
index 0000000..4a35a5a
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js
@@ -0,0 +1 @@
+//the source
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js
new file mode 100644
index 0000000..e1a0655
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js
new file mode 100644
index 0000000..620611a
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js
@@ -0,0 +1 @@
+//the source see zoneminder
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js
new file mode 100644
index 0000000..e1a0655
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js
new file mode 100644
index 0000000..3fc1fc2
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js
@@ -0,0 +1 @@
+// this catch missing . in regexp \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js
new file mode 100644
index 0000000..0668aa7
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js
@@ -0,0 +1,8 @@
+/*
+CSS Browser Selector v0.4.0 (Nov 02, 2010)
+Rafael Lima (http://rafael.adm.br)
+http://rafael.adm.br/css_browser_selector
+License: http://creativecommons.org/licenses/by/2.5/
+Contributors: http://rafael.adm.br/css_browser_selector#contributors
+*/
+function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js
new file mode 100644
index 0000000..a1c3620
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js
@@ -0,0 +1 @@
+//the source found for instance in mono
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js
new file mode 100644
index 0000000..fc9eb65
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; var second='X';
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js
new file mode 100644
index 0000000..a0a67e8
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js
@@ -0,0 +1,3 @@
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt
new file mode 100644
index 0000000..a701c9f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt
@@ -0,0 +1 @@
+Here we test if source is available \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js
new file mode 100644
index 0000000..7ab1dda
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js
@@ -0,0 +1,104 @@
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js
new file mode 100644
index 0000000..d2f68d3
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js
@@ -0,0 +1,2 @@
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js
new file mode 100644
index 0000000..66222ee
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js
@@ -0,0 +1,30 @@
+/* long line in fake license */
+/*
+ * LICENSE
+ *
+ * POCKET MARKS
+ *
+ * Notwithstanding the permitted uses of the Software (as defined below) pursuant to the license set forth below, "Pocket," "Read It Later" and the Pocket icon and logos (collectively, the “Pocket Marksâ€) are registered and common law trademarks of Read It Later, Inc. This means that, while you have considerable freedom to redistribute and modify the Software, there are tight restrictions on your ability to use the Pocket Marks. This license does not grant you any rights to use the Pocket Marks except as they are embodied in the Software.
+ *
+ * ---
+ *
+ * SOFTWARE
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README
new file mode 100644
index 0000000..2db2f0f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README
@@ -0,0 +1 @@
+exercice missing dir in relative dir \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js
new file mode 100644
index 0000000..3e0e3c2
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js
@@ -0,0 +1,2 @@
+// fake min.js
+toto='1'; \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js
new file mode 100644
index 0000000..772fe5c
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js
@@ -0,0 +1,2 @@
+// fake source
+toto='1'; \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js
new file mode 100644
index 0000000..077c6f7
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js
@@ -0,0 +1,4 @@
+var search_index = [
+'ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION',];
+var search_urls = [
+'config.html#allegro_config','config.html#allegro_config_section'];
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html
new file mode 100644
index 0000000..7267c7f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html
@@ -0,0 +1,7 @@
+<html>
+<header>
+<script>
+(c)?b<=c:true)}function d(c,b)
+</script>
+</header>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js
new file mode 100644
index 0000000..80e795f
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js
@@ -0,0 +1,3 @@
+/* simulate a long line by with only one ;*/
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js
new file mode 100644
index 0000000..8e17061
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js
@@ -0,0 +1 @@
+// this one catch lite suffix \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js
new file mode 100644
index 0000000..d47653c
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js
@@ -0,0 +1,3 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js
new file mode 100644
index 0000000..4a35a5a
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js
@@ -0,0 +1 @@
+//the source
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js
new file mode 100644
index 0000000..cb851fb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js
@@ -0,0 +1 @@
+# the source
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/pre-build b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/pre-build
new file mode 100755
index 0000000..13f30ca
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/build-spec/pre-build
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+jsdir="$1/usr/share/javascript/"
+srcdir="$1"
+json="$srcdir/debian/missing-sources/json.js"
+uglyjson="$jsdir/json/json.min.js"
+
+mkdir -p "$jsdir"
+mkdir -p "$jsdir/minwithoutsource"
+mkdir -p "$jsdir/jswithoutminext"
+mkdir -p "$jsdir/json"
+mkdir -p "$jsdir/sourced"
+mkdir -p "$jsdir/sourced_variant"
+mkdir -p "$jsdir/jswithoutminextwithoutsource/"
+mkdir -p "$srcdir/src/js"
+mkdir -p "$srcdir/build/js"
+
+# create a js file
+uglifyjs -o "$uglyjson" "$json"
+# fake install of minified js without min.js
+cp "$uglyjson" "$jsdir/jswithoutminext/json.js"
+# fake not sourced
+cp "$uglyjson" "$jsdir/minwithoutsource/notsourced.min.js"
+cp "$uglyjson" "$jsdir/minwithoutsource/subdir.min.js"
+# fake install but not sourced
+cp "$uglyjson" "$jsdir/jswithoutminextwithoutsource/jsonnotsourced.js"
+# fake source and min alone
+cp "$uglyjson" "$jsdir/sourced/sourced.min.js"
+cp "$json" "$jsdir/sourced/sourced.js"
+cp "$uglyjson" "$jsdir/sourced_variant/sourced.min.js"
+cp "$json" "$jsdir/sourced_variant/sourced_orig.js"
+# sourced in parent's parent
+cp "$uglyjson" "$srcdir/build/js/foo.min.js"
+cp "$json" "$srcdir/src/js/foo.js"
+
+cat > $srcdir/src/js/foo.html <<EOF
+<html>
+<head>
+<script>
+// Copyright someone
+EOF
+cat "$uglyjson" >> $srcdir/src/js/foo.html
+cat >> $srcdir/src/js/foo.html <<EOF
+</script>
+</head>
+</html>
+EOF
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/desc b/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/desc
new file mode 100644
index 0000000..0122f4c
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-minified-js
+Check: files/contents/line-length
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/hints b/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/hints
new file mode 100644
index 0000000..66d0cf8
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/hints
@@ -0,0 +1,14 @@
+cruft-minified-js (source): very-long-line-length-in-source-file 707 > 512 [oldfalsepositives/deployJava/deployJava.js:3]
+cruft-minified-js (source): very-long-line-length-in-source-file 545 > 512 [oldfalsepositives/longlicensetext.js:7]
+cruft-minified-js (source): very-long-line-length-in-source-file 3596 > 512 [src/js/foo.html:5]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/sourced_variant/sourced.min.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/sourced/sourced.min.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/minwithoutsource/subdir.min.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/minwithoutsource/notsourced.min.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/jswithoutminextwithoutsource/jsonnotsourced.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/jswithoutminext/json.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [usr/share/javascript/json/json.min.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3586 > 512 [build/js/foo.min.js:1]
+cruft-minified-js (source): very-long-line-length-in-source-file 3056 > 512 [oldfalsepositives/pandoc/search_index.js:2]
+cruft-minified-js (source): very-long-line-length-in-source-file 1717 > 512 [oldfalsepositives/jslint.js:2]
+cruft-minified-js (source): very-long-line-length-in-source-file 1073 > 512 [oldfalsepositives/css_browser_selector.js:8]
diff --git a/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/post-test b/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/post-test
new file mode 100644
index 0000000..f1d2602
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/cruft-minified-js/eval/post-test
@@ -0,0 +1,4 @@
+s/mean line length is about [0-9]+ characters$/mean line is about NUMBER characters/
+s/line [0-9]+ is [0-9]+ characters long \(>[0-9]+\)$/line POSITION is LENGTH characters long (>CUTOFF)/
+s/code fragment:.*$/code fragment:CODE/
+s/extract of copyright statement:.*/extract of copyright statement: COPYRIGHT/
diff --git a/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js b/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js
new file mode 100644
index 0000000..9a338bf
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js
@@ -0,0 +1,529 @@
+/*
+ json.js
+ 2012-10-08
+
+ Public Domain
+
+ No warranty expressed or implied. Use at your own risk.
+
+ This file has been superceded by http://www.JSON.org/json2.js
+
+ See http://www.JSON.org/js.html
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+ This file adds these methods to JavaScript:
+
+ object.toJSONString(whitelist)
+ This method produce a JSON text from a JavaScript value.
+ It must not contain any cyclical references. Illegal values
+ will be excluded.
+
+ The default conversion for dates is to an ISO string. You can
+ add a toJSONString method to any date object to get a different
+ representation.
+
+ The object and array methods can take an optional whitelist
+ argument. A whitelist is an array of strings. If it is provided,
+ keys in objects not found in the whitelist are excluded.
+
+ string.parseJSON(filter)
+ This method parses a JSON text to produce an object or
+ array. It can throw a SyntaxError exception.
+
+ The optional filter parameter is a function which can filter and
+ transform the results. It receives each of the keys and values, and
+ its return value is used instead of the original value. If it
+ returns what it received, then structure is not modified. If it
+ returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. If a key contains the string 'date' then
+ // convert the value to a date.
+
+ myData = text.parseJSON(function (key, value) {
+ return key.indexOf('date') >= 0 ? new Date(value) : value;
+ });
+
+ This file will break programs with improper for..in loops. See
+ http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true, unparam: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, parseJSON, prototype, push, replace, slice,
+ stringify, test, toJSON, toJSONString, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' : gap ?
+ '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' : gap ?
+ '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+ '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+
+// Augment the basic prototypes if they have not already been augmented.
+// These forms are obsolete. It is recommended that JSON.stringify and
+// JSON.parse be used instead.
+
+ if (!Object.prototype.toJSONString) {
+ Object.prototype.toJSONString = function (filter) {
+ return JSON.stringify(this, filter);
+ };
+ Object.prototype.parseJSON = function (filter) {
+ return JSON.parse(this, filter);
+ };
+ }
+}());
diff --git a/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/fill-values b/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/fill-values
new file mode 100644
index 0000000..89b1eef
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: min-js-with-sources
+Description: Minified JavaScript with sources
+Extra-Build-Depends: uglifyjs
diff --git a/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/pre-build b/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/pre-build
new file mode 100755
index 0000000..2c47e53
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/min-js-with-sources/build-spec/pre-build
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+sourcedir="$dir/debian/missing-sources"
+sourcejs="$sourcedir/ugly/fullpath.js"
+uglydir="$dir/ugly"
+uglyjs="$uglydir/fullpath.min.js"
+
+mkdir -p "$uglydir"
+
+# create a js file
+uglifyjs -o "$uglyjs" "$sourcejs"
+
+cp "$sourcejs" "$sourcedir/basename.js"
+cp "$uglyjs" "$uglydir/basename.min.js"
+
+cp "$uglyjs" "$uglydir/missing-source.min.js"
diff --git a/t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/desc b/t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/desc
new file mode 100644
index 0000000..898eb9b
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/desc
@@ -0,0 +1,2 @@
+Testname: min-js-with-sources
+Check: files/contents/line-length
diff --git a/t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/hints b/t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/hints
new file mode 100644
index 0000000..82d91d2
--- /dev/null
+++ b/t/recipes/checks/files/contents/line-length/min-js-with-sources/eval/hints
@@ -0,0 +1,3 @@
+min-js-with-sources (source): very-long-line-length-in-source-file 3586 > 512 [ugly/missing-source.min.js:1]
+min-js-with-sources (source): very-long-line-length-in-source-file 3586 > 512 [ugly/fullpath.min.js:1]
+min-js-with-sources (source): very-long-line-length-in-source-file 3586 > 512 [ugly/basename.min.js:1]
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/eval/desc b/t/recipes/checks/files/contents/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..c04c847
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+See-Also: Debian Bug#532984
+Check: files/contents
diff --git a/t/recipes/checks/files/contents/scripts-maintainer-general/eval/hints b/t/recipes/checks/files/contents/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..afd0e8f
--- /dev/null
+++ b/t/recipes/checks/files/contents/scripts-maintainer-general/eval/hints
@@ -0,0 +1 @@
+scripts-maintainer-general (binary): uses-dpkg-database-directly [postinst]
diff --git a/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/fill-values b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/fill-values
new file mode 100644
index 0000000..c100689
--- /dev/null
+++ b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: deb-format-ancient-file
+Description: Test package containing an ancient file
diff --git a/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-control b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-control
new file mode 100755
index 0000000..6372736
--- /dev/null
+++ b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+name="$2"
+
+TZ=GMT touch -d@-1 "$debiandir/control"
diff --git a/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-data b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-data
new file mode 100755
index 0000000..cfb25f4
--- /dev/null
+++ b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/pre-data
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+name="$2"
+
+TZ=GMT touch -t 197001010000 "$rootdir/usr/share/doc/$name/changelog.gz"
+TZ=GMT touch -t 197001010000 "$rootdir/usr/share/cargo/registry/$name/.cargo_vcs_info.json"
diff --git a/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/root/usr/share/cargo/registry/deb-format-ancient-file/.cargo_vcs_info.json b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/root/usr/share/cargo/registry/deb-format-ancient-file/.cargo_vcs_info.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/t/recipes/checks/files/date/deb-format-ancient-file/build-spec/root/usr/share/cargo/registry/deb-format-ancient-file/.cargo_vcs_info.json
@@ -0,0 +1 @@
+{}
diff --git a/t/recipes/checks/files/date/deb-format-ancient-file/eval/desc b/t/recipes/checks/files/date/deb-format-ancient-file/eval/desc
new file mode 100644
index 0000000..571e51f
--- /dev/null
+++ b/t/recipes/checks/files/date/deb-format-ancient-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: deb-format-ancient-file
+Check: files/date
diff --git a/t/recipes/checks/files/date/deb-format-ancient-file/eval/hints b/t/recipes/checks/files/date/deb-format-ancient-file/eval/hints
new file mode 100644
index 0000000..f7a8533
--- /dev/null
+++ b/t/recipes/checks/files/date/deb-format-ancient-file/eval/hints
@@ -0,0 +1 @@
+deb-format-ancient-file (binary): package-contains-ancient-file 1970-01-01 [usr/share/doc/deb-format-ancient-file/changelog.gz]
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/date/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/date/legacy-filenames/eval/desc b/t/recipes/checks/files/date/legacy-filenames/eval/desc
new file mode 100644
index 0000000..3aafd24
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/date
diff --git a/t/recipes/checks/files/date/legacy-filenames/eval/hints b/t/recipes/checks/files/date/legacy-filenames/eval/hints
new file mode 100644
index 0000000..3f6df7f
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): package-contains-ancient-file 1975-01-01 [usr/lib/ma-dir/perl/version/foo/ancient.pm]
diff --git a/t/recipes/checks/files/date/legacy-filenames/eval/post-test b/t/recipes/checks/files/date/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/date/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/control.in b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/control.in
new file mode 100644
index 0000000..8f83518
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/control.in
@@ -0,0 +1,26 @@
+Source: [% $source %]
+Section: [% $section %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: [% $source %], ${shlibs:Depends}, ${misc:Depends}
+Description: Fake dbgsym package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ even be an empty package.
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/non-debug-file-in-debug-package-dbgsym.install b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/non-debug-file-in-debug-package-dbgsym.install
new file mode 100644
index 0000000..9f11a1a
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/non-debug-file-in-debug-package-dbgsym.install
@@ -0,0 +1 @@
+foo /
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/rules b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/rules
new file mode 100755
index 0000000..e3b452e
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_gencontrol:
+ # Pretend this is a real debug package.
+ dh_gencontrol -- -Dauto-built-package=debug-symbols
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/fill-values b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/fill-values
new file mode 100644
index 0000000..e967840
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: non-debug-file-in-debug-package
+Package-Architecture: any
+Description: Test for -dbgsym packages with non-.debug files
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/orig/foo b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/orig/foo
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/build-spec/orig/foo
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/desc b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/desc
new file mode 100644
index 0000000..61c2f05
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/desc
@@ -0,0 +1,2 @@
+Testname: non-debug-file-in-debug-package
+Check: files/debug-packages
diff --git a/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/hints b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/hints
new file mode 100644
index 0000000..a48226b
--- /dev/null
+++ b/t/recipes/checks/files/debug-packages/non-debug-file-in-debug-package/eval/hints
@@ -0,0 +1,3 @@
+non-debug-file-in-debug-package-dbgsym (binary): non-debug-file-in-debug-package [usr/share/doc/non-debug-file-in-debug-package-dbgsym/copyright]
+non-debug-file-in-debug-package-dbgsym (binary): non-debug-file-in-debug-package [usr/share/doc/non-debug-file-in-debug-package-dbgsym/changelog.gz]
+non-debug-file-in-debug-package-dbgsym (binary): non-debug-file-in-debug-package [foo]
diff --git a/t/recipes/checks/files/debug/binaries-general/build-spec/debian/rules b/t/recipes/checks/files/debug/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/files/debug/binaries-general/build-spec/fill-values b/t/recipes/checks/files/debug/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/files/debug/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/files/debug/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/files/debug/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/files/debug/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/files/debug/binaries-general/eval/desc b/t/recipes/checks/files/debug/binaries-general/eval/desc
new file mode 100644
index 0000000..e0ff32f
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: files/debug
diff --git a/t/recipes/checks/files/debug/binaries-general/eval/hints b/t/recipes/checks/files/debug/binaries-general/eval/hints
new file mode 100644
index 0000000..e6af89d
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/eval/hints
@@ -0,0 +1 @@
+binaries-general (binary): debug-suffix-not-dbg [usr/lib/debug/.build-id/]
diff --git a/t/recipes/checks/files/debug/binaries-general/eval/post-test b/t/recipes/checks/files/debug/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/files/debug/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/eval/desc b/t/recipes/checks/files/debug/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..34f3664
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/debug
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/eval/hints b/t/recipes/checks/files/debug/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..b957aef
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): debug-suffix-not-dbg [usr/lib/debug/bar]
diff --git a/t/recipes/checks/files/debug/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/debug/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/debug/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/eval/desc b/t/recipes/checks/files/desktop/legacy-filenames/eval/desc
new file mode 100644
index 0000000..cb2d4cd
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/desktop
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/eval/hints b/t/recipes/checks/files/desktop/legacy-filenames/eval/hints
new file mode 100644
index 0000000..008691a
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): desktop-file-in-wrong-dir [usr/share/gnome/apps/System/foo.desktop]
diff --git a/t/recipes/checks/files/desktop/legacy-filenames/eval/post-test b/t/recipes/checks/files/desktop/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/desktop/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/debian/docs b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/debian/docs
new file mode 100644
index 0000000..3b4f637
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/debian/docs
@@ -0,0 +1,7 @@
+doc-file1
+doc-file2
+doc-file3
+doc-file4
+doccy1
+doccy2
+NEWS
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/fill-values b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/fill-values
new file mode 100644
index 0000000..8530d20
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: duplicate-files
+Description: Test for duplicate files
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/Changes b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/Changes
new file mode 100644
index 0000000..79f373b
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/Changes
@@ -0,0 +1 @@
+This is an upstream changelog file.
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/NEWS b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/NEWS
new file mode 100644
index 0000000..79f373b
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/NEWS
@@ -0,0 +1 @@
+This is an upstream changelog file.
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file1 b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file1
new file mode 100644
index 0000000..8bebc6c
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file1
@@ -0,0 +1 @@
+hallo world
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file2 b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file2
new file mode 100644
index 0000000..8bebc6c
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file2
@@ -0,0 +1 @@
+hallo world
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file3 b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file3
new file mode 100644
index 0000000..8bebc6c
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file3
@@ -0,0 +1 @@
+hallo world
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file4 b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file4
new file mode 100644
index 0000000..8bebc6c
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doc-file4
@@ -0,0 +1 @@
+hallo world
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy1 b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy1
new file mode 100644
index 0000000..d732961
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy1
@@ -0,0 +1 @@
+Hi Haley
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy2 b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy2
new file mode 100644
index 0000000..d732961
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/build-spec/orig/doccy2
@@ -0,0 +1 @@
+Hi Haley
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/eval/desc b/t/recipes/checks/files/duplicates/duplicate-files/eval/desc
new file mode 100644
index 0000000..f7408f5
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/eval/desc
@@ -0,0 +1,2 @@
+Testname: duplicate-files
+Check: files/duplicates
diff --git a/t/recipes/checks/files/duplicates/duplicate-files/eval/hints b/t/recipes/checks/files/duplicates/duplicate-files/eval/hints
new file mode 100644
index 0000000..ff4eb2d
--- /dev/null
+++ b/t/recipes/checks/files/duplicates/duplicate-files/eval/hints
@@ -0,0 +1,3 @@
+duplicate-files (binary): duplicate-files usr/share/doc/duplicate-files/doccy1 usr/share/doc/duplicate-files/doccy2
+duplicate-files (binary): duplicate-files usr/share/doc/duplicate-files/doc-file1 usr/share/doc/duplicate-files/doc-file2 usr/share/doc/duplicate-files/doc-file3 usr/share/doc/duplicate-files/doc-file4
+duplicate-files (binary): duplicate-changelog-files usr/share/doc/duplicate-files/NEWS.gz usr/share/doc/duplicate-files/changelog.gz
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/clean b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/dirs b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/examples b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/install b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/links b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/manpages b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/rules b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/fill-values b/t/recipes/checks/files/empty-directories/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/dir b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/types b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/empty-directories/files-general/eval/desc b/t/recipes/checks/files/empty-directories/files-general/eval/desc
new file mode 100644
index 0000000..d1b8b9c
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/empty-directories
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/empty-directories/files-general/eval/hints b/t/recipes/checks/files/empty-directories/files-general/eval/hints
new file mode 100644
index 0000000..adc829f
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): package-contains-empty-directory [usr/share/man/man1/random/]
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/eval/desc b/t/recipes/checks/files/empty-directories/legacy-filenames/eval/desc
new file mode 100644
index 0000000..66a8155
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/empty-directories
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/eval/hints b/t/recipes/checks/files/empty-directories/legacy-filenames/eval/hints
new file mode 100644
index 0000000..3d8e105
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/eval/hints
@@ -0,0 +1,8 @@
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/{arch}/]
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/CVS/]
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/.svn/]
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/.ditrack/]
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/.bzr/]
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/.be/]
+filenames (binary): package-contains-empty-directory [usr/lib/ma-dir/perl/version/.arch-ids/]
+filename-games (binary): package-contains-empty-directory [usr/games/]
diff --git a/t/recipes/checks/files/empty-directories/legacy-filenames/eval/post-test b/t/recipes/checks/files/empty-directories/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/desc b/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..fd0692d
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: files/empty-directories
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/hints b/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..be77221
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz1-dev (binary): package-contains-empty-directory [usr/include/]
diff --git a/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/post-test b/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/files/empty-directories/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/debian/control.in b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..f46d6ef
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: utils
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/fill-values b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/fill-values
new file mode 100644
index 0000000..1ce50ee
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: cruft-source-is-missing-unrel
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Package-Architecture: any
+Description: Check for source-is-missing false positives
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/orig/main.c b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/orig/main.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/orig/main.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-build b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-build
new file mode 100755
index 0000000..db309af
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-build
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd "$1"
+
+mkdir -p debian/missing-sources/bar
+cp main.c debian/missing-sources/bar/main.c
+
+ln -s bar debian/missing-sources/foo
+ln -s bar debian/missing-sources/quux
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-upstream b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-upstream
new file mode 100755
index 0000000..fb28255
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/build-spec/pre-upstream
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd "$1"
+
+
+gcc -o foo main.c
+gcc -o bar main.c
+mkdir -p baz/
+gcc -o baz/quux main.c
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/desc b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/desc
new file mode 100644
index 0000000..48f970b
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-source-is-missing-unrel
+Check: files/empty-package
diff --git a/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/hints b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/hints
new file mode 100644
index 0000000..f8e3e97
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/cruft-source-is-missing-unrel/eval/hints
@@ -0,0 +1 @@
+cruft-source-is-missing-unrel (binary): empty-binary-package
diff --git a/t/recipes/checks/files/empty-package/declared-as-empty/build-spec/debian/control.in b/t/recipes/checks/files/empty-package/declared-as-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..b068c53
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/declared-as-empty/build-spec/debian/control.in
@@ -0,0 +1,35 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This is an empty package. The declaration as such should bypass related
+ complaints from Lintian. You can use this package to detect false
+ positives.
+
+Package: [% $source %]-udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Package-Type: udeb
+Section: debian-installer
+Description: [% $description %] (udeb)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This is an empty package. The declaration as such should bypass related
+ complaints from Lintian. You can use this package to detect false
+ positives.
+ .
+ This is the udeb variant of [% $source %]
diff --git a/t/recipes/checks/files/empty-package/declared-as-empty/build-spec/fill-values b/t/recipes/checks/files/empty-package/declared-as-empty/build-spec/fill-values
new file mode 100644
index 0000000..70532af
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/declared-as-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: declared-as-empty
+Description: Empty binary package so declared (false positive)
diff --git a/t/recipes/checks/files/empty-package/declared-as-empty/eval/desc b/t/recipes/checks/files/empty-package/declared-as-empty/eval/desc
new file mode 100644
index 0000000..d4cd19d
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/declared-as-empty/eval/desc
@@ -0,0 +1,4 @@
+Testname: declared-as-empty
+Check: files/empty-package
+Test-Against:
+ empty-binary-package
diff --git a/t/recipes/checks/files/empty-package/declared-as-empty/eval/hints b/t/recipes/checks/files/empty-package/declared-as-empty/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/declared-as-empty/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/empty-package/files-empty/build-spec/debian/control.in b/t/recipes/checks/files/empty-package/files-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..0d6677a
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/files-empty/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Package-Type: udeb
+Section: debian-installer
+Description: [% $description %] (udeb)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This is the udeb variant of [% $source %]
diff --git a/t/recipes/checks/files/empty-package/files-empty/build-spec/debian/docs b/t/recipes/checks/files/empty-package/files-empty/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/files-empty/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/files/empty-package/files-empty/build-spec/fill-values b/t/recipes/checks/files/empty-package/files-empty/build-spec/fill-values
new file mode 100644
index 0000000..38a6b20
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/files-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-empty
+Description: Test of empty binary package detection
diff --git a/t/recipes/checks/files/empty-package/files-empty/build-spec/orig/README b/t/recipes/checks/files/empty-package/files-empty/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/files-empty/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/files/empty-package/files-empty/eval/desc b/t/recipes/checks/files/empty-package/files-empty/eval/desc
new file mode 100644
index 0000000..035c269
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/files-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-empty
+Check: files/empty-package
diff --git a/t/recipes/checks/files/empty-package/files-empty/eval/hints b/t/recipes/checks/files/empty-package/files-empty/eval/hints
new file mode 100644
index 0000000..2ff3485
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/files-empty/eval/hints
@@ -0,0 +1,2 @@
+files-empty-udeb (udeb): empty-udeb-package
+files-empty (binary): empty-binary-package
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/control b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/rules b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/templates b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/fill-values b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/eval/desc b/t/recipes/checks/files/empty-package/legacy-binary/eval/desc
new file mode 100644
index 0000000..983a6e8
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: files/empty-package
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/eval/hints b/t/recipes/checks/files/empty-package/legacy-binary/eval/hints
new file mode 100644
index 0000000..b7d227e
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary-data (binary): empty-binary-package
diff --git a/t/recipes/checks/files/empty-package/legacy-binary/eval/post-test b/t/recipes/checks/files/empty-package/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/control b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..3e86b96
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses non-UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/fill-values b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/eval/desc b/t/recipes/checks/files/empty-package/legacy-foo++/eval/desc
new file mode 100644
index 0000000..3fc76a8
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: files/empty-package
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/eval/hints b/t/recipes/checks/files/empty-package/legacy-foo++/eval/hints
new file mode 100644
index 0000000..aaed57e
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/eval/hints
@@ -0,0 +1,2 @@
+foo++-helper (binary): empty-binary-package
+foo++ (binary): empty-binary-package
diff --git a/t/recipes/checks/files/empty-package/legacy-foo++/eval/post-test b/t/recipes/checks/files/empty-package/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/files/empty-package/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/debian/changelog.in b/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/debian/changelog.in
new file mode 100644
index 0000000..bccc379
--- /dev/null
+++ b/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) UNRELEASED; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+ * Fun fact: did you know that "Rød grød med fløde" has the same
+ colours as the danish flag.
+
+ -- [% $author %] [% $date %]
+
diff --git a/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..a2cdf9e
--- /dev/null
+++ b/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: changelog-in-western-encoding
+Description: Changelog in western encoding
diff --git a/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/pre-build b/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/pre-build
new file mode 100755
index 0000000..e51cb45
--- /dev/null
+++ b/t/recipes/checks/files/encoding/changelog-in-western-encoding/build-spec/pre-build
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+DDIR="$1/debian/"
+iconv -f UTF-8 -t ISO-8859-1 "$DDIR/changelog" > "$DDIR/changelog.enc"
+mv -f "$DDIR/changelog.enc" "$DDIR/changelog"
+
diff --git a/t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/desc
new file mode 100644
index 0000000..659c39e
--- /dev/null
+++ b/t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/hints
new file mode 100644
index 0000000..4b70ce9
--- /dev/null
+++ b/t/recipes/checks/files/encoding/changelog-in-western-encoding/eval/hints
@@ -0,0 +1 @@
+changelog-in-western-encoding (source): national-encoding [debian/changelog]
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/control.in b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/control.in
new file mode 100644
index 0000000..d347ec7
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/control.in
@@ -0,0 +1,243 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: copyright-iso-8859-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for non-utf-8-encodings
+ Tests non-UTF-8 encodings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL in full text
+ Tests the tag for including all of the GPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-lgpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of LGPL in full text
+ Tests the tag for including all of the LGPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gfdl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GFDL in full text
+ Tests the tag for including all of the GFDL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-apache-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of Apache 2.0 in full text
+ Tests the tag for including all of the Apache 2.0 license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-misc-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks various errors in copyright files
+ Tests various random errors in copyright files.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-symlink
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: just use a symlink for the copyright file
+ Tests the check for a symlinked copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-compressed
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: include a valid copyright file and compress it
+ Tests the check for a compressed copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-style
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: use an old-style directory structure
+ Tests a copyright file using an old-style directory structure.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL1
+ This should trigger errors as GPL1 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL2
+ This should trigger errors as GPL2 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-php
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks problematic PHP licenses
+ The PHP licenses are problematic for any software that isn't PHP.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-w3c
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of the W3C license
+ The W3C license text claims to be "GPL compatible", which shouldn't
+ trigger warnings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-no-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: this should not emit any error
+ This copyright file should be fine.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-versionless
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks a valid versionless GPL reference
+ Refers to the GPL and truly doesn't mention any version.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-perl-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for perl packages not pointing to common-licenses
+ Packages under the "same terms as Perl itself" should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-apache2-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for apache2 packages not pointing to common-licenses
+ Packages under the apache2-license should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-poor-common-licenses
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks not referring to common licenses
+ Packages should refer to common licenses with full path if they
+ use a common license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-crln
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: check for Windows newlines
+ This package should trigger a tag for having Windows newlines in
+ the copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-agpl-3
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of AGPL-3 in full text
+ This should not trigger a tag as AGPL-3 is not in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-fsf
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks use of old FSF address
+ This should trigger a tag for using old FSF address.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-crln.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-crln.copyright
new file mode 100644
index 0000000..43b49cf
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-crln.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-agpl-3.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-agpl-3.copyright
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-agpl-3.copyright
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-apache-2.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-apache-2.copyright
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-apache-2.copyright
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gfdl.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gfdl.copyright
new file mode 100644
index 0000000..4a0fe1c
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gfdl.copyright
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-1.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-1.copyright
new file mode 100644
index 0000000..1facebe
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-1.copyright
@@ -0,0 +1,206 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-2.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-2.copyright
new file mode 100644
index 0000000..f94bb0d
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl-2.copyright
@@ -0,0 +1,344 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/gpl-2.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl.copyright
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-gpl.copyright
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-lgpl.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-lgpl.copyright
new file mode 100644
index 0000000..5dabe34
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-full-lgpl.copyright
@@ -0,0 +1,171 @@
+A copy of the GNU Lesser General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/lgpl-3.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-iso-8859-1.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-iso-8859-1.copyright
new file mode 100644
index 0000000..78a493a
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-iso-8859-1.copyright
@@ -0,0 +1,3 @@
+Copyright (C) 2008 Author
+
+Äußerst ärgerlich, falls nicht UTF-8 benutzt würde.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-misc-errors.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-misc-errors.copyright
new file mode 100644
index 0000000..dceee0e
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-misc-errors.copyright
@@ -0,0 +1,22 @@
+This copyright file contains several errors.
+
+Downloaded from <url://example.com>
+
+You should not use the template for
+Upstream Author(s): Tobias
+Copyright 2008 Tobias
+
+The path /usr/share/common-licences/GPL contains a spelling error.
+
+It's wrong to reference a compressed license, like this:
+/usr/share/common-licenses/BSD.gz
+
+This path /usr/share/doc/copyright is obsolete.
+
+The path /usr/share/common-licenses/GPL2 is missing a hyphen.
+
+This copyright info was automatically extracted from the perl module.
+It may not be accurate, so you better check the module sources
+if you don't want to get into legal troubles.
+
+References to /usr/share/common-licenses/BSD are deprecated.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-apache2-license-pointer.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
new file mode 100644
index 0000000..e71e0f0
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
@@ -0,0 +1,25 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Midnight Commander
+Source: http://www.midnight-commander.org/downloads
+Copyright: 1996-2013 Free Software Foundation
+License: Apache-2.0
+
+Files: *
+Copyright: 2004,2007 Oren Ben-Kiki
+License: Apache-2.0
+
+License: Apache-2.0
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-perl-license-pointer.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-perl-license-pointer.copyright
new file mode 100644
index 0000000..97f8cda
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-missing-perl-license-pointer.copyright
@@ -0,0 +1,5 @@
+This copyright file is for libmythical-perl. The module is licenses under
+the same terms as Perl itself but we've forgotten to add a reference to the
+copy of the Perl license in common-licenses.
+
+Copyright 2010 The Mythical Perl Module Team
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-no-errors.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-no-errors.copyright
new file mode 100644
index 0000000..d31a720
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-no-errors.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-old-fsf.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-old-fsf.copyright
new file mode 100644
index 0000000..00946fc
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-old-fsf.copyright
@@ -0,0 +1,19 @@
+To the extend this is copyrightable (if at all), it is:
+ Copyright 2012 Niels Thykier <niels@thykier.net>.
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 2 is available as
+/usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-php.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-php.copyright
new file mode 100644
index 0000000..338cf09
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-php.copyright
@@ -0,0 +1,151 @@
+A copyright file referring to two problematic PHP licenses.
+
+Copyright 2008 Some Guy.
+
+--------------------------------------------------------------------
+ The PHP License, version 2.02
+Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. The software incorporates the Zend Engine, a product of Zend
+ Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the
+ PHP Association (pursuant to a grant from Zend that can be
+ found at http://www.php.net/license/ZendGrant/) for
+ distribution to you under this license agreement, only as a
+ part of PHP. In the event that you separate the Zend Engine
+ (or any portion thereof) from the rest of the software, or
+ modify the Zend Engine, or any portion thereof, your use of the
+ separated or modified Zend Engine software shall not be governed
+ by this license, and instead shall be governed by the license
+ set forth at http://www.zend.com/license/ZendLicense/.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+
+
+
+--------------------------------------------------------------------
+ The PHP License, version 3.0
+Copyright (c) 1999 - 2003 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ <http://www.php.net/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+This product includes the Zend Engine, freely available at
+<http://www.zend.com>.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-poor-common-licenses.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-poor-common-licenses.copyright
new file mode 100644
index 0000000..5a24980
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-poor-common-licenses.copyright
@@ -0,0 +1,24 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+
+The full text of this license is in common-licenses/GPL-3
+
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-versionless.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-versionless.copyright
new file mode 100644
index 0000000..c08f501
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-versionless.copyright
@@ -0,0 +1,2 @@
+This package is copyright (c) 2009, Some Name <example@example.org> and is
+licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-w3c.copyright b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-w3c.copyright
new file mode 100644
index 0000000..95c3f40
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/copyright-w3c.copyright
@@ -0,0 +1,95 @@
+This package was debianized by J Random Developer <j.random@example.org> on
+Tue, 8 Nov 2005 00:27:44 +0100.
+
+It was downloaded from http://search.cpan.org/dist/W3C-LinkChecker/
+
+Copyright Holder: the software was developed by following people for the
+ W3C:
+ The W3C Link Checker Team <www-validator@w3.org>
+
+License: according to the README file, the source code of the W3C linkchecker
+is available under the terms of the W3C Software Copyright (compatible with
+the GNU GPL), which can be found at
+
+ http://www.w3.org/Consortium/Legal/copyright-software
+
+and is reproduced below:
+
+
+ W3C � SOFTWARE NOTICE AND LICENSE
+
+ [1]http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or
+ other related items) is being provided by the copyright holders under
+ the following license. By obtaining, using and/or copying this work,
+ you (the licensee) agree that you have read, understood, and will
+ comply with the following terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and
+ without fee or royalty is hereby granted, provided that you include
+ the following on ALL copies of the software and documentation or
+ portions thereof, including modifications:
+ 1. The full text of this NOTICE in a location viewable to users of
+ the redistributed or derivative work.
+ 2. Any pre-existing intellectual property disclaimers, notices, or
+ terms and conditions. If none exist, the [2]W3C Software Short
+ Notice should be included (hypertext is preferred, text is
+ permitted) within the body of any redistributed or derivative
+ code.
+ 3. Notice of any changes or modifications to the files, including the
+ date changes were made. (We recommend you provide URIs to the
+ location from which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+ HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+ DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+ TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific,
+ written prior permission. Title to copyright in this software and any
+ associated documentation will at all times remain with copyright
+ holders.
+
+ ____________________________________
+
+ This formulation of W3C's notice and license became active on December
+ 31 2002. This version removes the copyright ownership notice such that
+ this license can be used with materials other than those owned by the
+ W3C, reflects that ERCIM is now a host of the W3C, includes references
+ to this specific dated version of the license, and removes the
+ ambiguous grant of "use". Otherwise, this version is the same as the
+ [3]previous version and is written so as to preserve the [4]Free
+ Software Foundation's assessment of GPL compatibility and [5]OSI's
+ certification under the [6]Open Source Definition. Please see our
+ [7]Copyright FAQ for common questions about using materials from our
+ site, including specific terms and conditions for packages like
+ libwww, Amaya, and Jigsaw. Other questions about this notice can be
+ directed to [8]site-policy@w3.org.
+
+
+ Joseph Reagle <[9]site-policy@w3.org>
+
+ Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06
+ 16:02:49 slesch Exp $
+
+References
+
+ 1. http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ 2. http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231.html
+ 3. http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ 4. http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses
+ 5. http://www.opensource.org/licenses/W3C.php
+ 6. http://www.opensource.org/docs/definition.php
+ 7. http://www.w3.org/Consortium/Legal/IPR-FAQ
+ 8. mailto:site-policy@w3.org
+ 9. mailto:site-policy@w3.org
+
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/rules b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/rules
new file mode 100755
index 0000000..50ff78f
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_installdocs:
+ dh_installdocs
+ install -m 644 debian/copyright-no-errors.copyright debian/copyright-symlink/usr/share/doc/copyright-symlink/symlink
+ rm debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ ln -s symlink debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ gzip -n -9 debian/copyright-compressed/usr/share/doc/copyright-compressed/copyright
+ mkdir -p debian/copyright-old-style/usr/doc/copyright
+ # This should (now) trigger a no-copyright-file (as there is no copyright file
+ # in the right location).
+ mv debian/copyright-old-style/usr/share/doc/copyright-old-style/copyright debian/copyright-old-style/usr/doc/copyright/copyright-old-style
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..a4cbe5a
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-in-western-encoding
+Description: d/copyright in western encoding
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/desc
new file mode 100644
index 0000000..f95f724
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/hints
new file mode 100644
index 0000000..8353c77
--- /dev/null
+++ b/t/recipes/checks/files/encoding/copyright-in-western-encoding/eval/hints
@@ -0,0 +1,2 @@
+copyright-in-western-encoding (source): national-encoding [debian/copyright-iso-8859-1.copyright]
+copyright-iso-8859-1 (binary): national-encoding [usr/share/doc/copyright-iso-8859-1/copyright]
diff --git a/t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/debian/templates b/t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/debian/templates
new file mode 100644
index 0000000..9a2dfc1
--- /dev/null
+++ b/t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/debian/templates
@@ -0,0 +1,3 @@
+Template: debconf/translated
+Type: error
+_Description: Nicht nützlich
diff --git a/t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..f168d9f
--- /dev/null
+++ b/t/recipes/checks/files/encoding/debconf-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: debconf-in-western-encoding
+Description: Western encoding in debconf template
diff --git a/t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/desc
new file mode 100644
index 0000000..75961fb
--- /dev/null
+++ b/t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: debconf-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/hints
new file mode 100644
index 0000000..8a1e8e1
--- /dev/null
+++ b/t/recipes/checks/files/encoding/debconf-in-western-encoding/eval/hints
@@ -0,0 +1,2 @@
+debconf-in-western-encoding (source): national-encoding [debian/templates]
+debconf-in-western-encoding (binary): national-encoding [templates]
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/NEWS.Debian b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/README.Debian b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/changelog.in b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/conffiles b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/control b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/copyright b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/doc-base b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/goodbye.desktop b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/hello.desktop b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu-method b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/postinst b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/rules b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/templates b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..d7e7ed2
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: doc-base-in-western-encoding
+Source: binary
+Version: 4-1.1
+Description: Western encoding in doc-base
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/INSTALL b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/Makefile b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/hello.c b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/desc
new file mode 100644
index 0000000..7bbd87a
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: doc-base-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/hints
new file mode 100644
index 0000000..59accab
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/hints
@@ -0,0 +1,5 @@
+binary (source): national-encoding [debian/doc-base]
+binary (source): national-encoding [debian/copyright]
+binary (source): national-encoding [debian/NEWS.Debian]
+binary (binary): national-encoding [usr/share/doc/binary/copyright]
+binary (binary): national-encoding [usr/share/doc-base/binary]
diff --git a/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/post-test b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/files/encoding/doc-base-in-western-encoding/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/debian/docs b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/debian/docs
new file mode 100644
index 0000000..a188e06
--- /dev/null
+++ b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/debian/docs
@@ -0,0 +1 @@
+docs/*
diff --git a/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..c5baa33
--- /dev/null
+++ b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: document-shipped-in-western-encoding
+Description: Document file in ISO-8859-1 national encoding
diff --git a/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/orig/docs/denmark.weather b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/orig/docs/denmark.weather
new file mode 100644
index 0000000..6797057
--- /dev/null
+++ b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/build-spec/orig/docs/denmark.weather
@@ -0,0 +1 @@
+Das Wetter is schön in Dänemark.
diff --git a/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/desc
new file mode 100644
index 0000000..7ebe63c
--- /dev/null
+++ b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: document-shipped-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/hints
new file mode 100644
index 0000000..a7bfee4
--- /dev/null
+++ b/t/recipes/checks/files/encoding/document-shipped-in-western-encoding/eval/hints
@@ -0,0 +1 @@
+document-shipped-in-western-encoding (binary): national-encoding [usr/share/doc/document-shipped-in-western-encoding/denmark.weather]
diff --git a/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/debian/manpages b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..69bea3f
--- /dev/null
+++ b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: manual-page-in-western-encoding
+Skeleton: upload-native
+Description: German man page in Western European encoding
diff --git a/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/orig/man/motd-iso8859-1.5 b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/orig/man/motd-iso8859-1.5
new file mode 100644
index 0000000..52a0f44
--- /dev/null
+++ b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/build-spec/orig/man/motd-iso8859-1.5
@@ -0,0 +1,75 @@
+.\" -*- coding: UTF-8 -*-
+.\" Copyright (c) 1993 Michael Haardt (michael@moria.de),
+.\" Fri Apr 2 11:32:09 MET DST 1993
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 17:08:16 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MOTD 5 "29. Dezember 1992" Linux Linux\-Programmierhandbuch
+.SH BEZEICHNUNG
+motd \- Mitteilung des Tages (message of the day)
+.SH BESCHREIBUNG
+.\" Patched in Debian, maybe other distribs
+.\" End of patch
+.\" .BR login (1)
+Der Inhalt von \fB/etc/motd\fP wird von \fBpam_motd\fP(8) nach erfolgreicher
+Anmeldung, aber noch vor Ausführen der Anmelde\-Shell, angezeigt.
+.PP
+Das »motd« steht für »message of the day«. Genau dafür wird die Datei
+traditionell benutzt (sie benötigt viel weniger Plattenplatz als eine E\-Mail
+an alle Benutzer).
+
+Unter Debian GNU/Linux wird der dynamisch unter \fI/etc/pam.d/login\fP erzeugte
+Inhalt auch durch \fIpam_exec\fP dargestellt.
+.SH DATEIEN
+\fI/etc/motd\fP
+.br
+\fI/etc/pam.d/login\fP
+.SH "SIEHE AUCH"
+\fBlogin\fP(1), \fBissue\fP(5), \fBpam_motd\fP(8)
+.SH KOLOPHON
+This page is part of release 5.05 of the Linux \fIman\-pages\fP project. A
+description of the project, information about reporting bugs, and the latest
+version of this page, can be found at
+\%https://www.kernel.org/doc/man\-pages/.
+
+.SH ÜBERSETZUNG
+Die deutsche Übersetzung dieser Handbuchseite wurde von
+Michael Haardt <michael@moria.de>,
+Mike Fengler <mike@krt3.krt-soft.de>,
+Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>
+und
+Helge Kreutzmann <debian@helgefjell.de>
+erstellt.
+
+Diese Übersetzung ist Freie Dokumentation; lesen Sie die
+GNU General Public License Version 3 oder neuer bezüglich der
+Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
+
+Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden,
+schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.
diff --git a/t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/desc
new file mode 100644
index 0000000..f23dfa7
--- /dev/null
+++ b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: manual-page-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/hints
new file mode 100644
index 0000000..f091aed
--- /dev/null
+++ b/t/recipes/checks/files/encoding/manual-page-in-western-encoding/eval/hints
@@ -0,0 +1 @@
+manual-page-in-western-encoding (binary): national-encoding [usr/share/man/man5/motd-iso8859-1.5.gz]
diff --git a/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch
new file mode 100644
index 0000000..f5a3bb1
--- /dev/null
+++ b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch
@@ -0,0 +1,14 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/fill-values b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/fill-values
new file mode 100644
index 0000000..0e9cd74
--- /dev/null
+++ b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: national-header-fix-encoding-patch
+Description: Debian patch to fix national encoding with a national header
diff --git a/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/desc b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/desc
new file mode 100644
index 0000000..2c87937
--- /dev/null
+++ b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/desc
@@ -0,0 +1,2 @@
+Testname: national-header-fix-encoding-patch
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/hints b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/hints
new file mode 100644
index 0000000..7b7a7ab
--- /dev/null
+++ b/t/recipes/checks/files/encoding/national-header-fix-encoding-patch/eval/hints
@@ -0,0 +1 @@
+national-header-fix-encoding-patch (source): national-encoding DEP-3 header [debian/patches/utf8.patch]
diff --git a/t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/debian/NEWS b/t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/debian/NEWS
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/debian/NEWS
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..a6b0579
--- /dev/null
+++ b/t/recipes/checks/files/encoding/news-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-non-native
+Testname: news-in-western-encoding
+Description: NEWS file in western encoding
diff --git a/t/recipes/checks/files/encoding/news-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/news-in-western-encoding/eval/desc
new file mode 100644
index 0000000..cb6f92d
--- /dev/null
+++ b/t/recipes/checks/files/encoding/news-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: news-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/news-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/news-in-western-encoding/eval/hints
new file mode 100644
index 0000000..0a5e3fb
--- /dev/null
+++ b/t/recipes/checks/files/encoding/news-in-western-encoding/eval/hints
@@ -0,0 +1 @@
+news-in-western-encoding (source): national-encoding [debian/NEWS]
diff --git a/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postinst b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postinst
new file mode 100644
index 0000000..86a7713
--- /dev/null
+++ b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postinst
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# The following line contains non UTF-8 characters
+# Dieser höchstwichtige Kommentar muß noch übersetzt werden.
diff --git a/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postrm b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postrm
new file mode 100644
index 0000000..86a7713
--- /dev/null
+++ b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/postrm
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# The following line contains non UTF-8 characters
+# Dieser höchstwichtige Kommentar muß noch übersetzt werden.
diff --git a/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/preinst b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/preinst
new file mode 100644
index 0000000..86a7713
--- /dev/null
+++ b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/debian/preinst
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# The following line contains non UTF-8 characters
+# Dieser höchstwichtige Kommentar muß noch übersetzt werden.
diff --git a/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..409bf2a
--- /dev/null
+++ b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: package-scripts-in-western-encoding
+Skeleton: upload-native
+Description: Maintainer scripts in western encoding
diff --git a/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/desc
new file mode 100644
index 0000000..cff8142
--- /dev/null
+++ b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: package-scripts-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/hints
new file mode 100644
index 0000000..db2f6f4
--- /dev/null
+++ b/t/recipes/checks/files/encoding/package-scripts-in-western-encoding/eval/hints
@@ -0,0 +1,3 @@
+package-scripts-in-western-encoding (binary): national-encoding [preinst]
+package-scripts-in-western-encoding (binary): national-encoding [postrm]
+package-scripts-in-western-encoding (binary): national-encoding [postinst]
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control
new file mode 100644
index 0000000..b3207d3
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control
@@ -0,0 +1,50 @@
+Tests: test-1
+Comment: Test-1 is öh so good.
+ Last paragraph misses a Tests field.
+
+Tests: fifo missing-test under_score
+
+Tests: test-in-subdir
+Restrictions:
+ rw-build-tree
+ breaks-testbed
+ needs-root
+ build-needed
+Depends: @
+Features:
+Tests-Directory: subdir
+
+Test-Command: /bin/true
+Depends: @
+
+Tests: test-2
+Test-Command: /bin/true
+Depends: @, missing a comma
+
+Test-Command: /bin/true
+Features: unknownfeature, test-name=false-positive
+Restrictions: unknownrestriction
+
+Test-Command: /bin/true
+Restrictions: breaks-testbed, rw-build-tree, needs-root, needs-recommends # comment
+Depends: @, @builddeps@
+
+Tests: test-1, test-2
+Depends: @
+
+Tests: asym, asym1, self, self1, broken, lfifo, working
+Depends: @
+
+# Depends line starts on a newline (#910210)
+Tests: test-1
+Depends:
+ @
+
+Test-Command: /bin/comment
+Restrictions: needs-root, # comment
+ # comment
+ breaks-testbed
+ # comment
+Depends: @,
+ @builddeps@
+ # comment
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control.autodep8 b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control.autodep8
new file mode 100644
index 0000000..19e2aee
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/control.autodep8
@@ -0,0 +1 @@
+Tests: test-1
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-1 b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-1
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-2 b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-2
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/test-2
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/under_score b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/under_score
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/debian/tests/under_score
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/fill-values b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/fill-values
new file mode 100644
index 0000000..ac9a0dc
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: testsuite-in-western-encoding
+Description: Autopkgtest spec in western encoding
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/orig/subdir/test-in-subdir b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/orig/subdir/test-in-subdir
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/orig/subdir/test-in-subdir
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/pre-build b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/pre-build
new file mode 100755
index 0000000..2e39c9c
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/build-spec/pre-build
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+mkfifo "$DIR/debian/tests/fifo"
+ln -s nonexistent "$DIR/debian/tests/broken"
+ln -s fifo "$DIR/debian/tests/lfifo"
+ln -s test-1 "$DIR/debian/tests/working"
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/desc b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/desc
new file mode 100644
index 0000000..3cc20ce
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: testsuite-in-western-encoding
+Check: files/encoding
diff --git a/t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/hints b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/hints
new file mode 100644
index 0000000..f537689
--- /dev/null
+++ b/t/recipes/checks/files/encoding/testsuite-in-western-encoding/eval/hints
@@ -0,0 +1 @@
+testsuite-in-western-encoding (source): national-encoding [debian/tests/control]
diff --git a/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch
new file mode 100644
index 0000000..f35f299
--- /dev/null
+++ b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/debian/patches/utf8.patch
@@ -0,0 +1,14 @@
+Description: Convert a source file to UTF-8 encoding.
+Author: Felix Lechner <felix.lechner@lease-up.com>
+
+--- a/cyassl/ctaocrypt/tfm.h
++++ b/cyassl/ctaocrypt/tfm.h
+@@ -28,7 +28,7 @@
+
+
+ /**
+- * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
++ * Edited by Moisés Guimarães (moises.guimaraes@phoebus.com.br)
+ * to fit CyaSSL's needs.
+ */
+
diff --git a/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/fill-values b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/fill-values
new file mode 100644
index 0000000..9b463fa
--- /dev/null
+++ b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: utf8-header-fix-encoding-patch
+Description: Debian patch to fix national encoding with UTF-8 header (false positive)
diff --git a/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/desc b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/desc
new file mode 100644
index 0000000..f926d48
--- /dev/null
+++ b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/desc
@@ -0,0 +1,4 @@
+Testname: utf8-header-fix-encoding-patch
+Check: files/encoding
+Test-Against:
+ national-encoding
diff --git a/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/hints b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/encoding/utf8-header-fix-encoding-patch/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/generated/do-not-edit/build-spec/fill-values b/t/recipes/checks/files/generated/do-not-edit/build-spec/fill-values
new file mode 100644
index 0000000..427ec22
--- /dev/null
+++ b/t/recipes/checks/files/generated/do-not-edit/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: do-not-edit
+Description: File contains the string "do not edit by hand"
diff --git a/t/recipes/checks/files/generated/do-not-edit/build-spec/orig/generated/do-not-edit b/t/recipes/checks/files/generated/do-not-edit/build-spec/orig/generated/do-not-edit
new file mode 100644
index 0000000..d09ed78
--- /dev/null
+++ b/t/recipes/checks/files/generated/do-not-edit/build-spec/orig/generated/do-not-edit
@@ -0,0 +1,5 @@
+UNRELATED CONTENTS
+
+Please do not edit this file by hand.
+
+MORE UNRELATED CONTENTS
diff --git a/t/recipes/checks/files/generated/do-not-edit/eval/desc b/t/recipes/checks/files/generated/do-not-edit/eval/desc
new file mode 100644
index 0000000..fe2a42e
--- /dev/null
+++ b/t/recipes/checks/files/generated/do-not-edit/eval/desc
@@ -0,0 +1,2 @@
+Testname: do-not-edit
+Check: files/generated
diff --git a/t/recipes/checks/files/generated/do-not-edit/eval/hints b/t/recipes/checks/files/generated/do-not-edit/eval/hints
new file mode 100644
index 0000000..19772a6
--- /dev/null
+++ b/t/recipes/checks/files/generated/do-not-edit/eval/hints
@@ -0,0 +1,2 @@
+do-not-edit (source): generated-file "do not edit this file by hand" [generated/do-not-edit:3]
+do-not-edit (source): generated-file "do not edit by hand" [debian/control:14]
diff --git a/t/recipes/checks/files/generated/file-was-autogenerated/build-spec/fill-values b/t/recipes/checks/files/generated/file-was-autogenerated/build-spec/fill-values
new file mode 100644
index 0000000..3bec842
--- /dev/null
+++ b/t/recipes/checks/files/generated/file-was-autogenerated/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: file-was-autogenerated
+Description: File contains the string "file was autogenerated"
diff --git a/t/recipes/checks/files/generated/file-was-autogenerated/build-spec/orig/generated/file-was-autogenerated b/t/recipes/checks/files/generated/file-was-autogenerated/build-spec/orig/generated/file-was-autogenerated
new file mode 100644
index 0000000..c9a6389
--- /dev/null
+++ b/t/recipes/checks/files/generated/file-was-autogenerated/build-spec/orig/generated/file-was-autogenerated
@@ -0,0 +1,5 @@
+UNRELATED CONTENTS
+
+This file was autogenerated by binjs_generate_spidermonkey.
+
+MORE UNRELATED CONTENTS
diff --git a/t/recipes/checks/files/generated/file-was-autogenerated/eval/desc b/t/recipes/checks/files/generated/file-was-autogenerated/eval/desc
new file mode 100644
index 0000000..5279758
--- /dev/null
+++ b/t/recipes/checks/files/generated/file-was-autogenerated/eval/desc
@@ -0,0 +1,2 @@
+Testname: file-was-autogenerated
+Check: files/generated
diff --git a/t/recipes/checks/files/generated/file-was-autogenerated/eval/hints b/t/recipes/checks/files/generated/file-was-autogenerated/eval/hints
new file mode 100644
index 0000000..5536815
--- /dev/null
+++ b/t/recipes/checks/files/generated/file-was-autogenerated/eval/hints
@@ -0,0 +1 @@
+file-was-autogenerated (source): generated-file "This file was autogenerated" [generated/file-was-autogenerated:3]
diff --git a/t/recipes/checks/files/hard-links/files-hardlinks/build-spec/debian/rules b/t/recipes/checks/files/hard-links/files-hardlinks/build-spec/debian/rules
new file mode 100755
index 0000000..50f62ad
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/files-hardlinks/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+PKG:=files-hardlinks
+DIR:=$(CURDIR)/debian/$(PKG)/usr/share/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DIR)/1st $(DIR)/2nd $(DIR)/3rd $(DIR)/4th
+ echo "Hallo world" > $(DIR)/3rd/orig
+ ln $(DIR)/3rd/orig $(DIR)/4th/link1
+ ln $(DIR)/4th/link1 $(DIR)/1st/link2
+ ln $(DIR)/3rd/orig $(DIR)/2nd/link3
diff --git a/t/recipes/checks/files/hard-links/files-hardlinks/build-spec/fill-values b/t/recipes/checks/files/hard-links/files-hardlinks/build-spec/fill-values
new file mode 100644
index 0000000..b5672c1
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/files-hardlinks/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-hardlinks
+Description: Test for (stable) handling of hardlinks
diff --git a/t/recipes/checks/files/hard-links/files-hardlinks/eval/desc b/t/recipes/checks/files/hard-links/files-hardlinks/eval/desc
new file mode 100644
index 0000000..092b8a0
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/files-hardlinks/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-hardlinks
+Check: files/hard-links
diff --git a/t/recipes/checks/files/hard-links/files-hardlinks/eval/hints b/t/recipes/checks/files/hard-links/files-hardlinks/eval/hints
new file mode 100644
index 0000000..832b259
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/files-hardlinks/eval/hints
@@ -0,0 +1,3 @@
+files-hardlinks (binary): package-contains-hardlink pointing to: usr/share/files-hardlinks/1st/link2 [usr/share/files-hardlinks/4th/link1]
+files-hardlinks (binary): package-contains-hardlink pointing to: usr/share/files-hardlinks/1st/link2 [usr/share/files-hardlinks/3rd/orig]
+files-hardlinks (binary): package-contains-hardlink pointing to: usr/share/files-hardlinks/1st/link2 [usr/share/files-hardlinks/2nd/link3]
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/control b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/rules b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/templates b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/fill-values b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/eval/desc b/t/recipes/checks/files/hard-links/legacy-binary/eval/desc
new file mode 100644
index 0000000..bb953d9
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: files/hard-links
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/eval/hints b/t/recipes/checks/files/hard-links/legacy-binary/eval/hints
new file mode 100644
index 0000000..17b1332
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): package-contains-hardlink pointing to: usr/bar2 [usr/share/baz]
diff --git a/t/recipes/checks/files/hard-links/legacy-binary/eval/post-test b/t/recipes/checks/files/hard-links/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/desc b/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..dd9045e
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: files/hard-links
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/hints b/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..ff4e25b
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/hints
@@ -0,0 +1 @@
+etcfiles (binary): package-contains-hardlink pointing to: etc/improper [etc/improper-link]
diff --git a/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/post-test b/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/files/hard-links/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/install b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/install
new file mode 100644
index 0000000..42a44e7
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/install
@@ -0,0 +1 @@
+lib/* usr/lib/aarch64-linux-gnu/
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/links b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/links
new file mode 100644
index 0000000..4eb411c
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/links
@@ -0,0 +1 @@
+usr/lib/a-library.so usr/lib/aarch64-linux-gnu/a-link.so
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/rules
new file mode 100755
index 0000000..119c761
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# must create here; *.so files are ignored by dpkg-source
+override_dh_auto_build:
+ mkdir lib
+ echo "A SHARED OBJECT" > lib/a-library.so
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/fill-values b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/fill-values
new file mode 100644
index 0000000..6ff385d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-architecture/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: leaving-architecture
+Description: Links from a directory in /usr/lib to one level up
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/desc b/t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/desc
new file mode 100644
index 0000000..c898980
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/desc
@@ -0,0 +1,3 @@
+Testname: leaving-architecture
+Check: files/hierarchy/links
+See-Also: Bug#243158, Bug#964073
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/hints b/t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/hints
new file mode 100644
index 0000000..1b6a7f4
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-architecture/eval/hints
@@ -0,0 +1 @@
+leaving-architecture (binary): architecture-escape usr/lib/a-library.so [usr/lib/aarch64-linux-gnu/a-link.so]
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/install b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/install
new file mode 100644
index 0000000..005eac0
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/install
@@ -0,0 +1 @@
+lib/* usr/lib/
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/links b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/links
new file mode 100644
index 0000000..4a86243
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/links
@@ -0,0 +1 @@
+usr/lib/a-library.so usr/lib/myprogram/a-link.so
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/rules
new file mode 100755
index 0000000..119c761
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# must create here; *.so files are ignored by dpkg-source
+override_dh_auto_build:
+ mkdir lib
+ echo "A SHARED OBJECT" > lib/a-library.so
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/fill-values b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/fill-values
new file mode 100644
index 0000000..bd0d3ee
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-private/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: leaving-private
+Description: Links from a private directory in /usr/lib to one level up
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-private/eval/desc b/t/recipes/checks/files/hierarchy/links/leaving-private/eval/desc
new file mode 100644
index 0000000..59b3a1d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-private/eval/desc
@@ -0,0 +1,7 @@
+Testname: leaving-private
+Check: files/hierarchy/links
+Test-Against:
+ ldconfig-escape
+ architecture-escape
+See-Also:
+ Bug#243158, Bug#964073
diff --git a/t/recipes/checks/files/hierarchy/links/leaving-private/eval/hints b/t/recipes/checks/files/hierarchy/links/leaving-private/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/leaving-private/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/install b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/install
new file mode 100644
index 0000000..0692514
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/install
@@ -0,0 +1 @@
+modules/* opt/myapp/
diff --git a/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/links b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/links
new file mode 100644
index 0000000..c23b7d6
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/links
@@ -0,0 +1 @@
+opt/myapp/a-module.so usr/lib/myapp-module.so
diff --git a/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/rules
new file mode 100755
index 0000000..3bf6d2a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# must create here; *.so files are ignored by dpkg-source
+override_dh_auto_build:
+ mkdir modules
+ echo "A SHARED OBJECT" > modules/a-module.so
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/fill-values b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/fill-values
new file mode 100644
index 0000000..9f2a9c9
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: usr-lib-to-opt
+Description: Links from a directory in /usr/lib to /opt
diff --git a/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/desc b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/desc
new file mode 100644
index 0000000..2bda8aa
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/desc
@@ -0,0 +1,3 @@
+Testname: usr-lib-to-opt
+Check: files/hierarchy/links
+See-Also: Bug#964073
diff --git a/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/hints b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/hints
new file mode 100644
index 0000000..66e22df
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/links/usr-lib-to-opt/eval/hints
@@ -0,0 +1 @@
+usr-lib-to-opt (binary): ldconfig-escape opt/myapp/a-module.so [usr/lib/myapp-module.so]
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/install b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/install
new file mode 100644
index 0000000..a28f4e6
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/install
@@ -0,0 +1 @@
+debian/script /bin/
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/script b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/script
new file mode 100755
index 0000000..7461858
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/debian/script
@@ -0,0 +1,3 @@
+#!/usr/bin/sh
+
+true
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/fill-values b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/fill-values
new file mode 100644
index 0000000..d5d45bf
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: script-in-root-bin
+Description: File installed in /bin
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/desc b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/desc
new file mode 100644
index 0000000..c5221d1
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/desc
@@ -0,0 +1,2 @@
+Testname: script-in-root-bin
+Check: files/hierarchy/merged-usr
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/hints b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/hints
new file mode 100644
index 0000000..ca7514e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-bin/eval/hints
@@ -0,0 +1 @@
+script-in-root-bin (binary): unmerged-usr [bin/script]
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/install b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/install
new file mode 100644
index 0000000..30c78d3
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/install
@@ -0,0 +1 @@
+debian/script /sbin/
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/script b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/script
new file mode 100755
index 0000000..7461858
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/debian/script
@@ -0,0 +1,3 @@
+#!/usr/bin/sh
+
+true
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/fill-values b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/fill-values
new file mode 100644
index 0000000..16b8b3a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: script-in-root-sbin
+Description: File installed in /sbin
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/desc b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/desc
new file mode 100644
index 0000000..a12a5bf
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/desc
@@ -0,0 +1,2 @@
+Testname: script-in-root-sbin
+Check: files/hierarchy/merged-usr
diff --git a/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/hints b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/hints
new file mode 100644
index 0000000..1f4164e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/merged-usr/script-in-root-sbin/eval/hints
@@ -0,0 +1 @@
+script-in-root-sbin (binary): unmerged-usr [sbin/script]
diff --git a/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/debian/install b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/debian/install
new file mode 100644
index 0000000..11309d9
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/debian/install
@@ -0,0 +1 @@
+share/* usr/share/doc/share/
diff --git a/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/fill-values b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/fill-values
new file mode 100644
index 0000000..8ac3431
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: share-doc-share
+Description: Installs a file into /usr/share/doc/share
diff --git a/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/orig/share/worth-sharing.txt b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/orig/share/worth-sharing.txt
new file mode 100644
index 0000000..5c2c2e8
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/build-spec/orig/share/worth-sharing.txt
@@ -0,0 +1 @@
+SOMETHING WORTH SHARING
diff --git a/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/desc b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/desc
new file mode 100644
index 0000000..52a0b3e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/desc
@@ -0,0 +1,3 @@
+Testname: share-doc-share
+Check: files/hierarchy/path-segments
+See-Also: Bug#950052, Bug#950027
diff --git a/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/hints b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/hints
new file mode 100644
index 0000000..02d57e4
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/path-segments/share-doc-share/eval/hints
@@ -0,0 +1 @@
+share-doc-share (binary): repeated-path-segment share [usr/share/doc/share/]
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/control.in b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..d347ec7
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/control.in
@@ -0,0 +1,243 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: copyright-iso-8859-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for non-utf-8-encodings
+ Tests non-UTF-8 encodings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL in full text
+ Tests the tag for including all of the GPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-lgpl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of LGPL in full text
+ Tests the tag for including all of the LGPL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gfdl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GFDL in full text
+ Tests the tag for including all of the GFDL.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-apache-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of Apache 2.0 in full text
+ Tests the tag for including all of the Apache 2.0 license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-misc-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks various errors in copyright files
+ Tests various random errors in copyright files.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-symlink
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: just use a symlink for the copyright file
+ Tests the check for a symlinked copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-compressed
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: include a valid copyright file and compress it
+ Tests the check for a compressed copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-style
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: use an old-style directory structure
+ Tests a copyright file using an old-style directory structure.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-1
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL1
+ This should trigger errors as GPL1 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-gpl-2
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of GPL2
+ This should trigger errors as GPL2 is in the common license dir.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-php
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks problematic PHP licenses
+ The PHP licenses are problematic for any software that isn't PHP.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-w3c
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of the W3C license
+ The W3C license text claims to be "GPL compatible", which shouldn't
+ trigger warnings.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-no-errors
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: this should not emit any error
+ This copyright file should be fine.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-versionless
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks a valid versionless GPL reference
+ Refers to the GPL and truly doesn't mention any version.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-perl-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for perl packages not pointing to common-licenses
+ Packages under the "same terms as Perl itself" should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-missing-apache2-license-pointer
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks for apache2 packages not pointing to common-licenses
+ Packages under the apache2-license should reference a
+ license in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-poor-common-licenses
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks not referring to common licenses
+ Packages should refer to common licenses with full path if they
+ use a common license.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-crln
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: check for Windows newlines
+ This package should trigger a tag for having Windows newlines in
+ the copyright file.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-full-agpl-3
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks inclusion of AGPL-3 in full text
+ This should not trigger a tag as AGPL-3 is not in common-licenses.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: copyright-old-fsf
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: checks use of old FSF address
+ This should trigger a tag for using old FSF address.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-crln.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-crln.copyright
new file mode 100644
index 0000000..43b49cf
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-crln.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-agpl-3.copyright
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-apache-2.copyright
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright
new file mode 100644
index 0000000..4a0fe1c
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gfdl.copyright
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright
new file mode 100644
index 0000000..1facebe
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-1.copyright
@@ -0,0 +1,206 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright
new file mode 100644
index 0000000..f94bb0d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl-2.copyright
@@ -0,0 +1,344 @@
+A copy of the GNU General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/gpl-2.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-gpl.copyright
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright
new file mode 100644
index 0000000..5dabe34
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-full-lgpl.copyright
@@ -0,0 +1,171 @@
+A copy of the GNU Lesser General Public License is available on
+the World Wide Web at `http://www.gnu.org/licenses/lgpl-3.0.txt'. You can
+also obtain it by writing to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright
new file mode 100644
index 0000000..78a493a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-iso-8859-1.copyright
@@ -0,0 +1,3 @@
+Copyright (C) 2008 Author
+
+Äußerst ärgerlich, falls nicht UTF-8 benutzt würde.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright
new file mode 100644
index 0000000..dceee0e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-misc-errors.copyright
@@ -0,0 +1,22 @@
+This copyright file contains several errors.
+
+Downloaded from <url://example.com>
+
+You should not use the template for
+Upstream Author(s): Tobias
+Copyright 2008 Tobias
+
+The path /usr/share/common-licences/GPL contains a spelling error.
+
+It's wrong to reference a compressed license, like this:
+/usr/share/common-licenses/BSD.gz
+
+This path /usr/share/doc/copyright is obsolete.
+
+The path /usr/share/common-licenses/GPL2 is missing a hyphen.
+
+This copyright info was automatically extracted from the perl module.
+It may not be accurate, so you better check the module sources
+if you don't want to get into legal troubles.
+
+References to /usr/share/common-licenses/BSD are deprecated.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
new file mode 100644
index 0000000..e71e0f0
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-apache2-license-pointer.copyright
@@ -0,0 +1,25 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Midnight Commander
+Source: http://www.midnight-commander.org/downloads
+Copyright: 1996-2013 Free Software Foundation
+License: Apache-2.0
+
+Files: *
+Copyright: 2004,2007 Oren Ben-Kiki
+License: Apache-2.0
+
+License: Apache-2.0
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright
new file mode 100644
index 0000000..97f8cda
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-missing-perl-license-pointer.copyright
@@ -0,0 +1,5 @@
+This copyright file is for libmythical-perl. The module is licenses under
+the same terms as Perl itself but we've forgotten to add a reference to the
+copy of the Perl license in common-licenses.
+
+Copyright 2010 The Mythical Perl Module Team
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-no-errors.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-no-errors.copyright
new file mode 100644
index 0000000..d31a720
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-no-errors.copyright
@@ -0,0 +1,36 @@
+This package was debianized by Tobias Toedter <t.toedter@gmx.net> on
+Thu, 20 Mar 2008 23:48:15 +0100
+
+It was downloaded from <http://www.example.org/>
+
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184
+
+Upstream Authors:
+
+ Tobias Toedter <t.toedter@gmx.net>
+
+Copyright:
+
+ Copyright (C) 2008 Tobias Toedter
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is Copyright 2008, Tobias Toedter <t.toedter@gmx.net>
+and is licensed under the GPL, see above.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright
new file mode 100644
index 0000000..00946fc
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-old-fsf.copyright
@@ -0,0 +1,19 @@
+To the extend this is copyrightable (if at all), it is:
+ Copyright 2012 Niels Thykier <niels@thykier.net>.
+
+This program is free software; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This is distributed in the hope that it will be useful, but without
+any warranty; without even the implied warranty of merchantability or
+fitness for a particular purpose. See the GNU General Public License
+for more details.
+
+A copy of the GNU General Public License version 2 is available as
+/usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+You can also obtain it by writing to the Free Software Foundation, Inc.,
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-php.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-php.copyright
new file mode 100644
index 0000000..338cf09
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-php.copyright
@@ -0,0 +1,151 @@
+A copyright file referring to two problematic PHP licenses.
+
+Copyright 2008 Some Guy.
+
+--------------------------------------------------------------------
+ The PHP License, version 2.02
+Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior permission from the
+ PHP Group. This does not apply to add-on libraries or tools
+ that work in conjunction with PHP. In such a case the PHP
+ name may be used to indicate that the product supports PHP.
+
+ 4. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the
+ terms of that version. You may also choose to use such covered
+ code under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ http://www.php.net/".
+
+ 6. The software incorporates the Zend Engine, a product of Zend
+ Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the
+ PHP Association (pursuant to a grant from Zend that can be
+ found at http://www.php.net/license/ZendGrant/) for
+ distribution to you under this license agreement, only as a
+ part of PHP. In the event that you separate the Zend Engine
+ (or any portion thereof) from the rest of the software, or
+ modify the Zend Engine, or any portion thereof, your use of the
+ separated or modified Zend Engine software shall not be governed
+ by this license, and instead shall be governed by the license
+ set forth at http://www.zend.com/license/ZendLicense/.
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+
+
+
+--------------------------------------------------------------------
+ The PHP License, version 3.0
+Copyright (c) 1999 - 2003 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ <http://www.php.net/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+This product includes the Zend Engine, freely available at
+<http://www.zend.com>.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright
new file mode 100644
index 0000000..5a24980
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-poor-common-licenses.copyright
@@ -0,0 +1,24 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+
+The full text of this license is in common-licenses/GPL-3
+
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-versionless.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-versionless.copyright
new file mode 100644
index 0000000..c08f501
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-versionless.copyright
@@ -0,0 +1,2 @@
+This package is copyright (c) 2009, Some Name <example@example.org> and is
+licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-w3c.copyright b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-w3c.copyright
new file mode 100644
index 0000000..95c3f40
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/copyright-w3c.copyright
@@ -0,0 +1,95 @@
+This package was debianized by J Random Developer <j.random@example.org> on
+Tue, 8 Nov 2005 00:27:44 +0100.
+
+It was downloaded from http://search.cpan.org/dist/W3C-LinkChecker/
+
+Copyright Holder: the software was developed by following people for the
+ W3C:
+ The W3C Link Checker Team <www-validator@w3.org>
+
+License: according to the README file, the source code of the W3C linkchecker
+is available under the terms of the W3C Software Copyright (compatible with
+the GNU GPL), which can be found at
+
+ http://www.w3.org/Consortium/Legal/copyright-software
+
+and is reproduced below:
+
+
+ W3C � SOFTWARE NOTICE AND LICENSE
+
+ [1]http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or
+ other related items) is being provided by the copyright holders under
+ the following license. By obtaining, using and/or copying this work,
+ you (the licensee) agree that you have read, understood, and will
+ comply with the following terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and
+ without fee or royalty is hereby granted, provided that you include
+ the following on ALL copies of the software and documentation or
+ portions thereof, including modifications:
+ 1. The full text of this NOTICE in a location viewable to users of
+ the redistributed or derivative work.
+ 2. Any pre-existing intellectual property disclaimers, notices, or
+ terms and conditions. If none exist, the [2]W3C Software Short
+ Notice should be included (hypertext is preferred, text is
+ permitted) within the body of any redistributed or derivative
+ code.
+ 3. Notice of any changes or modifications to the files, including the
+ date changes were made. (We recommend you provide URIs to the
+ location from which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+ HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+ DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+ TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+ OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific,
+ written prior permission. Title to copyright in this software and any
+ associated documentation will at all times remain with copyright
+ holders.
+
+ ____________________________________
+
+ This formulation of W3C's notice and license became active on December
+ 31 2002. This version removes the copyright ownership notice such that
+ this license can be used with materials other than those owned by the
+ W3C, reflects that ERCIM is now a host of the W3C, includes references
+ to this specific dated version of the license, and removes the
+ ambiguous grant of "use". Otherwise, this version is the same as the
+ [3]previous version and is written so as to preserve the [4]Free
+ Software Foundation's assessment of GPL compatibility and [5]OSI's
+ certification under the [6]Open Source Definition. Please see our
+ [7]Copyright FAQ for common questions about using materials from our
+ site, including specific terms and conditions for packages like
+ libwww, Amaya, and Jigsaw. Other questions about this notice can be
+ directed to [8]site-policy@w3.org.
+
+
+ Joseph Reagle <[9]site-policy@w3.org>
+
+ Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06
+ 16:02:49 slesch Exp $
+
+References
+
+ 1. http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ 2. http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231.html
+ 3. http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ 4. http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses
+ 5. http://www.opensource.org/licenses/W3C.php
+ 6. http://www.opensource.org/docs/definition.php
+ 7. http://www.w3.org/Consortium/Legal/IPR-FAQ
+ 8. mailto:site-policy@w3.org
+ 9. mailto:site-policy@w3.org
+
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/rules
new file mode 100755
index 0000000..50ff78f
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_installdocs:
+ dh_installdocs
+ install -m 644 debian/copyright-no-errors.copyright debian/copyright-symlink/usr/share/doc/copyright-symlink/symlink
+ rm debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ ln -s symlink debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright
+ gzip -n -9 debian/copyright-compressed/usr/share/doc/copyright-compressed/copyright
+ mkdir -p debian/copyright-old-style/usr/doc/copyright
+ # This should (now) trigger a no-copyright-file (as there is no copyright file
+ # in the right location).
+ mv debian/copyright-old-style/usr/share/doc/copyright-old-style/copyright debian/copyright-old-style/usr/doc/copyright/copyright-old-style
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/fill-values
new file mode 100644
index 0000000..1bf7f36
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: copyright-file-general
+Description: Test checking of copyright files
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/desc b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/desc
new file mode 100644
index 0000000..0da72a6
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: copyright-file-general
+Check: files/hierarchy/standard
diff --git a/t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/hints b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/hints
new file mode 100644
index 0000000..cc672e8
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/copyright-file-general/eval/hints
@@ -0,0 +1 @@
+copyright-old-style (binary): FSSTND-dir-in-usr [usr/doc/]
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/desc b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..877399a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/hierarchy/standard
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/hints b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..b34cede
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/hints
@@ -0,0 +1,44 @@
+files-foo-in-bar (binary): subdir-in-usr-bin [usr/bin/foo/]
+files-foo-in-bar (binary): subdir-in-bin [bin/foo/]
+files-foo-in-bar (binary): non-standard-toplevel-dir [emul/]
+files-foo-in-bar (binary): non-standard-toplevel-dir [build/]
+files-foo-in-bar (binary): non-standard-dir-in-var [var/foo/]
+files-foo-in-bar (binary): non-standard-dir-in-usr [usr/foo/]
+files-foo-in-bar (binary): non-multi-arch-lib-dir [usr/libx32/]
+files-foo-in-bar (binary): non-multi-arch-lib-dir [usr/lib64/]
+files-foo-in-bar (binary): non-multi-arch-lib-dir [usr/lib32/]
+files-foo-in-bar (binary): non-multi-arch-lib-dir [libx32/]
+files-foo-in-bar (binary): non-multi-arch-lib-dir [lib64/]
+files-foo-in-bar (binary): non-multi-arch-lib-dir [lib32/]
+files-foo-in-bar (binary): file-in-usr-local [usr/local/foo/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [var/run/foo/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [var/lock/foo/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [var/foo/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [var/cache/pbuilder/build/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [usr/local/foo/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [usr/foo/bar]
+files-foo-in-bar (binary): file-in-unusual-dir [emul/bar]
+files-foo-in-bar (binary): file-directly-in-usr-share [usr/share/bar]
+files-foo-in-bar (binary): dir-or-file-in-var-www [var/www/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-var-www [var/www/foo/]
+files-foo-in-bar (binary): dir-or-file-in-var-run [var/run/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-var-run [var/run/foo/]
+files-foo-in-bar (binary): dir-or-file-in-var-lock [var/lock/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-var-lock [var/lock/foo/]
+files-foo-in-bar (binary): dir-or-file-in-tmp [tmp/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-tmp [tmp/foo/]
+files-foo-in-bar (binary): dir-or-file-in-tmp [tmp/buildd/dir/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-tmp [tmp/buildd/dir/foo/]
+files-foo-in-bar (binary): dir-or-file-in-tmp [tmp/buildd/dir/]
+files-foo-in-bar (binary): dir-or-file-in-tmp [tmp/buildd/]
+files-foo-in-bar (binary): dir-or-file-in-srv [srv/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-srv [srv/foo/]
+files-foo-in-bar (binary): dir-or-file-in-run [run/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-run [run/foo/]
+files-foo-in-bar (binary): dir-or-file-in-mnt [mnt/foo/bar]
+files-foo-in-bar (binary): dir-or-file-in-mnt [mnt/foo/]
+files-foo-in-bar (binary): dir-or-file-in-home [root/bar]
+files-foo-in-bar (binary): dir-or-file-in-home [home/johndoe/bar]
+files-foo-in-bar (binary): dir-or-file-in-home [home/johndoe/]
+files-foo-in-bar (binary): dir-or-file-in-etc-opt [etc/opt/bar]
+files-foo-in-bar (binary): dir-in-usr-local [usr/local/foo/]
diff --git a/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/clean b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/dirs b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/examples b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/install b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/links b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/manpages b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/dir b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/types b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/eval/desc b/t/recipes/checks/files/hierarchy/standard/files-general/eval/desc
new file mode 100644
index 0000000..b5c9a59
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/hierarchy/standard
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/hierarchy/standard/files-general/eval/hints b/t/recipes/checks/files/hierarchy/standard/files-general/eval/hints
new file mode 100644
index 0000000..874fb49
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-general/eval/hints
@@ -0,0 +1,7 @@
+files-general (binary): non-standard-toplevel-dir [new-top-level-dir/]
+files-general (binary): file-in-unusual-dir [var/catman/do]
+files-general (binary): file-in-unusual-dir [new-top-level-dir/file-in-new-top-level-dir]
+files-general (binary): dir-or-file-in-var-run [var/run/lintian/]
+files-general (binary): dir-or-file-in-var-lock [var/lock/lintian/]
+files-general (binary): FSSTND-dir-in-var [var/catman/]
+files-general (binary): FSSTND-dir-in-usr [usr/doc/]
diff --git a/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install
new file mode 100644
index 0000000..d9a88fb
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install
@@ -0,0 +1 @@
+file-outside-usr /bin/subdir
diff --git a/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values
new file mode 100644
index 0000000..765af2c
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: files-package-contains-usr-unmerged-pathnames
+Skeleton: upload-native
+Description: Test for "real" files outside of /usr
diff --git a/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr
new file mode 100644
index 0000000..c52d3c2
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exit 0
diff --git a/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/desc b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/desc
new file mode 100644
index 0000000..6d1d1c8
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-usr-unmerged-pathnames
+Check: files/hierarchy/standard
diff --git a/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/hints b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/hints
new file mode 100644
index 0000000..3ea374e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-package-contains-usr-unmerged-pathnames/eval/hints
@@ -0,0 +1 @@
+files-package-contains-usr-unmerged-pathnames (binary): subdir-in-bin [bin/subdir/]
diff --git a/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/dirs b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/dirs
new file mode 100644
index 0000000..8c0b6f0
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/dirs
@@ -0,0 +1 @@
+/strangename
diff --git a/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/install b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/install
new file mode 100644
index 0000000..e85577a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/debian/install
@@ -0,0 +1 @@
+strangename strangename
diff --git a/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/fill-values
new file mode 100644
index 0000000..11058e5
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-tar-traps
+Description: Test tags for tar common bugs
diff --git a/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/pre-build b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/pre-build
new file mode 100755
index 0000000..bbc0e83
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/build-spec/pre-build
@@ -0,0 +1,28 @@
+#!/bin/sh
+dir="$1/strangename"
+mkdir -p "$dir"
+
+# All file names are quoted twice, once for the shell and once for tar
+# (-T)
+
+# File named <quote><backslash><space>
+echo "foo" > "$dir/'\\ "
+# File named <backslash>
+echo "bar" > "$dir/\\"
+# File named <backslash><backslash>
+# - causes md5sums-lists-nonexistent-file
+echo "bar" > "$dir/\\\\"
+
+# File named a<backslash><backslash>b
+# - causes md5sums-lists-nonexistent-file
+echo "bar" > "$dir/a\\\\b"
+
+# Symlink to file named a<backslash><backslash>b
+ln -s 'a\\b' "$dir/link-to-weird-file1"
+
+# Because the above is not insane enough...
+# If Lintian gets this wrong, it will become an
+# "unsafe-symlink".
+mkdir -p "$dir/\\.\\./\\.\\."
+echo "golf" > "$dir/\\.\\./\\.\\./\\.\\."
+ln -s '\.\./\.\./\.\.' "$dir/some-file"
diff --git a/t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/desc b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/desc
new file mode 100644
index 0000000..78b5d4b
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-tar-traps
+Check: files/hierarchy/standard
diff --git a/t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/hints b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/hints
new file mode 100644
index 0000000..8ed0726
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/files-tar-traps/eval/hints
@@ -0,0 +1,8 @@
+files-tar-traps (binary): non-standard-toplevel-dir [strangename/]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/some-file]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/link-to-weird-file1]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/a\\b]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/\]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/\\]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/\.\./\.\./\.\.]
+files-tar-traps (binary): file-in-unusual-dir [strangename/strangename/'\ ]
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/control b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/templates b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/desc b/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/desc
new file mode 100644
index 0000000..d184d7e
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: files/hierarchy/standard
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/hints b/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/hints
new file mode 100644
index 0000000..f2a3229
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/hints
@@ -0,0 +1,4 @@
+binary (binary): file-in-unusual-dir [usr/foo]
+binary (binary): file-in-unusual-dir [usr/bar]
+binary (binary): file-in-unusual-dir [usr/bar2]
+binary (binary): file-directly-in-usr-share [usr/share/baz]
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/post-test b/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/desc b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/desc
new file mode 100644
index 0000000..e9f0171
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/hierarchy/standard
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/hints b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/hints
new file mode 100644
index 0000000..728e9e0
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/hints
@@ -0,0 +1,20 @@
+filenames (binary): use-of-compat-symlink [usr/bin/X11/testxbin]
+filenames (binary): use-of-compat-symlink [usr/bin/X11/]
+filenames (binary): subdir-in-usr-bin [usr/bin/bin/]
+filenames (binary): non-standard-toplevel-dir [files/]
+filenames (binary): file-in-unusual-dir [files/svn-commit.tmp]
+filenames (binary): file-in-unusual-dir [files/svk-commitsEr9P.tmp]
+filenames (binary): file-in-unusual-dir [files/Maelstrom Sound]
+filenames (binary): file-in-unusual-dir [files/Maelstrom Sound.mine]
+filenames (binary): file-in-unusual-dir [files/Maelstrom Sounce.r121]
+filenames (binary): file-in-unusual-dir [files/.cvsignore]
+filenames (binary): file-in-unusual-dir [files/.arch-inventory]
+filenames (binary): file-in-unusual-dir [files/.#Maelstrom Sound.1.1.1]
+filenames (binary): file-in-unusual-dir [files/'\ ]
+filenames (binary): file-in-unusual-dir [files/".tif]
+filenames (binary): file-in-unusual-dir [files/ .tif]
+filenames (binary): dir-or-file-in-var-www [var/www/foo]
+filenames (binary): dir-or-file-in-srv [srv/foo/bar]
+filenames (binary): dir-or-file-in-srv [srv/foo/]
+filenames (binary): dir-or-file-in-opt [opt/foo/bar]
+filenames (binary): dir-or-file-in-opt [opt/foo/]
diff --git a/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/post-test b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/hierarchy/standard/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/install b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/rules b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/rules
new file mode 100755
index 0000000..ecf629b
--- /dev/null
+++ b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+PKG:=files-ieee-data
+INSTPATH:=$(CURDIR)/debian/tmp/usr/share/$(PKG)
+
+
+%:
+ dh $@
+
+override_dh_install:
+ mkdir -p $(INSTPATH)
+ gzip -c -n --best src/oui.txt > $(INSTPATH)/oui.txt.gz
+ cp src/oui.txt $(INSTPATH)/oui.idx
+ cp src/oui.txt $(INSTPATH)/oui.db
+ cp src/oui.txt $(INSTPATH)/iab.idx
+ cp src/oui.txt $(INSTPATH)/ieee-oui.idx
+ cp src/oui.txt $(INSTPATH)/get-iab
+ cp src/oui.txt $(INSTPATH)/download-oui
+# false positive
+ ln -s /usr/share/ieee-data/iab.txt $(INSTPATH)/iab.txt
+ dh_install
+
+
+
diff --git a/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/fill-values b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/fill-values
new file mode 100644
index 0000000..a2c4d8f
--- /dev/null
+++ b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-ieee-data
+Description: Check for different ieee data install
diff --git a/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/orig/src/oui.txt b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/orig/src/oui.txt
new file mode 100644
index 0000000..c09934d
--- /dev/null
+++ b/t/recipes/checks/files/ieee-data/files-ieee-data/build-spec/orig/src/oui.txt
@@ -0,0 +1 @@
+# oui database \ No newline at end of file
diff --git a/t/recipes/checks/files/ieee-data/files-ieee-data/eval/desc b/t/recipes/checks/files/ieee-data/files-ieee-data/eval/desc
new file mode 100644
index 0000000..6bd423c
--- /dev/null
+++ b/t/recipes/checks/files/ieee-data/files-ieee-data/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-ieee-data
+Check: files/ieee-data
diff --git a/t/recipes/checks/files/ieee-data/files-ieee-data/eval/hints b/t/recipes/checks/files/ieee-data/files-ieee-data/eval/hints
new file mode 100644
index 0000000..98d029d
--- /dev/null
+++ b/t/recipes/checks/files/ieee-data/files-ieee-data/eval/hints
@@ -0,0 +1,4 @@
+files-ieee-data (binary): package-installs-ieee-data [usr/share/files-ieee-data/oui.txt.gz]
+files-ieee-data (binary): package-installs-ieee-data [usr/share/files-ieee-data/oui.idx]
+files-ieee-data (binary): package-installs-ieee-data [usr/share/files-ieee-data/oui.db]
+files-ieee-data (binary): package-installs-ieee-data [usr/share/files-ieee-data/iab.idx]
diff --git a/t/recipes/checks/files/includes/util-h/build-spec/debian/install b/t/recipes/checks/files/includes/util-h/build-spec/debian/install
new file mode 100644
index 0000000..346e9e7
--- /dev/null
+++ b/t/recipes/checks/files/includes/util-h/build-spec/debian/install
@@ -0,0 +1,3 @@
+*.h usr/include
+*.h usr/include/private-subdir
+*.h usr/include/x86_64-linux-gnu
diff --git a/t/recipes/checks/files/includes/util-h/build-spec/fill-values b/t/recipes/checks/files/includes/util-h/build-spec/fill-values
new file mode 100644
index 0000000..44b4299
--- /dev/null
+++ b/t/recipes/checks/files/includes/util-h/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: util-h
+Description: Ships a header in /usr/include/util.h
diff --git a/t/recipes/checks/files/includes/util-h/build-spec/orig/util.h b/t/recipes/checks/files/includes/util-h/build-spec/orig/util.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/includes/util-h/build-spec/orig/util.h
diff --git a/t/recipes/checks/files/includes/util-h/eval/desc b/t/recipes/checks/files/includes/util-h/eval/desc
new file mode 100644
index 0000000..29db8ae
--- /dev/null
+++ b/t/recipes/checks/files/includes/util-h/eval/desc
@@ -0,0 +1,4 @@
+Testname: util-h
+Check: files/includes
+See-Also:
+ Bug#898377
diff --git a/t/recipes/checks/files/includes/util-h/eval/hints b/t/recipes/checks/files/includes/util-h/eval/hints
new file mode 100644
index 0000000..cbcfe9a
--- /dev/null
+++ b/t/recipes/checks/files/includes/util-h/eval/hints
@@ -0,0 +1,2 @@
+util-h (binary): header-has-overly-generic-name [usr/include/x86_64-linux-gnu/util.h]
+util-h (binary): header-has-overly-generic-name [usr/include/util.h]
diff --git a/t/recipes/checks/files/includes/utils-h/build-spec/debian/install b/t/recipes/checks/files/includes/utils-h/build-spec/debian/install
new file mode 100644
index 0000000..346e9e7
--- /dev/null
+++ b/t/recipes/checks/files/includes/utils-h/build-spec/debian/install
@@ -0,0 +1,3 @@
+*.h usr/include
+*.h usr/include/private-subdir
+*.h usr/include/x86_64-linux-gnu
diff --git a/t/recipes/checks/files/includes/utils-h/build-spec/fill-values b/t/recipes/checks/files/includes/utils-h/build-spec/fill-values
new file mode 100644
index 0000000..f3837c1
--- /dev/null
+++ b/t/recipes/checks/files/includes/utils-h/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: utils-h
+Description: Ships a header in /usr/include/utils.h
diff --git a/t/recipes/checks/files/includes/utils-h/build-spec/orig/utils.h b/t/recipes/checks/files/includes/utils-h/build-spec/orig/utils.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/includes/utils-h/build-spec/orig/utils.h
diff --git a/t/recipes/checks/files/includes/utils-h/eval/desc b/t/recipes/checks/files/includes/utils-h/eval/desc
new file mode 100644
index 0000000..a1cd147
--- /dev/null
+++ b/t/recipes/checks/files/includes/utils-h/eval/desc
@@ -0,0 +1,4 @@
+Testname: utils-h
+Check: files/includes
+See-Also:
+ Bug#982322
diff --git a/t/recipes/checks/files/includes/utils-h/eval/hints b/t/recipes/checks/files/includes/utils-h/eval/hints
new file mode 100644
index 0000000..221dfd8
--- /dev/null
+++ b/t/recipes/checks/files/includes/utils-h/eval/hints
@@ -0,0 +1,2 @@
+utils-h (binary): header-has-overly-generic-name [usr/include/x86_64-linux-gnu/utils.h]
+utils-h (binary): header-has-overly-generic-name [usr/include/utils.h]
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.docs b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.docs
new file mode 100644
index 0000000..42f92ea
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.docs
@@ -0,0 +1,3 @@
+read-only
+README
+some-file
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.init b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.init
new file mode 100644
index 0000000..4ebbdf5
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: binary
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Useless
+# Description: Does nothing
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.install b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.install
new file mode 100644
index 0000000..c759290
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.install
@@ -0,0 +1,9 @@
+sample.ali usr/lib/some-where/
+script-uid usr/bin/
+script-ugid usr/bin/
+script-gid usr/bin/
+script-wexec usr/bin/
+script-wuid usr/bin/
+script-ro usr/bin/
+script etc/cron.d/
+script etc/emacs.d/
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.manpages b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.manpages
new file mode 100644
index 0000000..ad3e735
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/binary.manpages
@@ -0,0 +1 @@
+script-*.1
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/clean b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/clean
new file mode 100644
index 0000000..1e7cec6
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/clean
@@ -0,0 +1 @@
+script*.1
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/control.in b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/control.in
new file mode 100644
index 0000000..5c8703f
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: binary
+Architecture: all
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: game
+Architecture: all
+Section: games
+Depends: ${misc:Depends}
+Description: [% $description %] - game
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Game package.
+
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.install b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.install
new file mode 100644
index 0000000..f708f99
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.install
@@ -0,0 +1 @@
+script usr/games/
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.manpages b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.manpages
new file mode 100644
index 0000000..8d16fb4
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/game.manpages
@@ -0,0 +1 @@
+script.1
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/rules b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/rules
new file mode 100644
index 0000000..951f84c
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/debian/rules
@@ -0,0 +1,31 @@
+#!/usr/bin/make -f
+
+GPKG:=game
+PKG:=binary
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ for N in uid gid ugid wexec wuid ro; do \
+ sed s/script/script-$$N/ < script > script-$$N ; \
+ pod2man --section 1 script-$$N > script-$$N.1 ; \
+ done
+ pod2man --section 1 script > script.1
+
+override_dh_fixperms:
+ dh_fixperms
+
+ chmod 0444 debian/$(PKG)/usr/share/doc/$(PKG)/read-only
+ chmod 4755 debian/$(PKG)/usr/bin/script-uid
+ chmod 2755 debian/$(PKG)/usr/bin/script-gid
+ chmod 6755 debian/$(PKG)/usr/bin/script-ugid
+ chmod 0775 debian/$(PKG)/usr/bin/script-wexec
+ chmod 4744 debian/$(PKG)/usr/bin/script-wuid
+ chmod 0751 debian/$(PKG)/usr/bin/script-ro
+ chmod 0644 debian/$(PKG)/usr/lib/some-where/sample.ali
+ chmod 0744 debian/$(PKG)/usr/share/doc/$(PKG)
+ chmod 0755 debian/$(PKG)/usr/share/doc/$(PKG)/some-file
+ chmod 0755 debian/$(PKG)/etc/cron.d/script
+ chmod 0755 debian/$(PKG)/etc/emacs.d/script
+ chmod 0765 debian/$(PKG)/etc/init.d/binary
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/fill-values b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/fill-values
new file mode 100644
index 0000000..c914891
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-bad-perm-owner
+Description: General permissions and owner tests
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/README b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/read-only b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/read-only
new file mode 100644
index 0000000..1a3fca1
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/read-only
@@ -0,0 +1 @@
+Fadango on the core
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/sample.ali b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/sample.ali
new file mode 100644
index 0000000..fec3fc8
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/sample.ali
@@ -0,0 +1 @@
+This is not a valid ali file
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/script b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/script
new file mode 100755
index 0000000..8521013
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/script
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+echo "Aloha"
+
+exit 0
+
+=head1 NAME
+
+script -- prints Aloha to stdout
+
+=head1 SYNOPSIS
+
+ script
+
+=head1 DESCRIPTION
+
+Prints Aloha to stdout and that is it.
+
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/some-file b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/some-file
new file mode 100644
index 0000000..0dfa8ff
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This is executable and should not be. :)
+ - Unfortunately it triggers an extra tag... oh well.
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/eval/desc b/t/recipes/checks/files/init/files-bad-perm-owner/eval/desc
new file mode 100644
index 0000000..9b7e135
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-bad-perm-owner
+Check: files/init
diff --git a/t/recipes/checks/files/init/files-bad-perm-owner/eval/hints b/t/recipes/checks/files/init/files-bad-perm-owner/eval/hints
new file mode 100644
index 0000000..164ab9f
--- /dev/null
+++ b/t/recipes/checks/files/init/files-bad-perm-owner/eval/hints
@@ -0,0 +1 @@
+binary (binary): non-standard-file-permissions-for-etc-init.d-script 0765 != 0755 [etc/init.d/binary]
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/eval/desc b/t/recipes/checks/files/init/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..27432d7
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/init
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/eval/hints b/t/recipes/checks/files/init/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..70ff8e4
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/eval/hints
@@ -0,0 +1,3 @@
+files-foo-in-bar (binary): package-installs-into-etc-rc.d [etc/rc.d/bar]
+files-foo-in-bar (binary): package-installs-into-etc-rc.boot [etc/rc.boot/bar]
+files-foo-in-bar (binary): package-installs-deprecated-upstart-configuration [etc/init/bar]
diff --git a/t/recipes/checks/files/init/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/init/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/init/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/clean b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/dirs b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/examples b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/install b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/links b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/manpages b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/debian/rules b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/fill-values b/t/recipes/checks/files/ld-so/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/dir b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/ld-so/files-general/build-spec/orig/types b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/ld-so/files-general/eval/desc b/t/recipes/checks/files/ld-so/files-general/eval/desc
new file mode 100644
index 0000000..9db6add
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/ld-so
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/ld-so/files-general/eval/hints b/t/recipes/checks/files/ld-so/files-general/eval/hints
new file mode 100644
index 0000000..39fb68c
--- /dev/null
+++ b/t/recipes/checks/files/ld-so/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): package-modifies-ld.so-search-path [etc/ld.so.conf.d/lintian-lib.conf]
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/debian/docs b/t/recipes/checks/files/licenses/files-extra-license/build-spec/debian/docs
new file mode 100644
index 0000000..78a4374
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/debian/docs
@@ -0,0 +1,3 @@
+license*
+bsd.yml
+_sources
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/fill-values b/t/recipes/checks/files/licenses/files-extra-license/build-spec/fill-values
new file mode 100644
index 0000000..7faded3
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-extra-license
+Description: Test for extra license files
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/LICENSE.rst.txt b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/LICENSE.rst.txt
new file mode 100644
index 0000000..473e105
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/LICENSE.rst.txt
@@ -0,0 +1 @@
+Lintian should pick up this as an extra license file.
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/license.txt b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/license.txt
new file mode 100644
index 0000000..473e105
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/_sources/license.txt
@@ -0,0 +1 @@
+Lintian should pick up this as an extra license file.
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/bsd.yml b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/bsd.yml
new file mode 100644
index 0000000..2360bf6
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/bsd.yml
@@ -0,0 +1 @@
+Lintian should NOT pick up this as an extra license file.
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.txt b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.txt
new file mode 100644
index 0000000..473e105
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.txt
@@ -0,0 +1 @@
+Lintian should pick up this as an extra license file.
diff --git a/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.ui b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.ui
new file mode 100644
index 0000000..afae290
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/build-spec/orig/license.ui
@@ -0,0 +1,2 @@
+Lintian should not mistake this QT UI file for a license file.
+
diff --git a/t/recipes/checks/files/licenses/files-extra-license/eval/desc b/t/recipes/checks/files/licenses/files-extra-license/eval/desc
new file mode 100644
index 0000000..c2463c9
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-extra-license
+Check: files/licenses
diff --git a/t/recipes/checks/files/licenses/files-extra-license/eval/hints b/t/recipes/checks/files/licenses/files-extra-license/eval/hints
new file mode 100644
index 0000000..fc24bcd
--- /dev/null
+++ b/t/recipes/checks/files/licenses/files-extra-license/eval/hints
@@ -0,0 +1 @@
+files-extra-license (binary): extra-license-file [usr/share/doc/files-extra-license/license.txt]
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/eval/desc b/t/recipes/checks/files/licenses/legacy-filenames/eval/desc
new file mode 100644
index 0000000..667b65f
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/licenses
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/eval/hints b/t/recipes/checks/files/licenses/legacy-filenames/eval/hints
new file mode 100644
index 0000000..41010e3
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/eval/hints
@@ -0,0 +1,3 @@
+filenames (binary): extra-license-file [usr/share/pixmaps/license.txt]
+filenames (binary): extra-license-file [usr/share/pixmaps/license.foo]
+filenames (binary): extra-license-file [usr/share/pixmaps/COPYING]
diff --git a/t/recipes/checks/files/licenses/legacy-filenames/eval/post-test b/t/recipes/checks/files/licenses/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/licenses/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/locales/files-locales/build-spec/debian/install b/t/recipes/checks/files/locales/files-locales/build-spec/debian/install
new file mode 100644
index 0000000..00baa2f
--- /dev/null
+++ b/t/recipes/checks/files/locales/files-locales/build-spec/debian/install
@@ -0,0 +1,6 @@
+dummy usr/share/locale/en_US/
+dummy usr/share/locale/en_UK/
+dummy usr/share/locale/ind/
+dummy usr/share/locale/wa/
+dummy usr/share/locale/zz/
+dummy usr/share/locale/cz_CZ/
diff --git a/t/recipes/checks/files/locales/files-locales/build-spec/fill-values b/t/recipes/checks/files/locales/files-locales/build-spec/fill-values
new file mode 100644
index 0000000..9b586cc
--- /dev/null
+++ b/t/recipes/checks/files/locales/files-locales/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-locales
+Description: Test checks about incorrect locale codes
diff --git a/t/recipes/checks/files/locales/files-locales/build-spec/orig/dummy b/t/recipes/checks/files/locales/files-locales/build-spec/orig/dummy
new file mode 100644
index 0000000..5c3118d
--- /dev/null
+++ b/t/recipes/checks/files/locales/files-locales/build-spec/orig/dummy
@@ -0,0 +1 @@
+dummy file
diff --git a/t/recipes/checks/files/locales/files-locales/eval/desc b/t/recipes/checks/files/locales/files-locales/eval/desc
new file mode 100644
index 0000000..04335b5
--- /dev/null
+++ b/t/recipes/checks/files/locales/files-locales/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-locales
+Check: files/locales
diff --git a/t/recipes/checks/files/locales/files-locales/eval/hints b/t/recipes/checks/files/locales/files-locales/eval/hints
new file mode 100644
index 0000000..aae9405
--- /dev/null
+++ b/t/recipes/checks/files/locales/files-locales/eval/hints
@@ -0,0 +1,4 @@
+files-locales (binary): unknown-locale-code zz [usr/share/locale/zz/]
+files-locales (binary): incorrect-locale-code ind -> id [usr/share/locale/ind/]
+files-locales (binary): incorrect-locale-code en_UK -> en_GB [usr/share/locale/en_UK/]
+files-locales (binary): incorrect-locale-code cz_CZ -> cs_CZ [usr/share/locale/cz_CZ/]
diff --git a/t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/fill-values b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/fill-values
new file mode 100644
index 0000000..70f0df9
--- /dev/null
+++ b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: files-missing-intermediate-dirs
+Description: Test for tarballs without intermediate dirs
diff --git a/t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/tar-data b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/tar-data
new file mode 100755
index 0000000..f0ca503
--- /dev/null
+++ b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.gz --gzip --directory "$rootdir" "usr/share/doc/files-missing-intermediate-dirs"
diff --git a/t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/desc b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/desc
new file mode 100644
index 0000000..3ddf51b
--- /dev/null
+++ b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-missing-intermediate-dirs
+Check: files/missing
diff --git a/t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/hints b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/hints
new file mode 100644
index 0000000..dad9880
--- /dev/null
+++ b/t/recipes/checks/files/missing/files-missing-intermediate-dirs/eval/hints
@@ -0,0 +1,3 @@
+files-missing-intermediate-dirs (binary): missing-intermediate-directory [usr/share/doc/]
+files-missing-intermediate-dirs (binary): missing-intermediate-directory [usr/share/]
+files-missing-intermediate-dirs (binary): missing-intermediate-directory [usr/]
diff --git a/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/control.in b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/control.in
new file mode 100644
index 0000000..f0ba081
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-dev
+Section: libdevel
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Multi-Arch: foreign
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/rules b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/rules
new file mode 100755
index 0000000..ba49d56
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/$(shell dh_listpackages)/usr/lib/$(DEB_HOST_MULTIARCH)
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ dh_auto_install
+
+ mkdir -p $(DESTDIR)/cmake
+ mkdir -p $(DESTDIR)/pkgconfig
+
+ touch $(DESTDIR)/libfoo.a
+ touch $(DESTDIR)/cmake/foo.cmake
+ touch $(DESTDIR)/pkgconfig/libfoo.pc
+
+override_dh_strip:
diff --git a/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/fill-values b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/fill-values
new file mode 100644
index 0000000..c391850
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-multiarch-foreign-files
+Description: Test for files violating Multi-Arch: foreign
+Package-Architecture: any
diff --git a/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/desc b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/desc
new file mode 100644
index 0000000..30118b5
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-multiarch-foreign-files
+Check: files/multi-arch
+Test-Architectures: amd64
diff --git a/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/hints b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/hints
new file mode 100644
index 0000000..120cded
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/hints
@@ -0,0 +1,3 @@
+libfoo-dev (binary): multiarch-foreign-static-library [usr/lib/x86_64-linux-gnu/libfoo.a]
+libfoo-dev (binary): multiarch-foreign-pkgconfig [usr/lib/x86_64-linux-gnu/pkgconfig/libfoo.pc]
+libfoo-dev (binary): multiarch-foreign-cmake-file [usr/lib/x86_64-linux-gnu/cmake/foo.cmake]
diff --git a/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/post-test b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/post-test
new file mode 100644
index 0000000..7e8f67e
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-multiarch-foreign-files/eval/post-test
@@ -0,0 +1 @@
+s, usr/lib/[^/]+/, usr/lib/TRIPLET/,
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/control.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/control.in
new file mode 100644
index 0000000..77950ef
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/control.in
@@ -0,0 +1,29 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: pkgconfig-all
+Architecture: all
+Multi-Arch: foreign
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: Contains test file for pkgconfig arch all
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch all pkgconfig files.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: pkgconfig-any
+Architecture: any
+Multi-Arch: foreign
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: Contains test file for pkgconfig arch any
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch any pkgconfig files.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-all.install b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-all.install
new file mode 100644
index 0000000..6127277
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-all.install
@@ -0,0 +1 @@
+usr/lib/pkgconfig/*.pc
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-any.install b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-any.install
new file mode 100644
index 0000000..550fc5b
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/pkgconfig-any.install
@@ -0,0 +1 @@
+usr/lib/*-*-*/pkgconfig/*.pc
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/rules b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/rules
new file mode 100644
index 0000000..81bade2
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/pkgconfig-any/usr/lib
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DESTDIR)
+ touch $(DESTDIR)/libstaticlib.a
+
+override_dh_strip:
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/fill-values b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/fill-values
new file mode 100644
index 0000000..9a97d95
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-pkgconfig
+Description: Check for detection of pkgconfig problem
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/Makefile b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/Makefile
new file mode 100644
index 0000000..796e1bc
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/Makefile
@@ -0,0 +1,21 @@
+ARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+ifeq ($(ARCH), x86_64-linux-gnu)
+ ARCH_CROSS=i386-linux-gnu
+else
+ ARCH_CROSS=x86_64-linux-gnu
+endif
+
+all:
+ find generated -name '*.pc.in' -exec sh -c 'echo "build" {} && cat {} | sed s/\$$\(ARCH\)/$(ARCH)/g | sed s/\$$\(ARCH_CROSS\)/$(ARCH_CROSS)/g > `echo {} | sed s/\.pc\.in$$/\.pc/g`' \;
+
+install:
+ install -d $(DESTDIR)/usr/lib/pkgconfig/
+ install -d $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+ install -m 644 indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/
+ install -m 644 generated/arch-*.pc $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+ install -m 644 generated/indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/
+
+clean distclean:
+ rm -f generated/*.pc
+
+check test:
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in
new file mode 100644
index 0000000..452d3a2
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in
@@ -0,0 +1,6 @@
+Name: arch-cross
+Description: A library that include cross architecture
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH_CROSS)/someconfig.h
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in
new file mode 100644
index 0000000..7c3bd9e
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in
@@ -0,0 +1,6 @@
+Name: indep-good
+Description: A library good
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/indep-good
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in
new file mode 100644
index 0000000..c847fe3
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in
@@ -0,0 +1,9 @@
+Name: arch-include-arch
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs: -ldoesnotexist -lotherdoesnotexist -Lfalse-positive-linux-gnu -lstaticlib
+Cflags: -I/usr/include/$(ARCH)/arch-include-arch
+libdir=/usr/lib/$(ARCH)
+# no new line
+Libs: -L/usr/lib/$(ARCH)
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in
new file mode 100644
index 0000000..3325139
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in
@@ -0,0 +1,6 @@
+Name: indep-include-arch-1
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH)/indep-include-arch
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in
new file mode 100644
index 0000000..36dd09b
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in
@@ -0,0 +1,7 @@
+Name: indep-include-arch-2
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+# no new line at end
+Cflags: -I/usr/include/$(ARCH) \ No newline at end of file
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in
new file mode 100644
index 0000000..2a73e27
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in
@@ -0,0 +1,6 @@
+Name: indep-include-arch-2
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH) -I/usr/include
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-good.pc b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-good.pc
new file mode 100644
index 0000000..7c3bd9e
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-good.pc
@@ -0,0 +1,6 @@
+Name: indep-good
+Description: A library good
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/indep-good
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-really-bad.pc b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-really-bad.pc
new file mode 100644
index 0000000..98b3fa3
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/build-spec/orig/indep-really-bad.pc
@@ -0,0 +1,38 @@
+Name: indep-good
+Description: A library with ugly flags
+Requires:
+Version: 3.1.3
+Libs:
+# a comment removed -L/usr/local/lib/somewhere \
+SOMEFLAGS=-I/var/cache/pbuilder/build/
+Cflags: \
+ -I/usr/local/somewhere \
+ -D__linux__ \
+ -D__x86_64__ \
+ -D__OSVERSION__=2\
+ -g \
+ -D_FORTIFY_SOURCE=2 \
+ -O2 \
+ -Wall \
+ -fvisibility=hidden \
+ -fPIE \
+ -fstack-protector \
+ --param=ssp-buffer-size=2 \
+ -frounding-math \
+ -lmath \
+ -march=core2 \
+ -DNDEBUG \
+ -pedantic \
+ -DNEW_STDCPP \
+ -fno-check-new \
+ -fno-inline \
+ -Wl,z,relro \
+ -pie \
+ -fno-strict-aliasing -fwrapv -fexcess-precision=standard \
+ -ffast-math -funsafe-math-optimizations -fsigned-zeros -fno-trapping-math -fassociative-math -freciprocal-math -fsignaling-math -fno-errno-math -ffp-contract -fassociative-math -ffinite-math-only \
+ @SOME_FLAGS@
+#False positive
+Fflags: \
+ @SOME_FLAGS \
+ @
+
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/desc b/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/desc
new file mode 100644
index 0000000..ae00fa5
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-pkgconfig
+Check: files/multi-arch
+Test-Architectures: amd64
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/hints b/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/hints
new file mode 100644
index 0000000..34e4c75
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/hints
@@ -0,0 +1,3 @@
+pkgconfig-any (binary): multiarch-foreign-pkgconfig [usr/lib/x86_64-linux-gnu/pkgconfig/arch-include-arch.pc]
+pkgconfig-any (binary): multiarch-foreign-pkgconfig [usr/lib/x86_64-linux-gnu/pkgconfig/arch-good.pc]
+pkgconfig-any (binary): multiarch-foreign-pkgconfig [usr/lib/x86_64-linux-gnu/pkgconfig/arch-cross.pc]
diff --git a/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/post-test b/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/post-test
new file mode 100644
index 0000000..a4059d0
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-pkgconfig/eval/post-test
@@ -0,0 +1,2 @@
+s/full text contains architecture specific dir \S+$/full text contains architecture specific dir ARCH/
+s, usr/lib/[^/]+/pkgconfig/, usr/lib/ARCH/pkgconfig/,
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/compat.in b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/control.in b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/control.in
new file mode 100644
index 0000000..addc2fc
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/control.in
@@ -0,0 +1,33 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libpublic1
+Section: libs
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Multi-Arch: same
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libpublic-dev
+Section: libdevel
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends},
+Multi-Arch: foreign
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Supposedly includes some headers.
+
+
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install
new file mode 100644
index 0000000..012244d
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic-dev.install
@@ -0,0 +1 @@
+usr/lib/*/*.so
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.install b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.install
new file mode 100644
index 0000000..3de3b10
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.install
@@ -0,0 +1 @@
+usr/lib/*/*.so.*
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols
new file mode 100644
index 0000000..d8226ca
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/debian/libpublic1.symbols
@@ -0,0 +1,3 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/fill-values b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/fill-values
new file mode 100644
index 0000000..2b7d50c
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: files-wrong-ma-foreign
+Description: Test for wrong usage of Multi-Arch foreign
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/Makefile b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/Makefile
new file mode 100644
index 0000000..ff58c3a
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/Makefile
@@ -0,0 +1,24 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libpublic.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+LIBDIR := /usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)$(LIBDIR)
+ install -m 0644 *.so* $(DESTDIR)$(LIBDIR)
+ set -e ; for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)$(LIBDIR)/$$FILE ; \
+ ln -s $${FILE}.0.1 $(DESTDIR)$(LIBDIR)/$$(echo $$FILE | perl -pe 's/\.so\K.*//') ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/code.c b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/desc b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/desc
new file mode 100644
index 0000000..f8a0fb9
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-wrong-ma-foreign
+Check: files/multi-arch
diff --git a/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/hints b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/hints
new file mode 100644
index 0000000..ac7ed64
--- /dev/null
+++ b/t/recipes/checks/files/multi-arch/files-wrong-ma-foreign/eval/hints
@@ -0,0 +1 @@
+libpublic-dev (binary): multiarch-foreign-shared-library
diff --git a/t/recipes/checks/files/names/eslint-config-file/build-spec/debian/docs b/t/recipes/checks/files/names/eslint-config-file/build-spec/debian/docs
new file mode 100644
index 0000000..4c2095a
--- /dev/null
+++ b/t/recipes/checks/files/names/eslint-config-file/build-spec/debian/docs
@@ -0,0 +1 @@
+.eslintrc
diff --git a/t/recipes/checks/files/names/eslint-config-file/build-spec/fill-values b/t/recipes/checks/files/names/eslint-config-file/build-spec/fill-values
new file mode 100644
index 0000000..eaaa6a9
--- /dev/null
+++ b/t/recipes/checks/files/names/eslint-config-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: eslint-config-file
+Skeleton: upload-native
+Description: Test for presence of .eslintrc config file
diff --git a/t/recipes/checks/files/names/eslint-config-file/build-spec/orig/.eslintrc b/t/recipes/checks/files/names/eslint-config-file/build-spec/orig/.eslintrc
new file mode 100644
index 0000000..30c993f
--- /dev/null
+++ b/t/recipes/checks/files/names/eslint-config-file/build-spec/orig/.eslintrc
@@ -0,0 +1 @@
+EMPTY FILE
diff --git a/t/recipes/checks/files/names/eslint-config-file/eval/desc b/t/recipes/checks/files/names/eslint-config-file/eval/desc
new file mode 100644
index 0000000..405497d
--- /dev/null
+++ b/t/recipes/checks/files/names/eslint-config-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: eslint-config-file
+Check: files/names
diff --git a/t/recipes/checks/files/names/eslint-config-file/eval/hints b/t/recipes/checks/files/names/eslint-config-file/eval/hints
new file mode 100644
index 0000000..003751b
--- /dev/null
+++ b/t/recipes/checks/files/names/eslint-config-file/eval/hints
@@ -0,0 +1 @@
+eslint-config-file (binary): package-contains-eslint-config-file [usr/share/doc/eslint-config-file/.eslintrc]
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/clean b/t/recipes/checks/files/names/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/dirs b/t/recipes/checks/files/names/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..11a5a52
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/dirs
@@ -0,0 +1,14 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/icons/hicolor
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/examples b/t/recipes/checks/files/names/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/install b/t/recipes/checks/files/names/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/links b/t/recipes/checks/files/names/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/manpages b/t/recipes/checks/files/names/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/names/files-general/build-spec/debian/rules b/t/recipes/checks/files/names/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..2830947
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/debian/rules
@@ -0,0 +1,68 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/share/icons/hicolor/icon-theme.cache
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/names/files-general/build-spec/fill-values b/t/recipes/checks/files/names/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/names/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/dir b/t/recipes/checks/files/names/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/names/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/names/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/names/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/names/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/names/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/names/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/names/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/names/files-general/build-spec/orig/types b/t/recipes/checks/files/names/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/names/files-general/eval/desc b/t/recipes/checks/files/names/files-general/eval/desc
new file mode 100644
index 0000000..d50410e
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/names
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/names/files-general/eval/hints b/t/recipes/checks/files/names/files-general/eval/hints
new file mode 100644
index 0000000..c17ef61
--- /dev/null
+++ b/t/recipes/checks/files/names/files-general/eval/hints
@@ -0,0 +1,11 @@
+files-general (binary): star-file [usr/share/foo/*]
+files-general (binary): shipped-file-without-utf8-name [usr/share/foo/bokmål]
+files-general (binary): package-contains-python-tests-in-global-namespace [usr/lib/python3/dist-packages/test_foo.py]
+files-general (binary): package-contains-python-doctree-file [usr/share/foo/foo.doctree]
+files-general (binary): package-contains-icon-cache-in-generic-dir [usr/share/icons/hicolor/icon-theme.cache]
+files-general (binary): package-contains-file-in-usr-share-hal [usr/share/hal/foo.fdi]
+files-general (binary): package-contains-file-in-etc-skel [etc/skel/.lintianrc]
+files-general (binary): package-contains-compiled-glib-schema [usr/share/glib-2.0/schemas/gschemas.compiled]
+files-general (binary): file-name-in-PATH-is-not-ASCII [usr/bin/é³¥ã®詩]
+files-general (binary): file-name-ends-in-whitespace [usr/share/foo/ws ]
+files-general (binary): file-name-contains-wildcard-character [usr/share/foo/*]
diff --git a/t/recipes/checks/files/names/files-hyphen-file/build-spec/debian/rules b/t/recipes/checks/files/names/files-hyphen-file/build-spec/debian/rules
new file mode 100755
index 0000000..a82a5fc
--- /dev/null
+++ b/t/recipes/checks/files/names/files-hyphen-file/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(tmp)/usr/share/foo
+ touch $(tmp)/usr/share/foo/-
diff --git a/t/recipes/checks/files/names/files-hyphen-file/build-spec/fill-values b/t/recipes/checks/files/names/files-hyphen-file/build-spec/fill-values
new file mode 100644
index 0000000..942f0b3
--- /dev/null
+++ b/t/recipes/checks/files/names/files-hyphen-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-hyphen-file
+Description: Test for files called "-"
diff --git a/t/recipes/checks/files/names/files-hyphen-file/eval/desc b/t/recipes/checks/files/names/files-hyphen-file/eval/desc
new file mode 100644
index 0000000..ec15394
--- /dev/null
+++ b/t/recipes/checks/files/names/files-hyphen-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-hyphen-file
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-hyphen-file/eval/hints b/t/recipes/checks/files/names/files-hyphen-file/eval/hints
new file mode 100644
index 0000000..01fa94d
--- /dev/null
+++ b/t/recipes/checks/files/names/files-hyphen-file/eval/hints
@@ -0,0 +1 @@
+files-hyphen-file (binary): hyphen-file [usr/share/foo/-]
diff --git a/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/debian/rules b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/debian/rules
new file mode 100755
index 0000000..a339514
--- /dev/null
+++ b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+GOOD = debian/$(shell dh_listpackages)/usr/include/python3.7m
+BAD = debian/$(shell dh_listpackages)/usr/include/python3.7
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ mkdir -p $(GOOD) $(BAD)
+ touch $(GOOD)/good.h $(BAD)/bad.h
diff --git a/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/fill-values b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/fill-values
new file mode 100644
index 0000000..65c2dbc
--- /dev/null
+++ b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: files-package-contains-python-header-in-incorrect-directory
+Skeleton: upload-native
+Section: python
+Description: Check for packages installing headers incorrectly
diff --git a/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/desc b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/desc
new file mode 100644
index 0000000..5104f29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-python-header-in-incorrect-directory
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/hints b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/hints
new file mode 100644
index 0000000..ba87dd8
--- /dev/null
+++ b/t/recipes/checks/files/names/files-package-contains-python-header-in-incorrect-directory/eval/hints
@@ -0,0 +1 @@
+files-package-contains-python-header-in-incorrect-directory (binary): package-contains-python-header-in-incorrect-directory [usr/include/python3.7/bad.h]
diff --git a/t/recipes/checks/files/names/files-python-coverage/build-spec/debian/install b/t/recipes/checks/files/names/files-python-coverage/build-spec/debian/install
new file mode 100644
index 0000000..3b6a0bc
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-coverage/build-spec/debian/install
@@ -0,0 +1 @@
+.coverage /usr/share/files-python-coverage
diff --git a/t/recipes/checks/files/names/files-python-coverage/build-spec/fill-values b/t/recipes/checks/files/names/files-python-coverage/build-spec/fill-values
new file mode 100644
index 0000000..cac0e33
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-coverage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-python-coverage
+Description: Check for Python .coverage files
diff --git a/t/recipes/checks/files/names/files-python-coverage/build-spec/orig/.coverage b/t/recipes/checks/files/names/files-python-coverage/build-spec/orig/.coverage
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-coverage/build-spec/orig/.coverage
diff --git a/t/recipes/checks/files/names/files-python-coverage/eval/desc b/t/recipes/checks/files/names/files-python-coverage/eval/desc
new file mode 100644
index 0000000..82d4a34
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-coverage/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-python-coverage
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-python-coverage/eval/hints b/t/recipes/checks/files/names/files-python-coverage/eval/hints
new file mode 100644
index 0000000..e0b1ef6
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-coverage/eval/hints
@@ -0,0 +1 @@
+files-python-coverage (binary): package-contains-python-coverage-file [usr/share/files-python-coverage/.coverage]
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/build-spec/debian/install b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/debian/install
new file mode 100644
index 0000000..1ff5734
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/debian/install
@@ -0,0 +1,2 @@
+.filename /usr/lib/python3/dist-packages/foo
+.directory /usr/lib/python3/dist-packages/foo
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/build-spec/fill-values b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/fill-values
new file mode 100644
index 0000000..1ed4907
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-python-dot-directory
+Description: Check for Python .foo dirs
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/bar b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/bar
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/bar
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/foo b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/foo
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.directory/foo
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.filename b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.filename
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/build-spec/orig/.filename
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/eval/desc b/t/recipes/checks/files/names/files-python-dot-directory/eval/desc
new file mode 100644
index 0000000..d25b10c
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-python-dot-directory
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-python-dot-directory/eval/hints b/t/recipes/checks/files/names/files-python-dot-directory/eval/hints
new file mode 100644
index 0000000..d7f6cbd
--- /dev/null
+++ b/t/recipes/checks/files/names/files-python-dot-directory/eval/hints
@@ -0,0 +1,3 @@
+files-python-dot-directory (binary): package-contains-python-dot-directory [usr/lib/python3/dist-packages/foo/.directory/foo]
+files-python-dot-directory (binary): package-contains-python-dot-directory [usr/lib/python3/dist-packages/foo/.directory/bar]
+files-python-dot-directory (binary): package-contains-python-dot-directory [usr/lib/python3/dist-packages/foo/.directory/]
diff --git a/t/recipes/checks/files/names/files-tar-traps/build-spec/debian/dirs b/t/recipes/checks/files/names/files-tar-traps/build-spec/debian/dirs
new file mode 100644
index 0000000..8c0b6f0
--- /dev/null
+++ b/t/recipes/checks/files/names/files-tar-traps/build-spec/debian/dirs
@@ -0,0 +1 @@
+/strangename
diff --git a/t/recipes/checks/files/names/files-tar-traps/build-spec/debian/install b/t/recipes/checks/files/names/files-tar-traps/build-spec/debian/install
new file mode 100644
index 0000000..e85577a
--- /dev/null
+++ b/t/recipes/checks/files/names/files-tar-traps/build-spec/debian/install
@@ -0,0 +1 @@
+strangename strangename
diff --git a/t/recipes/checks/files/names/files-tar-traps/build-spec/fill-values b/t/recipes/checks/files/names/files-tar-traps/build-spec/fill-values
new file mode 100644
index 0000000..11058e5
--- /dev/null
+++ b/t/recipes/checks/files/names/files-tar-traps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-tar-traps
+Description: Test tags for tar common bugs
diff --git a/t/recipes/checks/files/names/files-tar-traps/build-spec/pre-build b/t/recipes/checks/files/names/files-tar-traps/build-spec/pre-build
new file mode 100755
index 0000000..bbc0e83
--- /dev/null
+++ b/t/recipes/checks/files/names/files-tar-traps/build-spec/pre-build
@@ -0,0 +1,28 @@
+#!/bin/sh
+dir="$1/strangename"
+mkdir -p "$dir"
+
+# All file names are quoted twice, once for the shell and once for tar
+# (-T)
+
+# File named <quote><backslash><space>
+echo "foo" > "$dir/'\\ "
+# File named <backslash>
+echo "bar" > "$dir/\\"
+# File named <backslash><backslash>
+# - causes md5sums-lists-nonexistent-file
+echo "bar" > "$dir/\\\\"
+
+# File named a<backslash><backslash>b
+# - causes md5sums-lists-nonexistent-file
+echo "bar" > "$dir/a\\\\b"
+
+# Symlink to file named a<backslash><backslash>b
+ln -s 'a\\b' "$dir/link-to-weird-file1"
+
+# Because the above is not insane enough...
+# If Lintian gets this wrong, it will become an
+# "unsafe-symlink".
+mkdir -p "$dir/\\.\\./\\.\\."
+echo "golf" > "$dir/\\.\\./\\.\\./\\.\\."
+ln -s '\.\./\.\./\.\.' "$dir/some-file"
diff --git a/t/recipes/checks/files/names/files-tar-traps/eval/desc b/t/recipes/checks/files/names/files-tar-traps/eval/desc
new file mode 100644
index 0000000..2abeaad
--- /dev/null
+++ b/t/recipes/checks/files/names/files-tar-traps/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-tar-traps
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-tar-traps/eval/hints b/t/recipes/checks/files/names/files-tar-traps/eval/hints
new file mode 100644
index 0000000..89369e7
--- /dev/null
+++ b/t/recipes/checks/files/names/files-tar-traps/eval/hints
@@ -0,0 +1 @@
+files-tar-traps (binary): file-name-ends-in-whitespace [strangename/strangename/'\ ]
diff --git a/t/recipes/checks/files/names/files-wildcard-characters/build-spec/debian/rules b/t/recipes/checks/files/names/files-wildcard-characters/build-spec/debian/rules
new file mode 100755
index 0000000..c14beca
--- /dev/null
+++ b/t/recipes/checks/files/names/files-wildcard-characters/build-spec/debian/rules
@@ -0,0 +1,11 @@
+#!/usr/bin/make -f
+
+PREFIX = $(CURDIR)/debian/files-wildcard-characters/usr/share/files-wildcard-characters
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ mkdir -p $(PREFIX)
+ touch $(PREFIX)/star*
+ touch $(PREFIX)/question-mark?
diff --git a/t/recipes/checks/files/names/files-wildcard-characters/build-spec/fill-values b/t/recipes/checks/files/names/files-wildcard-characters/build-spec/fill-values
new file mode 100644
index 0000000..eeda1f4
--- /dev/null
+++ b/t/recipes/checks/files/names/files-wildcard-characters/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-wildcard-characters
+Description: Check for wildcard characters in filenames
diff --git a/t/recipes/checks/files/names/files-wildcard-characters/eval/desc b/t/recipes/checks/files/names/files-wildcard-characters/eval/desc
new file mode 100644
index 0000000..81eddf3
--- /dev/null
+++ b/t/recipes/checks/files/names/files-wildcard-characters/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-wildcard-characters
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-wildcard-characters/eval/hints b/t/recipes/checks/files/names/files-wildcard-characters/eval/hints
new file mode 100644
index 0000000..08d42d6
--- /dev/null
+++ b/t/recipes/checks/files/names/files-wildcard-characters/eval/hints
@@ -0,0 +1,2 @@
+files-wildcard-characters (binary): file-name-contains-wildcard-character [usr/share/files-wildcard-characters/star*]
+files-wildcard-characters (binary): file-name-contains-wildcard-character [usr/share/files-wildcard-characters/question-mark?]
diff --git a/t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/debian/rules b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/debian/rules
new file mode 100644
index 0000000..ed45d82
--- /dev/null
+++ b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+DIR := debian/$(shell dh_listpackages)/usr/bin
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ mkdir -p $(DIR)
+ touch $(DIR)/empty-executable
diff --git a/t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/fill-values b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/fill-values
new file mode 100644
index 0000000..ec19fe1
--- /dev/null
+++ b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: files-zero-byte-executable-in-path
+Skeleton: upload-native
+Description: Check detection of zero-byte executables in PATH
diff --git a/t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/desc b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/desc
new file mode 100644
index 0000000..56a599e
--- /dev/null
+++ b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-zero-byte-executable-in-path
+Check: files/names
diff --git a/t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/hints b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/hints
new file mode 100644
index 0000000..e32bc47
--- /dev/null
+++ b/t/recipes/checks/files/names/files-zero-byte-executable-in-path/eval/hints
@@ -0,0 +1 @@
+files-zero-byte-executable-in-path (binary): zero-byte-executable-in-path [usr/bin/empty-executable]
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/control b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/rules b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/debian/templates b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/fill-values b/t/recipes/checks/files/names/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/files/names/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/files/names/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/files/names/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/files/names/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/names/legacy-binary/eval/desc b/t/recipes/checks/files/names/legacy-binary/eval/desc
new file mode 100644
index 0000000..35fa921
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: files/names
diff --git a/t/recipes/checks/files/names/legacy-binary/eval/hints b/t/recipes/checks/files/names/legacy-binary/eval/hints
new file mode 100644
index 0000000..dcfaebf
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (binary): zero-byte-executable-in-path [usr/bin/iminusrbin]
+binary (binary): file-name-ends-in-whitespace [usr/share/doc-base/space ]
diff --git a/t/recipes/checks/files/names/legacy-binary/eval/post-test b/t/recipes/checks/files/names/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/names/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/names/legacy-filenames/eval/desc b/t/recipes/checks/files/names/legacy-filenames/eval/desc
new file mode 100644
index 0000000..db51506
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/names
diff --git a/t/recipes/checks/files/names/legacy-filenames/eval/hints b/t/recipes/checks/files/names/legacy-filenames/eval/hints
new file mode 100644
index 0000000..b05cec1
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/eval/hints
@@ -0,0 +1,3 @@
+filenames (binary): shipped-file-without-utf8-name [usr/share/doc/filenames/bokmål]
+filenames (binary): shipped-file-without-utf8-name [usr/share/doc/filenames/bokm\Ã¥l]
+filenames (binary): file-name-ends-in-whitespace [files/'\ ]
diff --git a/t/recipes/checks/files/names/legacy-filenames/eval/post-test b/t/recipes/checks/files/names/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/names/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/names/national-encoding-in-native/build-spec/fill-values b/t/recipes/checks/files/names/national-encoding-in-native/build-spec/fill-values
new file mode 100644
index 0000000..d21e2b9
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: national-encoding-in-native
+Description: File name in native source tree is not valid UTF-8
diff --git a/t/recipes/checks/files/names/national-encoding-in-native/build-spec/pre-build b/t/recipes/checks/files/names/national-encoding-in-native/build-spec/pre-build
new file mode 100755
index 0000000..a8088a0
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-native/build-spec/pre-build
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+packagedir="$1"
+
+echo "SOME CONTENT" > "$packagedir/bokmål"
+echo "SOME CONTENT" > "$packagedir/bokm\\Ã¥l"
+echo "SOME CONTENT" > "$packagedir/bokmål"
+echo "SOME CONTENT" > "$packagedir/bokm\\ål"
diff --git a/t/recipes/checks/files/names/national-encoding-in-native/eval/desc b/t/recipes/checks/files/names/national-encoding-in-native/eval/desc
new file mode 100644
index 0000000..ffa98b6
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: national-encoding-in-native
+Check: files/names
diff --git a/t/recipes/checks/files/names/national-encoding-in-native/eval/hints b/t/recipes/checks/files/names/national-encoding-in-native/eval/hints
new file mode 100644
index 0000000..f012034
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-native/eval/hints
@@ -0,0 +1,2 @@
+national-encoding-in-native (source): native-source-file-without-utf8-name bokmål
+national-encoding-in-native (source): native-source-file-without-utf8-name bokm\Ã¥l
diff --git a/t/recipes/checks/files/names/national-encoding-in-orig/build-spec/fill-values b/t/recipes/checks/files/names/national-encoding-in-orig/build-spec/fill-values
new file mode 100644
index 0000000..e13b483
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-orig/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: national-encoding-in-orig
+Description: File name in orig.tar.gz is not valid UTF-8
diff --git a/t/recipes/checks/files/names/national-encoding-in-orig/build-spec/pre-orig b/t/recipes/checks/files/names/national-encoding-in-orig/build-spec/pre-orig
new file mode 100755
index 0000000..a8088a0
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-orig/build-spec/pre-orig
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+packagedir="$1"
+
+echo "SOME CONTENT" > "$packagedir/bokmål"
+echo "SOME CONTENT" > "$packagedir/bokm\\Ã¥l"
+echo "SOME CONTENT" > "$packagedir/bokmål"
+echo "SOME CONTENT" > "$packagedir/bokm\\ål"
diff --git a/t/recipes/checks/files/names/national-encoding-in-orig/eval/desc b/t/recipes/checks/files/names/national-encoding-in-orig/eval/desc
new file mode 100644
index 0000000..a67d911
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-orig/eval/desc
@@ -0,0 +1,2 @@
+Testname: national-encoding-in-orig
+Check: files/names
diff --git a/t/recipes/checks/files/names/national-encoding-in-orig/eval/hints b/t/recipes/checks/files/names/national-encoding-in-orig/eval/hints
new file mode 100644
index 0000000..a68fab5
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-orig/eval/hints
@@ -0,0 +1,2 @@
+national-encoding-in-orig (source): upstream-file-without-utf8-name [bokmål]
+national-encoding-in-orig (source): upstream-file-without-utf8-name [bokm\Ã¥l]
diff --git a/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/series b/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/series
new file mode 100644
index 0000000..cfea9d6
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/series
@@ -0,0 +1 @@
+unusual-filenames.patch
diff --git a/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/unusual-filenames.patch b/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/unusual-filenames.patch
new file mode 100644
index 0000000..b5799fd
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/debian/patches/unusual-filenames.patch
@@ -0,0 +1,4 @@
+--- /dev/null
++++ b/bokmål
+@@ -0,0 +1,1 @@
++SOME CONTENT
diff --git a/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/fill-values b/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/fill-values
new file mode 100644
index 0000000..6fa750e
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-patch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: national-encoding-in-patch
+Description: File name created by maintainer patch is not valid UTF-8
diff --git a/t/recipes/checks/files/names/national-encoding-in-patch/eval/desc b/t/recipes/checks/files/names/national-encoding-in-patch/eval/desc
new file mode 100644
index 0000000..51e7a51
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-patch/eval/desc
@@ -0,0 +1,2 @@
+Testname: national-encoding-in-patch
+Check: files/names
diff --git a/t/recipes/checks/files/names/national-encoding-in-patch/eval/hints b/t/recipes/checks/files/names/national-encoding-in-patch/eval/hints
new file mode 100644
index 0000000..18f96d4
--- /dev/null
+++ b/t/recipes/checks/files/names/national-encoding-in-patch/eval/hints
@@ -0,0 +1 @@
+national-encoding-in-patch (source): patched-file-without-utf8-name bokmål
diff --git a/t/recipes/checks/files/names/npm-ignore-file/build-spec/debian/docs b/t/recipes/checks/files/names/npm-ignore-file/build-spec/debian/docs
new file mode 100644
index 0000000..2370ae1
--- /dev/null
+++ b/t/recipes/checks/files/names/npm-ignore-file/build-spec/debian/docs
@@ -0,0 +1 @@
+.npmignore
diff --git a/t/recipes/checks/files/names/npm-ignore-file/build-spec/fill-values b/t/recipes/checks/files/names/npm-ignore-file/build-spec/fill-values
new file mode 100644
index 0000000..3427a5e
--- /dev/null
+++ b/t/recipes/checks/files/names/npm-ignore-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: npm-ignore-file
+Skeleton: upload-native
+Description: Test for presence of .npmignore file
diff --git a/t/recipes/checks/files/names/npm-ignore-file/build-spec/orig/.npmignore b/t/recipes/checks/files/names/npm-ignore-file/build-spec/orig/.npmignore
new file mode 100644
index 0000000..30c993f
--- /dev/null
+++ b/t/recipes/checks/files/names/npm-ignore-file/build-spec/orig/.npmignore
@@ -0,0 +1 @@
+EMPTY FILE
diff --git a/t/recipes/checks/files/names/npm-ignore-file/eval/desc b/t/recipes/checks/files/names/npm-ignore-file/eval/desc
new file mode 100644
index 0000000..b986071
--- /dev/null
+++ b/t/recipes/checks/files/names/npm-ignore-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: npm-ignore-file
+Check: files/names
diff --git a/t/recipes/checks/files/names/npm-ignore-file/eval/hints b/t/recipes/checks/files/names/npm-ignore-file/eval/hints
new file mode 100644
index 0000000..6643736
--- /dev/null
+++ b/t/recipes/checks/files/names/npm-ignore-file/eval/hints
@@ -0,0 +1 @@
+npm-ignore-file (binary): package-contains-npm-ignore-file [usr/share/doc/npm-ignore-file/.npmignore]
diff --git a/t/recipes/checks/files/names/python-hypothesis-example/build-spec/debian/docs b/t/recipes/checks/files/names/python-hypothesis-example/build-spec/debian/docs
new file mode 100644
index 0000000..a96d3e8
--- /dev/null
+++ b/t/recipes/checks/files/names/python-hypothesis-example/build-spec/debian/docs
@@ -0,0 +1 @@
+.hypothesis/
diff --git a/t/recipes/checks/files/names/python-hypothesis-example/build-spec/fill-values b/t/recipes/checks/files/names/python-hypothesis-example/build-spec/fill-values
new file mode 100644
index 0000000..af56c17
--- /dev/null
+++ b/t/recipes/checks/files/names/python-hypothesis-example/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: python-hypothesis-example
+Skeleton: upload-native
+Description: Test for presence of Python hypothesis example
diff --git a/t/recipes/checks/files/names/python-hypothesis-example/build-spec/orig/.hypothesis/examples/show/nothing b/t/recipes/checks/files/names/python-hypothesis-example/build-spec/orig/.hypothesis/examples/show/nothing
new file mode 100644
index 0000000..30c993f
--- /dev/null
+++ b/t/recipes/checks/files/names/python-hypothesis-example/build-spec/orig/.hypothesis/examples/show/nothing
@@ -0,0 +1 @@
+EMPTY FILE
diff --git a/t/recipes/checks/files/names/python-hypothesis-example/eval/desc b/t/recipes/checks/files/names/python-hypothesis-example/eval/desc
new file mode 100644
index 0000000..d45aade
--- /dev/null
+++ b/t/recipes/checks/files/names/python-hypothesis-example/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-hypothesis-example
+Check: files/names
diff --git a/t/recipes/checks/files/names/python-hypothesis-example/eval/hints b/t/recipes/checks/files/names/python-hypothesis-example/eval/hints
new file mode 100644
index 0000000..28b86fd
--- /dev/null
+++ b/t/recipes/checks/files/names/python-hypothesis-example/eval/hints
@@ -0,0 +1,2 @@
+python-hypothesis-example (binary): package-contains-python-hypothesis-example [usr/share/doc/python-hypothesis-example/.hypothesis/examples/show/nothing]
+python-hypothesis-example (binary): package-contains-python-hypothesis-example [usr/share/doc/python-hypothesis-example/.hypothesis/examples/show/]
diff --git a/t/recipes/checks/files/names/sass-cache-directory/build-spec/debian/docs b/t/recipes/checks/files/names/sass-cache-directory/build-spec/debian/docs
new file mode 100644
index 0000000..0d31019
--- /dev/null
+++ b/t/recipes/checks/files/names/sass-cache-directory/build-spec/debian/docs
@@ -0,0 +1 @@
+.sass-cache/
diff --git a/t/recipes/checks/files/names/sass-cache-directory/build-spec/fill-values b/t/recipes/checks/files/names/sass-cache-directory/build-spec/fill-values
new file mode 100644
index 0000000..21516be
--- /dev/null
+++ b/t/recipes/checks/files/names/sass-cache-directory/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: sass-cache-directory
+Skeleton: upload-native
+Description: Test for presence of sass cache directory
diff --git a/t/recipes/checks/files/names/sass-cache-directory/build-spec/orig/.sass-cache/nothing b/t/recipes/checks/files/names/sass-cache-directory/build-spec/orig/.sass-cache/nothing
new file mode 100644
index 0000000..30c993f
--- /dev/null
+++ b/t/recipes/checks/files/names/sass-cache-directory/build-spec/orig/.sass-cache/nothing
@@ -0,0 +1 @@
+EMPTY FILE
diff --git a/t/recipes/checks/files/names/sass-cache-directory/eval/desc b/t/recipes/checks/files/names/sass-cache-directory/eval/desc
new file mode 100644
index 0000000..454e342
--- /dev/null
+++ b/t/recipes/checks/files/names/sass-cache-directory/eval/desc
@@ -0,0 +1,2 @@
+Testname: sass-cache-directory
+Check: files/names
diff --git a/t/recipes/checks/files/names/sass-cache-directory/eval/hints b/t/recipes/checks/files/names/sass-cache-directory/eval/hints
new file mode 100644
index 0000000..c657f17
--- /dev/null
+++ b/t/recipes/checks/files/names/sass-cache-directory/eval/hints
@@ -0,0 +1,2 @@
+sass-cache-directory (binary): package-contains-sass-cache-directory [usr/share/doc/sass-cache-directory/.sass-cache/nothing]
+sass-cache-directory (binary): package-contains-sass-cache-directory [usr/share/doc/sass-cache-directory/.sass-cache/]
diff --git a/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/debian/install b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/debian/install
new file mode 100644
index 0000000..399564c
--- /dev/null
+++ b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/debian/install
@@ -0,0 +1 @@
+data* usr/share/lintian/
diff --git a/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/fill-values b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/fill-values
new file mode 100644
index 0000000..a07f33c
--- /dev/null
+++ b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-non-free-md5sums
+Description: Test of md5sums forbidden-file
diff --git a/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-forbidden-lintian-files b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-forbidden-lintian-files
new file mode 100644
index 0000000..4a6664f
--- /dev/null
+++ b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-forbidden-lintian-files
@@ -0,0 +1,5 @@
+This file is here to test lintian md5sums forbidden data file.
+
+It is a free software under CC0 license if copyrightable.
+
+Bastien ROUCARIÈS \ No newline at end of file
diff --git a/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-non-free-lintian-files b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-non-free-lintian-files
new file mode 100644
index 0000000..70bb33a
--- /dev/null
+++ b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/build-spec/orig/data-non-free-lintian-files
@@ -0,0 +1,5 @@
+This file is here to test lintian md5sums non free file
+
+It is a free software under CC0 license if copyrightable.
+
+Bastien ROUCARIÈS \ No newline at end of file
diff --git a/t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/desc b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/desc
new file mode 100644
index 0000000..e29d647
--- /dev/null
+++ b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-non-free-md5sums
+Check: files/non-free
diff --git a/t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/hints b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/hints
new file mode 100644
index 0000000..203c953
--- /dev/null
+++ b/t/recipes/checks/files/non-free/cruft-non-free-md5sums/eval/hints
@@ -0,0 +1 @@
+cruft-non-free-md5sums (source): license-problem-md5sum-non-free-file usual name is data-non-free-lintian-files. This is part of lintian test suite, used for testing this tag See also http://lintian.debian.org. [data-non-free-lintian-files]
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/control.in b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/control.in
new file mode 100644
index 0000000..3b587a1
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/control.in
@@ -0,0 +1,29 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-non-free
+Section: non-free/[% $section %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (okay)
+ non-free in non-free, nice.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free-non-free.install b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free-non-free.install
new file mode 100644
index 0000000..f7644c9
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free-non-free.install
@@ -0,0 +1,2 @@
+dewplayer.swf usr/share/foo/
+dewplayer-slim.swf usr/share/foo/
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free.install b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free.install
new file mode 100644
index 0000000..f7bf9ba
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/debian/files-flash-non-free.install
@@ -0,0 +1,2 @@
+flvplayer.swf usr/share/foo/
+mp3player.swf usr/share/foo/
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/fill-values b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/fill-values
new file mode 100644
index 0000000..9b49bbd
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-flash-non-free
+Description: non-free flash files
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer-slim.swf b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer-slim.swf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer-slim.swf
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer.swf b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer.swf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/dewplayer.swf
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/flvplayer.swf b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/flvplayer.swf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/flvplayer.swf
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/mp3player.swf b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/mp3player.swf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/build-spec/orig/mp3player.swf
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/eval/desc b/t/recipes/checks/files/non-free/files-flash-non-free/eval/desc
new file mode 100644
index 0000000..e3d3413
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-flash-non-free
+Check: files/non-free
diff --git a/t/recipes/checks/files/non-free/files-flash-non-free/eval/hints b/t/recipes/checks/files/non-free/files-flash-non-free/eval/hints
new file mode 100644
index 0000000..cd9f6ec
--- /dev/null
+++ b/t/recipes/checks/files/non-free/files-flash-non-free/eval/hints
@@ -0,0 +1,2 @@
+files-flash-non-free (binary): non-free-flash [usr/share/foo/mp3player.swf]
+files-flash-non-free (binary): non-free-flash [usr/share/foo/flvplayer.swf]
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/desc b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..9e208b6
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/obsolete-paths
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/hints b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..c495897
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/hints
@@ -0,0 +1,2 @@
+files-foo-in-bar (binary): package-installs-into-obsolete-dir : ^etc/dhcp3/ -> etc/dhcp (see also https://bugs.debian.org/673029) [etc/dhcp3/bar]
+files-foo-in-bar (binary): package-installs-into-obsolete-dir : ^etc/dhcp3/ -> etc/dhcp (see also https://bugs.debian.org/673029) [etc/dhcp3/]
diff --git a/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/obsolete-paths/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/debian/install b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/debian/install
new file mode 100644
index 0000000..f4a8937
--- /dev/null
+++ b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/debian/install
@@ -0,0 +1,2 @@
+pubring.pgp usr/share/keyrings/
+archive-keyring.gpg usr/share/keyrings/
diff --git a/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/fill-values b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/fill-values
new file mode 100644
index 0000000..e6313af
--- /dev/null
+++ b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: file-has-implementation-specific-extension
+Description: OpenPGP file has an implementation specific extension
diff --git a/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/archive-keyring.gpg b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/archive-keyring.gpg
new file mode 100644
index 0000000..9ee5a5c
--- /dev/null
+++ b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/archive-keyring.gpg
Binary files differ
diff --git a/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/pubring.pgp b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/pubring.pgp
new file mode 100644
index 0000000..9ee5a5c
--- /dev/null
+++ b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/build-spec/orig/pubring.pgp
Binary files differ
diff --git a/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/desc b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/desc
new file mode 100644
index 0000000..13f7006
--- /dev/null
+++ b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/desc
@@ -0,0 +1,2 @@
+Testname: file-has-implementation-specific-extension
+Check: files/openpgp
diff --git a/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/hints b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/hints
new file mode 100644
index 0000000..ac237e9
--- /dev/null
+++ b/t/recipes/checks/files/openpgp/file-has-implementation-specific-extension/eval/hints
@@ -0,0 +1 @@
+file-has-implementation-specific-extension (binary): openpgp-file-has-implementation-specific-extension [usr/share/keyrings/archive-keyring.gpg]
diff --git a/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/debian/install b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/debian/install
new file mode 100644
index 0000000..02c3f92
--- /dev/null
+++ b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/debian/install
@@ -0,0 +1,2 @@
+_bad-pkcs11.module usr/share/p11-kit/modules/
+cron-script.hourly etc/cron.hourly/
diff --git a/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/fill-values b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/fill-values
new file mode 100644
index 0000000..abbdaca
--- /dev/null
+++ b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-violates-expected-naming
+Description: Test naming conventions not being followed
diff --git a/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/_bad-pkcs11.module
diff --git a/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly
new file mode 100755
index 0000000..ad6e129
--- /dev/null
+++ b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/build-spec/orig/cron-script.hourly
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Hallo World"
diff --git a/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/desc b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/desc
new file mode 100644
index 0000000..f733154
--- /dev/null
+++ b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-violates-expected-naming
+Check: files/p11-kit
diff --git a/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/hints b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/hints
new file mode 100644
index 0000000..11c2059
--- /dev/null
+++ b/t/recipes/checks/files/p11-kit/files-foo-violates-expected-naming/eval/hints
@@ -0,0 +1 @@
+files-foo-violates-expected-naming (binary): incorrect-naming-of-pkcs11-module [usr/share/p11-kit/modules/_bad-pkcs11.module]
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/clean b/t/recipes/checks/files/pam/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/dirs b/t/recipes/checks/files/pam/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/examples b/t/recipes/checks/files/pam/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/install b/t/recipes/checks/files/pam/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/links b/t/recipes/checks/files/pam/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/manpages b/t/recipes/checks/files/pam/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/debian/rules b/t/recipes/checks/files/pam/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/fill-values b/t/recipes/checks/files/pam/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/pam/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/dir b/t/recipes/checks/files/pam/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/pam/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/pam/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/pam/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/pam/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/pam/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/pam/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/pam/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/pam/files-general/build-spec/orig/types b/t/recipes/checks/files/pam/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/pam/files-general/eval/desc b/t/recipes/checks/files/pam/files-general/eval/desc
new file mode 100644
index 0000000..d9c1316
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/pam
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/pam/files-general/eval/hints b/t/recipes/checks/files/pam/files-general/eval/hints
new file mode 100644
index 0000000..0da39a3
--- /dev/null
+++ b/t/recipes/checks/files/pam/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): config-file-reserved by libpam-runtime [etc/pam.conf]
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.docs b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.docs
new file mode 100644
index 0000000..42f92ea
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.docs
@@ -0,0 +1,3 @@
+read-only
+README
+some-file
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.init b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.init
new file mode 100644
index 0000000..4ebbdf5
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: binary
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Useless
+# Description: Does nothing
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.install b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.install
new file mode 100644
index 0000000..c759290
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.install
@@ -0,0 +1,9 @@
+sample.ali usr/lib/some-where/
+script-uid usr/bin/
+script-ugid usr/bin/
+script-gid usr/bin/
+script-wexec usr/bin/
+script-wuid usr/bin/
+script-ro usr/bin/
+script etc/cron.d/
+script etc/emacs.d/
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.manpages b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.manpages
new file mode 100644
index 0000000..ad3e735
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/binary.manpages
@@ -0,0 +1 @@
+script-*.1
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/clean b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/clean
new file mode 100644
index 0000000..1e7cec6
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/clean
@@ -0,0 +1 @@
+script*.1
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/control.in b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/control.in
new file mode 100644
index 0000000..5c8703f
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: binary-targets
+
+Package: binary
+Architecture: all
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: game
+Architecture: all
+Section: games
+Depends: ${misc:Depends}
+Description: [% $description %] - game
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Game package.
+
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.install b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.install
new file mode 100644
index 0000000..f708f99
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.install
@@ -0,0 +1 @@
+script usr/games/
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.manpages b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.manpages
new file mode 100644
index 0000000..8d16fb4
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/game.manpages
@@ -0,0 +1 @@
+script.1
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/rules b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/rules
new file mode 100644
index 0000000..951f84c
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/debian/rules
@@ -0,0 +1,31 @@
+#!/usr/bin/make -f
+
+GPKG:=game
+PKG:=binary
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ for N in uid gid ugid wexec wuid ro; do \
+ sed s/script/script-$$N/ < script > script-$$N ; \
+ pod2man --section 1 script-$$N > script-$$N.1 ; \
+ done
+ pod2man --section 1 script > script.1
+
+override_dh_fixperms:
+ dh_fixperms
+
+ chmod 0444 debian/$(PKG)/usr/share/doc/$(PKG)/read-only
+ chmod 4755 debian/$(PKG)/usr/bin/script-uid
+ chmod 2755 debian/$(PKG)/usr/bin/script-gid
+ chmod 6755 debian/$(PKG)/usr/bin/script-ugid
+ chmod 0775 debian/$(PKG)/usr/bin/script-wexec
+ chmod 4744 debian/$(PKG)/usr/bin/script-wuid
+ chmod 0751 debian/$(PKG)/usr/bin/script-ro
+ chmod 0644 debian/$(PKG)/usr/lib/some-where/sample.ali
+ chmod 0744 debian/$(PKG)/usr/share/doc/$(PKG)
+ chmod 0755 debian/$(PKG)/usr/share/doc/$(PKG)/some-file
+ chmod 0755 debian/$(PKG)/etc/cron.d/script
+ chmod 0755 debian/$(PKG)/etc/emacs.d/script
+ chmod 0765 debian/$(PKG)/etc/init.d/binary
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/fill-values b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/fill-values
new file mode 100644
index 0000000..c914891
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-bad-perm-owner
+Description: General permissions and owner tests
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/README b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/README
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/README
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/read-only b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/read-only
new file mode 100644
index 0000000..1a3fca1
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/read-only
@@ -0,0 +1 @@
+Fadango on the core
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/sample.ali b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/sample.ali
new file mode 100644
index 0000000..fec3fc8
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/sample.ali
@@ -0,0 +1 @@
+This is not a valid ali file
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/script b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/script
new file mode 100755
index 0000000..8521013
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/script
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+echo "Aloha"
+
+exit 0
+
+=head1 NAME
+
+script -- prints Aloha to stdout
+
+=head1 SYNOPSIS
+
+ script
+
+=head1 DESCRIPTION
+
+Prints Aloha to stdout and that is it.
+
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/some-file b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/some-file
new file mode 100644
index 0000000..0dfa8ff
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This is executable and should not be. :)
+ - Unfortunately it triggers an extra tag... oh well.
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/eval/desc b/t/recipes/checks/files/permissions/files-bad-perm-owner/eval/desc
new file mode 100644
index 0000000..dc8117e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-bad-perm-owner
+Check: files/permissions
diff --git a/t/recipes/checks/files/permissions/files-bad-perm-owner/eval/hints b/t/recipes/checks/files/permissions/files-bad-perm-owner/eval/hints
new file mode 100644
index 0000000..cddfa8d
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-bad-perm-owner/eval/hints
@@ -0,0 +1,12 @@
+binary (binary): non-standard-setuid-executable-perm 4744 [usr/bin/script-wuid]
+binary (binary): non-standard-file-perm 0444 != 0644 [usr/share/doc/binary/read-only]
+binary (binary): non-standard-executable-perm 0775 != 0755 [usr/bin/script-wexec]
+binary (binary): non-standard-executable-perm 0765 != 0755 [etc/init.d/binary]
+binary (binary): non-standard-executable-perm 0751 != 0755 [usr/bin/script-ro]
+binary (binary): non-standard-dir-perm 0744 != 0755 [usr/share/doc/binary/]
+binary (binary): executable-is-not-world-readable 0751 [usr/bin/script-ro]
+binary (binary): elevated-privileges 6755 root/root [usr/bin/script-ugid]
+binary (binary): elevated-privileges 4755 root/root [usr/bin/script-uid]
+binary (binary): elevated-privileges 4744 root/root [usr/bin/script-wuid]
+binary (binary): elevated-privileges 2755 root/root [usr/bin/script-gid]
+binary (binary): bad-permissions-for-ali-file [usr/lib/some-where/sample.ali]
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/clean b/t/recipes/checks/files/permissions/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/dirs b/t/recipes/checks/files/permissions/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/examples b/t/recipes/checks/files/permissions/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/install b/t/recipes/checks/files/permissions/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/links b/t/recipes/checks/files/permissions/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/manpages b/t/recipes/checks/files/permissions/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/debian/rules b/t/recipes/checks/files/permissions/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/fill-values b/t/recipes/checks/files/permissions/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/permissions/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/dir b/t/recipes/checks/files/permissions/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/permissions/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/permissions/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/permissions/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/permissions/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/permissions/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/permissions/files-general/build-spec/orig/types b/t/recipes/checks/files/permissions/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/permissions/files-general/eval/desc b/t/recipes/checks/files/permissions/files-general/eval/desc
new file mode 100644
index 0000000..c8a4aea
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/permissions
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/permissions/files-general/eval/hints b/t/recipes/checks/files/permissions/files-general/eval/hints
new file mode 100644
index 0000000..1ec9a36
--- /dev/null
+++ b/t/recipes/checks/files/permissions/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): bad-perm-for-file-in-etc-sudoers.d 0644 != 0440 [etc/sudoers.d/sudotest]
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/fill-values b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/build-spec/pre-build b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/eval/desc b/t/recipes/checks/files/permissions/legacy-scripts/eval/desc
new file mode 100644
index 0000000..349d5a9
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: files/permissions
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/eval/hints b/t/recipes/checks/files/permissions/legacy-scripts/eval/hints
new file mode 100644
index 0000000..dc90b00
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/eval/hints
@@ -0,0 +1,10 @@
+scripts (binary): non-standard-setuid-executable-perm 4751 [usr/bin/suidperlfoo2]
+scripts (binary): non-standard-setuid-executable-perm 4555 [usr/bin/suidperlfoo]
+scripts (binary): non-standard-executable-perm 0754 != 0755 [usr/bin/perl-bizarre-3]
+scripts (binary): non-standard-executable-perm 0750 != 0755 [usr/bin/perl-bizarre-2]
+scripts (binary): non-standard-executable-perm 0705 != 0755 [usr/bin/guile-bizarre]
+scripts (binary): executable-is-not-world-readable 4751 [usr/bin/suidperlfoo2]
+scripts (binary): executable-is-not-world-readable 0750 [usr/bin/perl-bizarre-2]
+scripts (binary): executable-is-not-world-readable 0705 [usr/bin/guile-bizarre]
+scripts (binary): elevated-privileges 4751 root/root [usr/bin/suidperlfoo2]
+scripts (binary): elevated-privileges 4555 root/root [usr/bin/suidperlfoo]
diff --git a/t/recipes/checks/files/permissions/legacy-scripts/eval/post-test b/t/recipes/checks/files/permissions/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/files/permissions/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/debian/install b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/debian/install
new file mode 100644
index 0000000..1099c53
--- /dev/null
+++ b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/debian/install
@@ -0,0 +1 @@
+some-executable usr/lib
diff --git a/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/fill-values b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/fill-values
new file mode 100644
index 0000000..7ac9aea
--- /dev/null
+++ b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: executable-installed-here
+Skeleton: upload-native
+Description: Executable in /usr/lib
diff --git a/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/orig/some-executable b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/orig/some-executable
new file mode 100755
index 0000000..89865bc
--- /dev/null
+++ b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/build-spec/orig/some-executable
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo 'This would be a useful executable if it did anything, but it does not.'
diff --git a/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/desc b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/desc
new file mode 100644
index 0000000..bfab6bf
--- /dev/null
+++ b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/desc
@@ -0,0 +1,2 @@
+Testname: executable-installed-here
+Check: files/permissions/usr-lib
diff --git a/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/hints b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/hints
new file mode 100644
index 0000000..45f6832
--- /dev/null
+++ b/t/recipes/checks/files/permissions/usr-lib/executable-installed-here/eval/hints
@@ -0,0 +1 @@
+executable-installed-here (binary): executable-in-usr-lib [usr/lib/some-executable]
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/control.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/control.in
new file mode 100644
index 0000000..77950ef
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/control.in
@@ -0,0 +1,29 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: pkgconfig-all
+Architecture: all
+Multi-Arch: foreign
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: Contains test file for pkgconfig arch all
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch all pkgconfig files.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: pkgconfig-any
+Architecture: any
+Multi-Arch: foreign
+Depends: ${misc:Depends}, ${shlib:Depends}
+Description: Contains test file for pkgconfig arch any
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch any pkgconfig files.
+ It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-all.install b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-all.install
new file mode 100644
index 0000000..6127277
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-all.install
@@ -0,0 +1 @@
+usr/lib/pkgconfig/*.pc
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-any.install b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-any.install
new file mode 100644
index 0000000..550fc5b
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/pkgconfig-any.install
@@ -0,0 +1 @@
+usr/lib/*-*-*/pkgconfig/*.pc
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/rules b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/rules
new file mode 100644
index 0000000..81bade2
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/pkgconfig-any/usr/lib
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DESTDIR)
+ touch $(DESTDIR)/libstaticlib.a
+
+override_dh_strip:
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/fill-values b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/fill-values
new file mode 100644
index 0000000..9a97d95
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-pkgconfig
+Description: Check for detection of pkgconfig problem
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/Makefile b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/Makefile
new file mode 100644
index 0000000..796e1bc
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/Makefile
@@ -0,0 +1,21 @@
+ARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+ifeq ($(ARCH), x86_64-linux-gnu)
+ ARCH_CROSS=i386-linux-gnu
+else
+ ARCH_CROSS=x86_64-linux-gnu
+endif
+
+all:
+ find generated -name '*.pc.in' -exec sh -c 'echo "build" {} && cat {} | sed s/\$$\(ARCH\)/$(ARCH)/g | sed s/\$$\(ARCH_CROSS\)/$(ARCH_CROSS)/g > `echo {} | sed s/\.pc\.in$$/\.pc/g`' \;
+
+install:
+ install -d $(DESTDIR)/usr/lib/pkgconfig/
+ install -d $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+ install -m 644 indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/
+ install -m 644 generated/arch-*.pc $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+ install -m 644 generated/indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/
+
+clean distclean:
+ rm -f generated/*.pc
+
+check test:
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in
new file mode 100644
index 0000000..452d3a2
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-cross.pc.in
@@ -0,0 +1,6 @@
+Name: arch-cross
+Description: A library that include cross architecture
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH_CROSS)/someconfig.h
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in
new file mode 100644
index 0000000..7c3bd9e
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-good.pc.in
@@ -0,0 +1,6 @@
+Name: indep-good
+Description: A library good
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/indep-good
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in
new file mode 100644
index 0000000..c847fe3
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/arch-include-arch.pc.in
@@ -0,0 +1,9 @@
+Name: arch-include-arch
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs: -ldoesnotexist -lotherdoesnotexist -Lfalse-positive-linux-gnu -lstaticlib
+Cflags: -I/usr/include/$(ARCH)/arch-include-arch
+libdir=/usr/lib/$(ARCH)
+# no new line
+Libs: -L/usr/lib/$(ARCH)
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in
new file mode 100644
index 0000000..3325139
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-1.pc.in
@@ -0,0 +1,6 @@
+Name: indep-include-arch-1
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH)/indep-include-arch
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in
new file mode 100644
index 0000000..36dd09b
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-2.pc.in
@@ -0,0 +1,7 @@
+Name: indep-include-arch-2
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+# no new line at end
+Cflags: -I/usr/include/$(ARCH) \ No newline at end of file
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in
new file mode 100644
index 0000000..2a73e27
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/generated/indep-include-arch-3.pc.in
@@ -0,0 +1,6 @@
+Name: indep-include-arch-2
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH) -I/usr/include
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-good.pc b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-good.pc
new file mode 100644
index 0000000..7c3bd9e
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-good.pc
@@ -0,0 +1,6 @@
+Name: indep-good
+Description: A library good
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/indep-good
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-really-bad.pc b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-really-bad.pc
new file mode 100644
index 0000000..98b3fa3
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/build-spec/orig/indep-really-bad.pc
@@ -0,0 +1,38 @@
+Name: indep-good
+Description: A library with ugly flags
+Requires:
+Version: 3.1.3
+Libs:
+# a comment removed -L/usr/local/lib/somewhere \
+SOMEFLAGS=-I/var/cache/pbuilder/build/
+Cflags: \
+ -I/usr/local/somewhere \
+ -D__linux__ \
+ -D__x86_64__ \
+ -D__OSVERSION__=2\
+ -g \
+ -D_FORTIFY_SOURCE=2 \
+ -O2 \
+ -Wall \
+ -fvisibility=hidden \
+ -fPIE \
+ -fstack-protector \
+ --param=ssp-buffer-size=2 \
+ -frounding-math \
+ -lmath \
+ -march=core2 \
+ -DNDEBUG \
+ -pedantic \
+ -DNEW_STDCPP \
+ -fno-check-new \
+ -fno-inline \
+ -Wl,z,relro \
+ -pie \
+ -fno-strict-aliasing -fwrapv -fexcess-precision=standard \
+ -ffast-math -funsafe-math-optimizations -fsigned-zeros -fno-trapping-math -fassociative-math -freciprocal-math -fsignaling-math -fno-errno-math -ffp-contract -fassociative-math -ffinite-math-only \
+ @SOME_FLAGS@
+#False positive
+Fflags: \
+ @SOME_FLAGS \
+ @
+
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/desc b/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/desc
new file mode 100644
index 0000000..dfee390
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-pkgconfig
+Check: files/pkgconfig
+Test-Architectures: amd64
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/hints b/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/hints
new file mode 100644
index 0000000..a4e4585
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/hints
@@ -0,0 +1,39 @@
+pkgconfig-any (binary): pkg-config-multi-arch-wrong-dir full text contains architecture specific dir i386-linux-gnu [usr/lib/x86_64-linux-gnu/pkgconfig/arch-cross.pc]
+pkgconfig-all (binary): pkg-config-unavailable-for-cross-compilation [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-unavailable-for-cross-compilation [usr/lib/pkgconfig/indep-include-arch-3.pc]
+pkgconfig-all (binary): pkg-config-unavailable-for-cross-compilation [usr/lib/pkgconfig/indep-include-arch-2.pc]
+pkgconfig-all (binary): pkg-config-unavailable-for-cross-compilation [usr/lib/pkgconfig/indep-include-arch-1.pc]
+pkgconfig-all (binary): pkg-config-unavailable-for-cross-compilation [usr/lib/pkgconfig/indep-good.pc]
+pkgconfig-all (binary): pkg-config-multi-arch-wrong-dir full text contains architecture specific dir x86_64-linux-gnu [usr/lib/pkgconfig/indep-include-arch-3.pc]
+pkgconfig-all (binary): pkg-config-multi-arch-wrong-dir full text contains architecture specific dir x86_64-linux-gnu [usr/lib/pkgconfig/indep-include-arch-2.pc]
+pkgconfig-all (binary): pkg-config-multi-arch-wrong-dir full text contains architecture specific dir x86_64-linux-gnu [usr/lib/pkgconfig/indep-include-arch-1.pc]
+pkgconfig-all (binary): pkg-config-bad-directive Cflags: -I/usr/local/somewhere -D__linux__ -D__x86_64__ -D__OSVERSION__=2 -g -D_FORTIFY_SOURCE=2 -O2 -Wall -fvisibility=hidden -fPIE -fstack-protector --param=ssp-buffer-size=2 -frounding-math -lmath [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive @SOME_FLAGS@ [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -pie [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -pedantic [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -march=core2 [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -g [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fwrapv [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fvisibility=hidden [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -funsafe-math-optimizations [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fstack-protector [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fsigned-zeros [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fno-strict-aliasing [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fno-inline [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fno-check-new [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -ffp-contract [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -ffinite-math-only [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fexcess-precision=standard [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fassociative-math [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -fPIE [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -Wl,z,relro [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -O2 [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -I/var/cache/pbuilder/build/ [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -I/usr/local/somewhere [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -D__x86_64__ [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -D__linux__ [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -D__OSVERSION__=2 [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -D_FORTIFY_SOURCE=2 [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -DNEW_STDCPP [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive -DNDEBUG [usr/lib/pkgconfig/indep-really-bad.pc]
+pkgconfig-all (binary): pkg-config-bad-directive --param=ssp-buffer-size=2 [usr/lib/pkgconfig/indep-really-bad.pc]
diff --git a/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/post-test b/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/post-test
new file mode 100644
index 0000000..a4059d0
--- /dev/null
+++ b/t/recipes/checks/files/pkgconfig/files-pkgconfig/eval/post-test
@@ -0,0 +1,2 @@
+s/full text contains architecture specific dir \S+$/full text contains architecture specific dir ARCH/
+s, usr/lib/[^/]+/pkgconfig/, usr/lib/ARCH/pkgconfig/,
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/debian/install b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/debian/install
new file mode 100644
index 0000000..fb46d4d
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/debian/install
@@ -0,0 +1 @@
+src/* /usr/share/files-privacy-breach/
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/fill-values b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/fill-values
new file mode 100644
index 0000000..8757adb
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-privacybreach
+Description: Check for different html privacy breach
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/bookmark.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/bookmark.xml
new file mode 100644
index 0000000..a5eb548
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/bookmark.xml
@@ -0,0 +1 @@
+<link rel="bookmark" title="bookmark" href="http://purl.org/dc/terms/" /> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/dublin-core.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/dublin-core.xml
new file mode 100644
index 0000000..4c31cf9
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/dublin-core.xml
@@ -0,0 +1 @@
+<link rel="schema.dct" href="http://purl.org/dc/terms/" /> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/legal.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/legal.xml
new file mode 100644
index 0000000..cb5d83f
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/legal.xml
@@ -0,0 +1,5 @@
+<license xmlns="http://projectmallard.org/1.0/"
+ href="http://creativecommons.org/licenses/by-sa/3.0/">
+ <p>This work is licensed under a <link href="http://creativecommons.org/licenses/by-sa/3.0/">Creative
+ Commons Attribution-ShareAlike 3.0 Unported License</link>.</p>
+</license>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/rdf.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/rdf.html
new file mode 100644
index 0000000..0473199
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/old-false-positive/privacy-breach-generic/rdf.html
@@ -0,0 +1,9 @@
+<html>
+<header>
+</header>
+<link rel="alternate" type="application/rdf+xml"
+ href="http://www.gnu.org/licenses/gpl-3.0.rdf" />
+<body>
+Test
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/apache.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/apache.html
new file mode 100644
index 0000000..4dccf51
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/apache.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+Donate to apache <img src="https://www.apache.org/images/supportapache-small.png" />
+</body>
+</hmtl> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattr.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattr.html
new file mode 100644
index 0000000..8943883
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattr.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+<h3>Flattr</h3>
+<p>Flattr is a microdonation system. You donate a small amount every month and
+ click Flattr buttons on worthy sites to share the donation among those sites, similar to a tip jar (for more details see Wikipedia's <a href="http://en.wikipedia.org/wiki/Flattr">Flattr</a> article).</p>
+<p><iframe width="292" height="230" frameborder="0" src="http://tools.flattr.net/widgets/thing.html?thing=947300;noheader=1"></iframe></p>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml4.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml4.xml
new file mode 100644
index 0000000..2dcdddf
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml4.xml
@@ -0,0 +1,9 @@
+<a class="FlattrButton" style="display:none;"
+ title="This is my title"
+ rel="flattr;uid:mario;category:text;tags:tag,tag2,tag3;"
+ href="http://wp.local/?p=444">
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ Maecenas aliquet aliquam leo quis fringilla.
+</a> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml5.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml5.xml
new file mode 100644
index 0000000..7d76db5
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrbuttonhtml5.xml
@@ -0,0 +1,10 @@
+<a class="FlattrButton" style="display:none;"
+ title="This is my title"
+ data-flattr-uid="flattr"
+ data-flattr-tags="text, opensource"
+ data-flattr-category="text"
+ href="http://wp.local/?p=444">
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ Maecenas aliquet aliquam leo quis fringilla.
+</a>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrload.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrload.js
new file mode 100644
index 0000000..52bc06f
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrload.js
@@ -0,0 +1,9 @@
+(function() {
+ var s = document.createElement('script');
+ var t = document.getElementsByTagName('script')[0];
+
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = '//api.flattr.com/js/0.6/load.js?mode=auto';
+ t.parentNode.insertBefore(s, t);
+ })(); \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrloadmanual.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrloadmanual.js
new file mode 100644
index 0000000..7bb6c61
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrloadmanual.js
@@ -0,0 +1,3 @@
+window.onload = function(){
+doSomeCoolStuffBeforeWeLoadTheFlattrButtons();
+FlattrLoader.setup();
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.html
new file mode 100644
index 0000000..a32c5bd
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+<script type="text/javascript">
+/* <![CDATA[ */
+ window.onload = function() {
+ FlattrLoader.render({
+ 'uid': 'flattr',
+ 'url': 'http://wp.local',
+ 'title': 'Title of the thing',
+ 'description': 'Description of the thing'
+ }, 'element_id', 'replace');
+ }
+/* ]]> */
+</script>
+</head>
+<body>
+<div id="element_id"></div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.xml
new file mode 100644
index 0000000..4d659b3
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrender.xml
@@ -0,0 +1,7 @@
+<script type="text/javascript">
+/* <![CDATA[ */
+ window.onload = function() {
+ FlattrLoader.render([button parameters], [target], [insert method]);
+ };
+ /* ]]> */
+</script>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrenderonload.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrenderonload.xml
new file mode 100644
index 0000000..a5c3f68
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-donation/flattrrenderonload.xml
@@ -0,0 +1,7 @@
+<script type="text/javascript">
+/* <![CDATA[ */
+ FlattrLoader.addLoadEvent(function() {
+ alert('Hello world!');
+ });
+/* ]]> */
+</script>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebook.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebook.xml
new file mode 100644
index 0000000..87aef41
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebook.xml
@@ -0,0 +1,2 @@
+<!-- from pstoedit -->
+<iframe src="http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2Fpstoedit%2F260606183958062&amp;width=329&amp;colorscheme=light&amp;show_faces=false&amp;border_color&amp;stream=false&amp;header=false&amp;height=62" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:229px; height:62px;" allowTransparency="true"></iframe>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2008.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2008.html
new file mode 100644
index 0000000..a913f7a
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2008.html
@@ -0,0 +1,5 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
+<body>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2013.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2013.html
new file mode 100644
index 0000000..cc1d3c1
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookfbmlbody2013.html
@@ -0,0 +1,5 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#" xml:lang="en" lang="en">
+<body>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5like20130810.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5like20130810.xml
new file mode 100644
index 0000000..47ae78b
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5like20130810.xml
@@ -0,0 +1 @@
+<div class="fb-like" data-href="http://developers.facebook.com/docs/reference/plugins/like" data-width="450" data-show-faces="true" data-send="true"></div> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5likebody20130810.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5likebody20130810.xml
new file mode 100644
index 0000000..7787375
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookhtml5likebody20130810.xml
@@ -0,0 +1,8 @@
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+ var js, fjs = d.getElementsByTagName(s)[0];
+ if (d.getElementById(id)) return;
+ js = d.createElement(s); js.id = id;
+ js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
+ fjs.parentNode.insertBefore(js, fjs);
+ }(document, 'script', 'facebook-jssdk'));</script> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookxfbmllike20130810.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookxfbmllike20130810.xml
new file mode 100644
index 0000000..3394707
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/facebookxfbmllike20130810.xml
@@ -0,0 +1 @@
+<fb:like href="http://developers.facebook.com/docs/reference/plugins/like" width="450" show_faces="true" send="true"></fb:like> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/false-positives.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/false-positives.html
new file mode 100644
index 0000000..2673507
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-facebook/false-positives.html
@@ -0,0 +1,2 @@
+<pre>FB.login()</pre>
+<pre>FB.event</pre>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/applet.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/applet.html
new file mode 100644
index 0000000..f26b5bf
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/applet.html
@@ -0,0 +1,6 @@
+<html>
+<body>
+<applet width=1 height=1 code="MyClass" type="application/x-java-applet;jpi-version=6" archive="myjar.jar" codebase="http://1984.os/trackme" />
+<applet width=1 height=1 code="MyClass" type="application/x-java-applet;jpi-version=6" archive="myjar.jar" codebase="//1984.os/trackme2" />
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audio.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audio.html
new file mode 100644
index 0000000..7aa0666
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audio.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+<audio src="ftp://1984.os/tuxistrackingme.ogg" />
+<!-- <audio src="ftp://1984.os/inline-comment.ogg" /> -->
+<!--
+<audio src="ftp://1984.os/multi-line-comment.ogg" />
+-->
+</audio>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audiotrack.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audiotrack.html
new file mode 100644
index 0000000..27d2da0
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/audiotrack.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+<audio controls>
+ <source src="tux.mp3" type="audio/mpeg">
+ <source src="tux.ogg" type="audio/ogg">
+ <track src="en.vtt" kind="captions" srclang="en" label="English">
+ <track src="http://1984.os/notracking.vtt" kind="captions" srclang="no" label="Norwegian">
+</audio>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/div.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/div.html
new file mode 100644
index 0000000..8ab3c60
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/div.html
@@ -0,0 +1,13 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+ <script src="DIV_SRC.js" language="JavaScript1.2"></script>
+ <body onLoad='DIV_SRC.resolve({debug : 1, tags : ["div", "span"]})'>
+ <div src="http://trackme.1984/index-2.html">
+ Please enable javascript to track me.
+ </div>
+ <div src="//trackme.1984/index-3.html">
+ Please enable javascript to track me.
+ </div>
+
+ </body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/embed.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/embed.html
new file mode 100644
index 0000000..5415b0a
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/embed.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<embed src="helloworld.swf" />
+<embed src="http://1984.os/givemydata.swf" />
+<embed src="//1984.os/givemydata2.swf" />
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/externalimg.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/externalimg.xml
new file mode 100644
index 0000000..79b7a51
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/externalimg.xml
@@ -0,0 +1 @@
+<img src="http://1984.ow/bigbrotheriswatchingyou.png" alt="Google" width="56" height="20" />
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/frame.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/frame.html
new file mode 100644
index 0000000..b6c7006
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/frame.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+
+<frameset cols="25%,*,25%">
+ <!-- valid -->
+ <frame src="frame_a.htm">
+ <!-- valid -->
+ <frame src="file://frame_b.htm">
+ <frame src="http://1984.os/trackme_frame_c.htm">
+ <frame src="//1984.os/trackme_frame_c.htm">
+</frameset>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/genericwebsite.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/genericwebsite.html
new file mode 100644
index 0000000..445da82
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/genericwebsite.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+
+</head>
+<body>
+<!-- not a problem -->
+<script type="text/javascript" src="http://localhost/test.html"></script>
+<!-- problem here -->
+<script type="text/javascript" src="http://www.example.com/trackme.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/googlefontapi.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/googlefontapi.html
new file mode 100644
index 0000000..bd64037
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/googlefontapi.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<body>
+<style type="text/css">
+ @import url("http://fonts.googleapis.com/css?family=Open+Sans");
+</style>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/ieconditional.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/ieconditional.xml
new file mode 100644
index 0000000..0b8d8fd
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/ieconditional.xml
@@ -0,0 +1,3 @@
+<!--[if IE 8]>
+<link href="http://evil.com/ie8only.css" rel="stylesheet">
+<![endif]-->
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/iframe.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/iframe.html
new file mode 100644
index 0000000..20390b3
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/iframe.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<iframe src="http://1984.ow/bigbrotheriswatchingyou.html">
+ <p>Your browser does not support iframes.</p>
+</iframe>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/import.css b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/import.css
new file mode 100644
index 0000000..9b6f743
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/import.css
@@ -0,0 +1,2 @@
+@import url("http://1984.wo/importtracking.css");
+p { color : #fff; } \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/importcss.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/importcss.html
new file mode 100644
index 0000000..d060248
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/importcss.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+<style type="text/css">
+ @import url("import1.css");
+ @import url("http://trackme.css/track.css");
+</style>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/input.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/input.html
new file mode 100644
index 0000000..1b3d6d6
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/input.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+<form action="trackme.php">
+ Account number: <input type="text" name="fname"><br>
+ <input type="image" src="http://1984.os/hiddentrackme.png" alt="Submit" width="48" height="48">
+</form>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-canonical.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-canonical.xml
new file mode 100644
index 0000000..620ebc3
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-canonical.xml
@@ -0,0 +1,2 @@
+<!-- This is a false-positive -->
+<link rel="canonical" href="http://example.com">
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-generator.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-generator.xml
new file mode 100644
index 0000000..fcefd53
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link-generator.xml
@@ -0,0 +1,2 @@
+<!-- This is a false-positive -->
+<link rel="generator" href="http://example.com">
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link.xml
new file mode 100644
index 0000000..5b7f7b5
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/link.xml
@@ -0,0 +1 @@
+<link href="http://1984.org/style.css" rel="stylesheet" type="text/css" media="all">
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/mallard-falsepositive.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/mallard-falsepositive.xml
new file mode 100644
index 0000000..86ada9b
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/mallard-falsepositive.xml
@@ -0,0 +1,64 @@
+<info xmlns="http://projectmallard.org/1.0/">
+
+<item><p>Sender:</p>
+<p>The sender's email address or the name of the sender.</p></item>
+
+<item><p>Recipients:</p>
+<p>The recipients of the message.</p></item>
+
+<item><p>CC:</p>
+<p>Only the CC recipients of the message.</p></item>
+
+<item><p>BCC:</p>
+<p>Only the BCC recipients of the message. Obviously this can only be applied to outgoing filters.</p></item>
+
+<item><p>Sender or Recipients:</p>
+<p>The sender's email address or the name of the sender or the recipients of the message.</p></item>
+
+<item><p>Subject:</p>
+<p>The subject line of the message.</p></item>
+
+<item><p>Specific Header:</p>
+<p>Any header including <link xref="mail-composer-custom-header-lines">custom ones</link>.</p>
+<p>If a message uses a header more than once, <app>Evolution</app> pays attention only to the first instance, even if the message defines the header differently the second time. For example, if a message declares the Resent-From: header as "engineering@example.com" and then restates it as "marketing@example.com", <app>Evolution</app> filters as though the second declaration did not occur. To filter on messages that use headers multiple times, use a regular expression.</p></item>
+
+<item><p>Message Body:</p>
+<p>Searches in the actual text of the message.</p></item>
+
+<item><p>Expression:</p>
+<p>(For programmers only) Match a message according to an expression you write in the Scheme language used to define <link xref="mail-filters">filters</link> in <app>Evolution</app>.</p></item>
+
+<item><p>Free Form Expression:</p>
+<p>(For advanced users only) Combine numerous conditions by using a <link href="https://bugzilla.gnome.org/show_bug.cgi?id=550796#c10">special syntax</link>.</p></item>
+
+<item><p>Date sent:</p>
+<p>Filters messages according to the date on which they were sent. First, choose the conditions you want a message to meet, such as before a given date or after a given date. Then choose the time. The filter compares the message's time stamp to the system clock when the filter is run, or to a specific time and date you choose from a calendar. You can also have it look for a message within a range of time relative to the filter, such as two to four days ago.</p></item>
+
+<item><p>Date received:</p>
+<p>This works the same way as the Date Sent option, except that it compares the time you received the message with the dates you specify.</p></item>
+
+<item><p>Label:</p>
+<p>Messages can have <link xref="mail-labels">labels</link> of Important, Work, Personal, To Do, or Later. You can set labels with other filters or manually.</p></item>
+
+<item><p>Score:</p>
+<p>Sets the message score to any whole number greater than 0. You can have one filter set or change a message score, and then set up another filter to move the messages you have scored. A message score is not based on anything in particular: it is simply a number you can assign to messages so other filters can process them.</p></item>
+
+<item><p>Size (kB):</p>
+<p>Sorts based on the size of the message in kilobytes.</p></item>
+
+<item><p>Status:</p>
+<p>Filters according to the status of a message. The status can be Replied To, Draft, Important, Read, or Junk.</p></item>
+
+<item><p>Follow Up:</p>
+<p>Checks whether the message is <link xref="mail-follow-up-flag">flagged for follow-up</link> or completed (after a certain date).</p></item>
+
+<item><p>Attachments:</p>
+<p>Checks whether there is an attachment for the email.</p></item>
+
+<item><p>Mailing List:</p>
+<p>Filters based on the mailing list the message came from. This filter might miss messages from some list servers, because it checks for the X-BeenThere header, which is used to identify mailing lists or other redistributors of mail. Mail from list servers that do not set X-BeenThere properly are not be caught by these filters.</p></item>
+
+<item><p>Regex Match:</p>
+<p>(For programmers only) If you know your way around a <link href="https://en.wikipedia.org/wiki/Regular_expression">regex</link>, or regular expression, this option allows you to search for complex patterns of letters, so that you can find, for example, all words that start with "a" and end with "m", and are between six and fifteen letters long, or all messages that declare a particular header twice. For information about how to use regular expressions, check <link href="man:grep">the man page for the <cmd>grep</cmd></link> command.</p></item>
+
+</info>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/object.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/object.html
new file mode 100644
index 0000000..291616a
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/object.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<object width="400" height="400" data="helloworld.swf"></object>
+<object width="400" height="400" data="https://1984.os/hellotrackme.swf" />
+</body>
+</html>
+ \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/old-falsepositive/rel-generator-home.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/old-falsepositive/rel-generator-home.html
new file mode 100644
index 0000000..936bdde
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/old-falsepositive/rel-generator-home.html
@@ -0,0 +1,14 @@
+<html lang="en">
+<head>
+<title>Possible layout-outlines - ECB - the Emacs Code Browser</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="ECB - the Emacs Code Browser">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="ecb.html#Top">
+<link rel="up" href="The-layout_002dengine.html#The-layout_002dengine" title="The layout-engine">
+<link rel="prev" href="Programming-special-windows.html#Programming-special-windows" title="Programming special windows">
+<link rel="next" href="The-layout_002dengine-API.html#The-layout_002dengine-API" title="The layout-engine API">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<meta http-equiv="Content-Style-Type" content="text/css">
+</head>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/source.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/source.html
new file mode 100644
index 0000000..1ebdf23
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/source.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<body>
+<audio controls>
+<source src="tux.ogg" type="audio/ogg">
+<source src="https://1984.os/tracking.mp3" type="audio/mpeg">
+Your browser does not support audio
+</audio>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/track.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/track.html
new file mode 100644
index 0000000..1e060b4
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/track.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<body>
+<video width="320" height="240" controls>
+ <source src="tux.mp4" type="video/mp4">
+ <source src="tux.ogg" type="video/ogg">
+ <track src="en.vtt" kind="subtitles" srclang="en" label="English">
+ <track src="http://1984.os/notracking.vtt" kind="subtitles" srclang="no" label="Norwegian">
+</video>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/typekit.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/typekit.html
new file mode 100644
index 0000000..713cfd5
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/typekit.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script type="text/javascript" src="//use.typekit.net/uniquecodehere.js"></script>
+<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/video.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/video.html
new file mode 100644
index 0000000..3633180
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/video.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body>
+<video width="320" height="240" src="ftp://1984.os/tuxistrackingme.ogg" />
+</video>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/videoposter.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/videoposter.html
new file mode 100644
index 0000000..18df2eb
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-generic/videoposter.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body>
+<video width="320" height="240" src="tux.ogg" poster="ftp://1984.os/tuxistrackingme.ogg" />
+</video>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsense.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsense.html
new file mode 100644
index 0000000..50f327a
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsense.html
@@ -0,0 +1,20 @@
+<html>
+<head>
+
+</head>
+<body>
+<script type="text/javascript">
+google_ad_client = "pub-123456789";
+google_ad_width = 728;
+google_ad_height = 90;
+google_ad_format = "728x90_as";
+google_ad_type = "text_image";
+google_color_border = "FFFFFF";
+google_color_bg = "0000FF";
+google_color_link = "FFFFFF";
+google_color_text = "000000";
+google_color_url = "008000";
+</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
+Test
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseimagemagick.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseimagemagick.xml
new file mode 100644
index 0000000..c2acfc0
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseimagemagick.xml
@@ -0,0 +1,7 @@
+<!-- From imagemagick -->
+<AdSense>
+<Client id="pub-3129977114552745">
+<Channel id="1234567890"></Channel>
+</Client>
+</AdSense>
+ \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyadds.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyadds.html
new file mode 100644
index 0000000..97f7fe2
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyadds.html
@@ -0,0 +1,14 @@
+<html>
+<head>
+
+</head>
+<body>
+<!-- not a problem -->
+<script type="text/javascript" src="http://localhost/test.html"></script>
+<!-- problem here -->
+<script type="text/javascript"
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>
+Test
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyvar.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyvar.js
new file mode 100644
index 0000000..3ca1853
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/adsenseonlyvar.js
@@ -0,0 +1,10 @@
+google_ad_client = "pub-123456789";
+google_ad_width = 728;
+google_ad_height = 90;
+google_ad_format = "728x90_as";
+google_ad_type = "text_image";
+google_color_border = "FFFFFF";
+google_color_bg = "0000FF";
+google_color_link = "FFFFFF";
+google_color_text = "000000";
+google_color_url = "008000";
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2.js
new file mode 100644
index 0000000..457518a
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2.js
@@ -0,0 +1 @@
+(adsbygoogle = window.adsbygoogle || []).push({});
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2ins.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2ins.html
new file mode 100644
index 0000000..0ff7896
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/page2ins.html
@@ -0,0 +1 @@
+<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3129977114552745" data-ad-slot="6345125851" data-ad-format="auto"></ins>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/pagead2.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/pagead2.html
new file mode 100644
index 0000000..1ac7bb6
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/pagead2.html
@@ -0,0 +1 @@
+<script async="async" src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchin.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchin.js
new file mode 100644
index 0000000..089fa0b
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchin.js
@@ -0,0 +1,2 @@
+_uacct = "UA-2917240-2";
+urchinTracker(); \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinconstructor.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinconstructor.js
new file mode 100644
index 0000000..92acb2b
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinconstructor.js
@@ -0,0 +1,7 @@
+var re = /loaded|complete/,
+gaHost = ("https:" == window.doc.location.protocol) ? "https://ssl." : "http://www.",
+h = window.doc.getElementsByTagName("head")[0],
+n = construct.create('script', {
+src: gaHost +
+"google-analytics.com/ga.js"
+}, h); \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinfragment.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinfragment.xml
new file mode 100644
index 0000000..c8cd713
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinfragment.xml
@@ -0,0 +1,2 @@
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinloader.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinloader.js
new file mode 100644
index 0000000..b43b7da
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-adsense/urchinloader.js
@@ -0,0 +1,5 @@
+function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ } \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.css b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.css
new file mode 100644
index 0000000..e51f148
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.css
@@ -0,0 +1 @@
+@import url("http://www.google.com/cse/api/branding.css"); \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.xml
new file mode 100644
index 0000000..bdbd2ed
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecse.xml
@@ -0,0 +1,9 @@
+<div id="cse-search-results"></div>
+<script type="text/javascript">
+var googleSearchIframeName = "cse-search-results";
+var googleSearchFormName = "cse-search-box";
+var googleSearchFrameWidth = 600;
+var googleSearchDomain = "www.google.com";
+var googleSearchPath = "/cse";
+</script>
+<script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseform.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseform.xml
new file mode 100644
index 0000000..c65c529
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseform.xml
@@ -0,0 +1,20 @@
+<!-- example from pstoedit -->
+<div class="cse-branding-bottom" style="background-color:#FFFFFF;color:#000000">
+<div class="cse-branding-form">
+<form action="http://www.helga-glunz.homepage.t-online.de/pstoedit/" id="cse-search-box">
+<div>
+<input type="hidden" name="cx" value="partner-pub-2239328204426644:3mybph-3n0p" />
+<input type="hidden" name="cof" value="FORID:10" />
+<input type="hidden" name="ie" value="ISO-8859-1" />
+<input type="text" name="q" size="31" />
+<input type="submit" name="sa" value="Search" />
+</div>
+</form>
+</div>
+<div class="cse-branding-logo">
+<img src="poweredby_FFFFFF.gif" alt="Google" width="56" height="20" />
+</div>
+<div class="cse-branding-text">
+Custom Search
+</div>
+</div>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseformtracking.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseformtracking.xml
new file mode 100644
index 0000000..ae7abc0
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseformtracking.xml
@@ -0,0 +1,18 @@
+<!-- SiteSearch Google -->
+<form action="http://www.google.fr" id="cse-search-box">
+ <div>
+ <input type="hidden" name="cx" value="partner-pub-1071905880519467:6430131597" /><!-- SiteSearch Google -->
+<form action="http://www.google.fr" id="cse-search-box">
+ <div>
+ <input type="hidden" name="cx" value="partner-pub-1071905880519467:6430131597" />
+ <input type="hidden" name="ie" value="UTF-8" />
+ <input type="text" name="q" size="55" />
+ <input type="submit" name="sa" value="Search" />
+ </div>
+</form>
+
+ <input type="hidden" name="ie" value="UTF-8" />
+ <input type="text" name="q" size="55" />
+ <input type="submit" name="sa" value="Search" />
+ </div>
+</form>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseimagemagick.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseimagemagick.js
new file mode 100644
index 0000000..cd6d908
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecseimagemagick.js
@@ -0,0 +1,9 @@
+// from imagemagick package
+google.load('search', '1', {language : 'en'});
+google.setOnLoadCallback(function() {
+var customSearchControl = new google.search.CustomSearchControl('002546770416725192290:gpkm0aiuqzq');
+customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
+var options = new google.search.DrawOptions();
+options.setAutoComplete(true);
+customSearchControl.draw('cse', options);
+}, true);
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecsejs.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecsejs.xml
new file mode 100644
index 0000000..b0a3b55
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/googlecsejs.xml
@@ -0,0 +1,2 @@
+<script type="text/javascript" src="http://www.google.fr/coop/cse/brand?form=cse-search-box&amp;lang=en"></script>
+<!-- SiteSearch Google --> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/search.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/search.js
new file mode 100644
index 0000000..001a08b
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-cse/search.js
@@ -0,0 +1,14 @@
+<!-- http://www.google.com/cse/manage/all -->
+
+<script type="text/javascript">
+ (function() {
+ var cx = '006134137889097767902:turn9fku95u';
+ var gcse = document.createElement('offline-script');
+ gcse.type = 'text/javascript';
+ gcse.async = true;
+ gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
+ '//www.google.com/cse/cse.js?cx=' + cx;
+ var s = document.getElementsByTagName('offline-script')[0];
+ s.parentNode.insertBefore(gcse, s);
+ })();
+</script>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/asyncload.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/asyncload.html
new file mode 100644
index 0000000..857b548
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/asyncload.html
@@ -0,0 +1,21 @@
+<html>
+ <head>
+ <title>+1 Demo: Async load</title>
+ <link rel="canonical" href="http://www.example.com" />
+ </head>
+ <body>
+ <g:plusone></g:plusone>
+
+ <script type="text/javascript">
+ window.___gcfg = {
+ lang: 'en-US'
+ };
+
+ (function() {
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+ po.src = 'https://apis.google.com/js/plusone.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+ })();
+ </script>
+ </body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/explicitload.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/explicitload.html
new file mode 100644
index 0000000..536fc4e
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/explicitload.html
@@ -0,0 +1,17 @@
+<html>
+ <head>
+ <title>Demo: Explicit load of a +1 button</title>
+ <link rel="canonical" href="http://www.example.com" />
+ <script type="text/javascript" src="https://apis.google.com/js/plusone.js">
+ {"parsetags": "explicit"}
+ </script>
+ </head>
+ <body>
+ <div id="content">
+ <div class="g-plusone"></div>
+ </div>
+ <script type="text/javascript">
+ gapi.plusone.go("content");
+ </script>
+ </body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/simplebutton.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/simplebutton.xml
new file mode 100644
index 0000000..be451f9
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-google-plus/simplebutton.xml
@@ -0,0 +1,2 @@
+<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
+<g:plusone></g:plusone> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/logosourceforge.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/logosourceforge.xml
new file mode 100644
index 0000000..1af1fb8
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/logosourceforge.xml
@@ -0,0 +1 @@
+<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=15" width="150" height="40" alt="[SourceForge.net]" /> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/mascot.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/mascot.xml
new file mode 100644
index 0000000..b562783
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-logo/mascot.xml
@@ -0,0 +1 @@
+<img src="http://travis-ci.com/img/travis-mascot-200px.png" width="150" height="40" alt="[SourceForge.net]" /> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-flot.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-flot.html
new file mode 100644
index 0000000..88da561
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-flot.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="http://yandex.st/jquery/flot/0.7/jquery.flot.min.js"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-mobile.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-mobile.html
new file mode 100644
index 0000000..0e31ddc
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-mobile.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-ui.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-ui.html
new file mode 100644
index 0000000..c61c7b8
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery-ui.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="http://code.jquery.com/ui/1.2.0/jquery.ui-1.2.0.min.js"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery.html
new file mode 100644
index 0000000..64ac79f
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+
+</head>
+<body>
+<!-- not a problem -->
+<script type="text/javascript" src="http://localhost/test.html"></script>
+<!-- problem here -->
+<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery_beta.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery_beta.html
new file mode 100644
index 0000000..d78c35b
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-jquery_beta.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+
+</head>
+<body>
+<!-- not a problem -->
+<script type="text/javascript" src="http://localhost/test.html"></script>
+<!-- problem here -->
+<script type="text/javascript" src="http://code.jquery.com/jquery-1.7b1.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-mathjax.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-mathjax.html
new file mode 100644
index 0000000..8cf65d5
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-mathjax.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-modernizer.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-modernizer.html
new file mode 100644
index 0000000..c8f6d02
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-modernizer.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-openlayers.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-openlayers.html
new file mode 100644
index 0000000..919cade
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-openlayers.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="http://openlayers.org/api/openlayers.js"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-prototype.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-prototype.html
new file mode 100644
index 0000000..4a8020c
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-may-use-debian-package/libjs-prototype.html
@@ -0,0 +1,4 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwik.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwik.html
new file mode 100644
index 0000000..43c6d06
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwik.html
@@ -0,0 +1,20 @@
+<html>
+<head>
+
+</head>
+<body>
+<!-- Piwik -->
+<script type="text/javascript">
+var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/matplotlib/" : "http://apps.sourceforge.net/piwik/matplotlib/");
+document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type="text/javascript">
+piwik_action_name = '';
+piwik_idsite = 1;
+piwik_url = pkBaseURL + "piwik.php";
+piwik_log(piwik_action_name, piwik_idsite, piwik_url);
+</script>
+<object><noscript><p><img src="http://apps.sourceforge.net/piwik/matplotlib/piwik.php?idsite=1" alt="piwik"/></p></noscript></object>
+<!-- End Piwik Tag -->
+Test
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwikvariant.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwikvariant.html
new file mode 100644
index 0000000..3e76de6
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-piwik/piwikvariant.html
@@ -0,0 +1,20 @@
+<html>
+<head>
+
+</head>
+<body>
+
+<!-- Piwik --> <script type="text/javascript">
+var _paq = _paq || [];
+(function(){ var u=(("https:" == document.location.protocol) ? "https://{$PIWIK_URL}/" : "http://{$PIWIK_URL}/");
+_paq.push(['setSiteId', {$IDSITE}]);
+_paq.push(['setTrackerUrl', u+'piwik.php']);
+_paq.push(['trackPageView']);
+_paq.push(['enableLinkTracking']);
+var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js';
+s.parentNode.insertBefore(g,s); })();
+ </script>
+<!-- End Piwik Code -->
+Test
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/img.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/img.html
new file mode 100644
index 0000000..748e2f2
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/img.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+Counter <img src="http://counter.ceres.dti.ne.jp/cgi-bin/count.cgi?df=knak.01.dat|dd=d|ft=0|md=10|comma=y|srgb=00ff00|prgb=ff0000|trgb=black" />
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter.xml
new file mode 100644
index 0000000..49b9736
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter.xml
@@ -0,0 +1,11 @@
+<!-- Start of StatCounter Code -->
+<script type="text/javascript" language="javascript">
+ <!--
+ var sc_project=895001;
+ var sc_invisible=1;
+ var sc_partition=7;
+ var sc_security="5ea85181";
+//-->
+</script>
+<script type="text/javascript" language="javascript" src="http://www.statcounter.com/counter/counter.js"></script><noscript><a href="http://www.statcounter.com/" target="_blank"><img src="http://c8.statcounter.com/counter.php?sc_project=895001&amp;java=0&amp;security=5ea85181&amp;invisible=1" alt="counter stats" border="0"></a> </noscript>
+<!-- End of StatCounter Code --> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter2.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter2.js
new file mode 100644
index 0000000..c0533cb
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-statistics-website/statcounter2.js
@@ -0,0 +1,4 @@
+var sc_project=895001;
+var sc_invisible=1;
+var sc_partition=7;
+var sc_security="5ea85181"; \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/awstat.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/awstat.xml
new file mode 100644
index 0000000..717ab94
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/awstat.xml
@@ -0,0 +1,3 @@
+<!-- twitter -->
+<a href="https://twitter.com/awstats_project" class="twitter-follow-button" data-show-count="false">Follow @awstats_project</a>
+<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/commented.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/commented.js
new file mode 100644
index 0000000..eb09f20
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/commented.js
@@ -0,0 +1,10 @@
+/***
+ * This as a false positive.
+
+ window.twttr = (function (d,s,id) {
+ var t, js, fjs = d.getElementsByTagName(s)[0];
+ if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
+ js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
+ return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
+ }(document, "script", "twitter-wjs"));
+*/
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/logotwitter.xml b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/logotwitter.xml
new file mode 100644
index 0000000..d52665c
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/logotwitter.xml
@@ -0,0 +1 @@
+<img src="https://g.twimg.com/twitter_logo_blue.png" width="150" height="40" alt="[SourceForge.net]" /> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/official.js b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/official.js
new file mode 100644
index 0000000..7d69c37
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-twitter/official.js
@@ -0,0 +1,6 @@
+ window.twttr = (function (d,s,id) {
+ var t, js, fjs = d.getElementsByTagName(s)[0];
+ if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
+ js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
+ return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
+ }(document, "script", "twitter-wjs")); \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/html5shiv.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/html5shiv.html
new file mode 100644
index 0000000..3a3057f
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/html5shiv.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<html>
+<title>this is the title
+</title>
+<head>
+ <!--[if lt IE 9]>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script>
+ <![endif]-->
+ <style>
+ article {
+ font-size: 22px;
+ color: orange;
+ }
+ </style>
+</head>
+<body>
+ <article> Hello </article>
+</body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mocha.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mocha.html
new file mode 100644
index 0000000..8af1b15
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mocha.html
@@ -0,0 +1,23 @@
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Mocha Tests</title>
+ <link href="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css" rel="stylesheet" />
+</head>
+<body>
+ <div id="mocha"></div>
+ <script src="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js"></script>
+ <script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script>
+ <script src="https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js"></script>
+
+ <script>mocha.setup('bdd')</script>
+ <script src="test.array.js"></script>
+ <script src="test.object.js"></script>
+ <script src="test.xhr.js"></script>
+ <script>
+ mocha.checkLeaks();
+ mocha.globals(['jQuery']);
+ mocha.run();
+ </script>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mochachai.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mochachai.html
new file mode 100644
index 0000000..afdf5e3
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-uses-embedded-file/mochachai.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+ <head lang="en">
+ <meta charset="utf-8">
+ <title>Mocha/Chai Basic Tests</title>
+ </head>
+
+ <body>
+ <div id="mocha"></div>
+
+ <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/mocha/2.1.0/mocha.min.css" />
+ <script src="//cdnjs.cloudflare.com/ajax/libs/chai/1.10.0/chai.min.js"></script>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/mocha/2.1.0/mocha.min.js"></script>
+ <script>
+ mocha.setup('bdd');
+ mocha.traceIgnores = ['mocha.min.js', 'chai.min.js'];
+ expect = chai.expect;
+ </script>
+ <script>
+ mocha.run();
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-w3c-valid-html/htmlvalid.html b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-w3c-valid-html/htmlvalid.html
new file mode 100644
index 0000000..0fdaad4
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/build-spec/orig/src/privacy-breach-w3c-valid-html/htmlvalid.html
@@ -0,0 +1,15 @@
+<html>
+<head>
+<meta name="generator" content="HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
+<title></title>
+</head>
+<body>
+test
+
+<p>
+ <a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-xhtml10"
+ alt="Valid XHTML 1.0!" height="31" width="88" /></a>
+</p>
+</body>
+</html>
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/eval/desc b/t/recipes/checks/files/privacy-breach/files-privacybreach/eval/desc
new file mode 100644
index 0000000..0406223
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-privacybreach
+Check: files/privacy-breach
diff --git a/t/recipes/checks/files/privacy-breach/files-privacybreach/eval/hints b/t/recipes/checks/files/privacy-breach/files-privacybreach/eval/hints
new file mode 100644
index 0000000..562a876
--- /dev/null
+++ b/t/recipes/checks/files/privacy-breach/files-privacybreach/eval/hints
@@ -0,0 +1,86 @@
+files-privacybreach (binary): privacy-breach-w3c-valid-html (http://www.w3.org/icons/valid-xhtml10) [usr/share/files-privacy-breach/privacy-breach-w3c-valid-html/htmlvalid.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the node-html5shiv package (virtual package). (https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js) [usr/share/files-privacy-breach/privacy-breach-uses-embedded-file/html5shiv.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-prototype package. (https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-prototype.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-openlayers package. (http://openlayers.org/api/openlayers.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-openlayers.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-modernizr package. (https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-modernizer.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-mocha package. (https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css) [usr/share/files-privacy-breach/privacy-breach-uses-embedded-file/mocha.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-mocha package. (//cdnjs.cloudflare.com/ajax/libs/mocha/2.1.0/mocha.min.css) [usr/share/files-privacy-breach/privacy-breach-uses-embedded-file/mochachai.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-mathjax package. (http://cdn.mathjax.org/mathjax/latest/mathjax.js?config=tex-ams-mml_htmlormml) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-mathjax.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-jquery-ui package. (http://code.jquery.com/ui/1.2.0/jquery.ui-1.2.0.min.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-jquery-ui.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-jquery-mobile package. (http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-jquery-mobile.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-jquery-flot package. (http://yandex.st/jquery/flot/0.7/jquery.flot.min.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-jquery-flot.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-jquery package. (https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js) [usr/share/files-privacy-breach/privacy-breach-uses-embedded-file/mocha.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-jquery package. (https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-jquery.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-jquery package. (http://code.jquery.com/jquery-1.7b1.js) [usr/share/files-privacy-breach/privacy-breach-may-use-debian-package/libjs-jquery_beta.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-expect.js package. (https://cdn.rawgit.com/automattic/expect.js/0.3.1/index.js) [usr/share/files-privacy-breach/privacy-breach-uses-embedded-file/mocha.html]
+files-privacybreach (binary): privacy-breach-uses-embedded-file You may use the libjs-chai package. (//cdnjs.cloudflare.com/ajax/libs/chai/1.10.0/chai.min.js) [usr/share/files-privacy-breach/privacy-breach-uses-embedded-file/mochachai.html]
+files-privacybreach (binary): privacy-breach-twitter (choke on: src="https://platform.twitter.com/widgets.js") [usr/share/files-privacy-breach/privacy-breach-twitter/official.js]
+files-privacybreach (binary): privacy-breach-twitter (choke on: +'://platform.twitter.com/widgets.js') [usr/share/files-privacy-breach/privacy-breach-twitter/awstat.xml]
+files-privacybreach (binary): privacy-breach-statistics-website (http://counter.ceres.dti.ne.jp/cgi-bin/count.cgi?df=knak.01.dat|dd=d|ft=0|md=10|comma=y|srgb=00ff00|prgb=ff0000|trgb=black) [usr/share/files-privacy-breach/privacy-breach-statistics-website/img.html]
+files-privacybreach (binary): privacy-breach-statistics-website (http://c8.statcounter.com/counter.php?sc_project=895001&amp;java=0&amp;security=5ea85181&amp;invisible=1) [usr/share/files-privacy-breach/privacy-breach-statistics-website/statcounter.xml]
+files-privacybreach (binary): privacy-breach-statistics-website (choke on: var sc_project=895001;) [usr/share/files-privacy-breach/privacy-breach-statistics-website/statcounter2.js]
+files-privacybreach (binary): privacy-breach-piwik (choke on: 'settrackerurl') [usr/share/files-privacy-breach/privacy-breach-piwik/piwikvariant.html]
+files-privacybreach (binary): privacy-breach-piwik (choke on: "piwik.js') [usr/share/files-privacy-breach/privacy-breach-piwik/piwik.html]
+files-privacybreach (binary): privacy-breach-logo (https://g.twimg.com/twitter_logo_blue.png) [usr/share/files-privacy-breach/privacy-breach-twitter/logotwitter.xml]
+files-privacybreach (binary): privacy-breach-logo (http://travis-ci.com/img/travis-mascot-200px.png) [usr/share/files-privacy-breach/privacy-breach-logo/mascot.xml]
+files-privacybreach (binary): privacy-breach-logo (http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=15) [usr/share/files-privacy-breach/privacy-breach-logo/logosourceforge.xml]
+files-privacybreach (binary): privacy-breach-google-plus (https://apis.google.com/js/plusone.js) [usr/share/files-privacy-breach/privacy-breach-google-plus/explicitload.html]
+files-privacybreach (binary): privacy-breach-google-plus (choke on: <g:plusone) [usr/share/files-privacy-breach/privacy-breach-google-plus/simplebutton.xml]
+files-privacybreach (binary): privacy-breach-google-plus (choke on: <g:plusone) [usr/share/files-privacy-breach/privacy-breach-google-plus/asyncload.html]
+files-privacybreach (binary): privacy-breach-google-cse (http://www.google.fr/coop/cse/brand?form=cse-search-box&amp;lang=en) [usr/share/files-privacy-breach/privacy-breach-google-cse/googlecsejs.xml]
+files-privacybreach (binary): privacy-breach-google-cse (http://www.google.com/cse/api/branding.css) [usr/share/files-privacy-breach/privacy-breach-google-cse/googlecse.css]
+files-privacybreach (binary): privacy-breach-google-cse (choke on: value="partner-pub-1071905880519467:6430131597") [usr/share/files-privacy-breach/privacy-breach-google-cse/googlecseformtracking.xml]
+files-privacybreach (binary): privacy-breach-google-cse (choke on: googlesearchdomain =) [usr/share/files-privacy-breach/privacy-breach-google-cse/googlecse.xml]
+files-privacybreach (binary): privacy-breach-google-cse (choke on: google.search.customsearchcontrol(') [usr/share/files-privacy-breach/privacy-breach-google-cse/googlecseimagemagick.js]
+files-privacybreach (binary): privacy-breach-google-cse (choke on: <div class="cse-branding-form">) [usr/share/files-privacy-breach/privacy-breach-google-cse/googlecseform.xml]
+files-privacybreach (binary): privacy-breach-google-cse (choke on: //www.google.com/cse/cse.js?cx=) [usr/share/files-privacy-breach/privacy-breach-google-cse/search.js]
+files-privacybreach (binary): privacy-breach-google-adsense (http://www.google-analytics.com/urchin.js) [usr/share/files-privacy-breach/privacy-breach-google-adsense/urchinfragment.xml]
+files-privacybreach (binary): privacy-breach-google-adsense (http://pagead2.googlesyndication.com/pagead/show_ads.js) [usr/share/files-privacy-breach/privacy-breach-google-adsense/adsenseonlyadds.html]
+files-privacybreach (binary): privacy-breach-google-adsense (http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js) [usr/share/files-privacy-breach/privacy-breach-google-adsense/pagead2.html]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: urchintracker();) [usr/share/files-privacy-breach/privacy-breach-google-adsense/urchin.js]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: google_ad_client =) [usr/share/files-privacy-breach/privacy-breach-google-adsense/adsenseonlyvar.js]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: google_ad_client =) [usr/share/files-privacy-breach/privacy-breach-google-adsense/adsense.html]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: = window.adsbygoogle) [usr/share/files-privacy-breach/privacy-breach-google-adsense/page2.js]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: <adsense>) [usr/share/files-privacy-breach/privacy-breach-google-adsense/adsenseimagemagick.xml]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: '.google-analytics.com/ga.js') [usr/share/files-privacy-breach/privacy-breach-google-adsense/urchinloader.js]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: "google-analytics.com/ga.js") [usr/share/files-privacy-breach/privacy-breach-google-adsense/urchinconstructor.js]
+files-privacybreach (binary): privacy-breach-google-adsense (choke on: data-ad-client) [usr/share/files-privacy-breach/privacy-breach-google-adsense/page2ins.html]
+files-privacybreach (binary): privacy-breach-generic [@import url("http://trackme.css/track.css");] (http://trackme.css/track.css) [usr/share/files-privacy-breach/privacy-breach-generic/importcss.html]
+files-privacybreach (binary): privacy-breach-generic [@import url("http://fonts.googleapis.com/css?family=open+sans");] (http://fonts.googleapis.com/css?family=open+sans) [usr/share/files-privacy-breach/privacy-breach-generic/googlefontapi.html]
+files-privacybreach (binary): privacy-breach-generic [@import url("http://1984.wo/importtracking.css");] (http://1984.wo/importtracking.css) [usr/share/files-privacy-breach/privacy-breach-generic/import.css]
+files-privacybreach (binary): privacy-breach-generic [<video width="320" height="240" src="tux.ogg" poster="ftp://1984.os/tuxistrackingme.ogg" />] (ftp://1984.os/tuxistrackingme.ogg) [usr/share/files-privacy-breach/privacy-breach-generic/videoposter.html]
+files-privacybreach (binary): privacy-breach-generic [<video width="320" height="240" src="ftp://1984.os/tuxistrackingme.ogg" />] (ftp://1984.os/tuxistrackingme.ogg) [usr/share/files-privacy-breach/privacy-breach-generic/video.html]
+files-privacybreach (binary): privacy-breach-generic [<track src="http://1984.os/notracking.vtt" kind="subtitles" srclang="no" label="norwegian">] (http://1984.os/notracking.vtt) [usr/share/files-privacy-breach/privacy-breach-generic/track.html]
+files-privacybreach (binary): privacy-breach-generic [<track src="http://1984.os/notracking.vtt" kind="captions" srclang="no" label="norwegian">] (http://1984.os/notracking.vtt) [usr/share/files-privacy-breach/privacy-breach-generic/audiotrack.html]
+files-privacybreach (binary): privacy-breach-generic [<source src="https://1984.os/tracking.mp3" type="audio/mpeg">] (https://1984.os/tracking.mp3) [usr/share/files-privacy-breach/privacy-breach-generic/source.html]
+files-privacybreach (binary): privacy-breach-generic [<script type="text/javascript" src="http://www.example.com/trackme.js">] (http://www.example.com/trackme.js) [usr/share/files-privacy-breach/privacy-breach-generic/genericwebsite.html]
+files-privacybreach (binary): privacy-breach-generic [<script type="text/javascript" src="//use.typekit.net/uniquecodehere.js">] (//use.typekit.net/uniquecodehere.js) [usr/share/files-privacy-breach/privacy-breach-generic/typekit.html]
+files-privacybreach (binary): privacy-breach-generic [<object width="400" height="400" data="https://1984.os/hellotrackme.swf" />] (https://1984.os/hellotrackme.swf) [usr/share/files-privacy-breach/privacy-breach-generic/object.html]
+files-privacybreach (binary): privacy-breach-generic [<link href="http://evil.com/ie8only.css" rel="stylesheet">] (http://evil.com/ie8only.css) [usr/share/files-privacy-breach/privacy-breach-generic/ieconditional.xml]
+files-privacybreach (binary): privacy-breach-generic [<link href="http://1984.org/style.css" rel="stylesheet" type="text/css" media="all">] (http://1984.org/style.css) [usr/share/files-privacy-breach/privacy-breach-generic/link.xml]
+files-privacybreach (binary): privacy-breach-generic [<input type="image" src="http://1984.os/hiddentrackme.png" alt="submit" width="48" height="48">] (http://1984.os/hiddentrackme.png) [usr/share/files-privacy-breach/privacy-breach-generic/input.html]
+files-privacybreach (binary): privacy-breach-generic [<img src="http://1984.ow/bigbrotheriswatchingyou.png" alt="google" width="56" height="20" />] (http://1984.ow/bigbrotheriswatchingyou.png) [usr/share/files-privacy-breach/privacy-breach-generic/externalimg.xml]
+files-privacybreach (binary): privacy-breach-generic [<iframe src="http://1984.ow/bigbrotheriswatchingyou.html">] (http://1984.ow/bigbrotheriswatchingyou.html) [usr/share/files-privacy-breach/privacy-breach-generic/iframe.html]
+files-privacybreach (binary): privacy-breach-generic [<frame src="http://1984.os/trackme_frame_c.htm">] (http://1984.os/trackme_frame_c.htm) [usr/share/files-privacy-breach/privacy-breach-generic/frame.html]
+files-privacybreach (binary): privacy-breach-generic [<embed src="http://1984.os/givemydata.swf" />] (http://1984.os/givemydata.swf) [usr/share/files-privacy-breach/privacy-breach-generic/embed.html]
+files-privacybreach (binary): privacy-breach-generic [<embed src="//1984.os/givemydata2.swf" />] (//1984.os/givemydata2.swf) [usr/share/files-privacy-breach/privacy-breach-generic/embed.html]
+files-privacybreach (binary): privacy-breach-generic [<div src="http://trackme.1984/index-2.html">] (http://trackme.1984/index-2.html) [usr/share/files-privacy-breach/privacy-breach-generic/div.html]
+files-privacybreach (binary): privacy-breach-generic [<div src="//trackme.1984/index-3.html">] (//trackme.1984/index-3.html) [usr/share/files-privacy-breach/privacy-breach-generic/div.html]
+files-privacybreach (binary): privacy-breach-generic [<audio src="ftp://1984.os/tuxistrackingme.ogg" />] (ftp://1984.os/tuxistrackingme.ogg) [usr/share/files-privacy-breach/privacy-breach-generic/audio.html]
+files-privacybreach (binary): privacy-breach-generic [<applet width=1 height=1 code="myclass" type="application/x-java-applet;jpi-version=6" archive="myjar.jar" codebase="http://1984.os/trackme" />] (http://1984.os/trackme) [usr/share/files-privacy-breach/privacy-breach-generic/applet.html]
+files-privacybreach (binary): privacy-breach-generic [<applet width=1 height=1 code="myclass" type="application/x-java-applet;jpi-version=6" archive="myjar.jar" codebase="//1984.os/trackme2" />] (//1984.os/trackme2) [usr/share/files-privacy-breach/privacy-breach-generic/applet.html]
+files-privacybreach (binary): privacy-breach-facebook (http://www.facebook.com/plugins/likebox.php?href=http%3a%2f%2fwww.facebook.com%2fpages%2fpstoedit%2f260606183958062&amp;width=329&amp;colorscheme=light&amp;show_faces=false&amp;border_color&amp;stream=false&amp;header=false&amp;height=62) [usr/share/files-privacy-breach/privacy-breach-facebook/facebook.xml]
+files-privacybreach (binary): privacy-breach-facebook (http://developers.facebook.com/docs/reference/plugins/like) [usr/share/files-privacy-breach/privacy-breach-facebook/facebookhtml5like20130810.xml]
+files-privacybreach (binary): privacy-breach-facebook (choke on: xmlns:fb="http://www.facebook.com/2008/fbml) [usr/share/files-privacy-breach/privacy-breach-facebook/facebookfbmlbody2008.html]
+files-privacybreach (binary): privacy-breach-facebook (choke on: xmlns:fb="http://ogp.me/ns/fb#") [usr/share/files-privacy-breach/privacy-breach-facebook/facebookfbmlbody2013.html]
+files-privacybreach (binary): privacy-breach-facebook (choke on: facebook-jssdk) [usr/share/files-privacy-breach/privacy-breach-facebook/facebookhtml5likebody20130810.xml]
+files-privacybreach (binary): privacy-breach-facebook (choke on: <fb:like href="http://developers.facebook.com/docs/reference/plugins/like" width="450" show_faces="true" send="true">) [usr/share/files-privacy-breach/privacy-breach-facebook/facebookxfbmllike20130810.xml]
+files-privacybreach (binary): privacy-breach-donation (https://www.apache.org/images/supportapache-small.png) [usr/share/files-privacy-breach/privacy-breach-donation/apache.html]
+files-privacybreach (binary): privacy-breach-donation (http://tools.flattr.net/widgets/thing.html?thing=947300;noheader=1) [usr/share/files-privacy-breach/privacy-breach-donation/flattr.html]
+files-privacybreach (binary): privacy-breach-donation (choke on: flattrloader.setup()) [usr/share/files-privacy-breach/privacy-breach-donation/flattrloadmanual.js]
+files-privacybreach (binary): privacy-breach-donation (choke on: flattrloader.render() [usr/share/files-privacy-breach/privacy-breach-donation/flattrrender.xml]
+files-privacybreach (binary): privacy-breach-donation (choke on: flattrloader.render() [usr/share/files-privacy-breach/privacy-breach-donation/flattrrender.html]
+files-privacybreach (binary): privacy-breach-donation (choke on: flattrloader.addloadevent() [usr/share/files-privacy-breach/privacy-breach-donation/flattrrenderonload.xml]
+files-privacybreach (binary): privacy-breach-donation (choke on: api.flattr.com/js/0.6/load.js) [usr/share/files-privacy-breach/privacy-breach-donation/flattrload.js]
+files-privacybreach (binary): privacy-breach-donation (choke on: <a class="flattrbutton") [usr/share/files-privacy-breach/privacy-breach-donation/flattrbuttonhtml5.xml]
+files-privacybreach (binary): privacy-breach-donation (choke on: <a class="flattrbutton") [usr/share/files-privacy-breach/privacy-breach-donation/flattrbuttonhtml4.xml]
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/fill-values b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/build-spec/pre-build b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/eval/desc b/t/recipes/checks/files/scripts/legacy-scripts/eval/desc
new file mode 100644
index 0000000..823814d
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: files/scripts
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/eval/hints b/t/recipes/checks/files/scripts/legacy-scripts/eval/hints
new file mode 100644
index 0000000..80774f9
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): script-with-language-extension [usr/bin/test.sh]
diff --git a/t/recipes/checks/files/scripts/legacy-scripts/eval/post-test b/t/recipes/checks/files/scripts/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/files/scripts/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/eval/desc b/t/recipes/checks/files/sgml/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..f37dbc4
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/sgml
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/eval/hints b/t/recipes/checks/files/sgml/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..864499b
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): file-in-usr-lib-sgml [usr/lib/sgml/bar]
diff --git a/t/recipes/checks/files/sgml/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/sgml/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/sgml/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/eval/desc b/t/recipes/checks/files/sgml/legacy-filenames/eval/desc
new file mode 100644
index 0000000..95b41e2
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/sgml
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/eval/hints b/t/recipes/checks/files/sgml/legacy-filenames/eval/hints
new file mode 100644
index 0000000..b8ab29f
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): file-in-usr-lib-sgml [usr/lib/sgml/package]
diff --git a/t/recipes/checks/files/sgml/legacy-filenames/eval/post-test b/t/recipes/checks/files/sgml/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/sgml/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/fill-values b/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/fill-values
new file mode 100644
index 0000000..b153334
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: cruft-general-test-suite
+Skeleton: upload-non-native
+Description: Check that cruft in test suites is okay
diff --git a/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/orig/hello.c b/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/orig/hello.c
new file mode 100644
index 0000000..1b47b80
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ printf("Hello world!\n");
+ return 0;
+}
diff --git a/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/pre-upstream b/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/pre-upstream
new file mode 100755
index 0000000..8665c92
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-general-test-suite/build-spec/pre-upstream
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist upstream. We do much of it
+# here rather than in the template so that Lintian itself can be imported into
+# revision control systems.
+
+set -e
+dir="$1"
+
+mkdir -p "${dir}/t/CVS"
+echo 'source-contains-cvs-control-dir' > "${dir}/t/CVS/Entries"
+mkdir -p "${dir}/foo/t/.svn"
+echo 'source-contains-svn-control-dir' > "${dir}/foo/t/.svn/format"
+mkdir -p "${dir}/test/.bzr"
+echo 'source-contains-bzr-control-dir' > "${dir}/test/.bzr/foo"
+mkdir -p "${dir}/bar/test/{arch}"
+echo 'source-contains-arch-control-dir' > "${dir}/bar/test/{arch}/foo"
+mkdir -p "${dir}/tests/.git"
+echo 'source-contains-git-control-dir' > "${dir}/tests/.git/foo"
+mkdir -p "${dir}/baz/foo/tests/.hg"
+echo 'source-contains-hg-control-dir' > "${dir}/baz/foo/tests/.hg/foo"
+mkdir -p "${dir}/testset/.be"
+echo 'source-contains-bts-control-dir' > "${dir}/testset/.be/foo"
+
+echo 'source-contains-svn-commit-file' > "${dir}/t/svn-commit.tmp"
+echo 'source-contains-svk-commit-file' > "${dir}/t/svk-commit444.tmp"
+echo 'source-contains-arch-inventory-file' > "${dir}/t/.arch-inventory"
+echo 'source-contains-hg-tags-file' > "${dir}/t/.hgtags"
+echo 'source-contains-cvs-conflict-copy' > "${dir}/t/.#foo.1.1"
+echo 'source-contains-svn-conflict-file' > "${dir}/t/foo.r1352"
+
+echo 'configure-generated-file-in-source' > "${dir}/tests/config.cache"
+
+cd "$1"
+gcc -o t/hello hello.c
diff --git a/t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/desc b/t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/desc
new file mode 100644
index 0000000..17e7848
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-general-test-suite
+Check: files/source-missing
diff --git a/t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/hints b/t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/hints
new file mode 100644
index 0000000..18394f3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-general-test-suite/eval/hints
@@ -0,0 +1 @@
+cruft-general-test-suite (source): source-contains-prebuilt-binary [t/hello]
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/fill-values b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/fill-values
new file mode 100644
index 0000000..2c57a2a
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-gfdl-invariants
+Description: Check for GFDL invariants sections
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
new file mode 100644
index 0000000..ba8175d
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/autoconf.texi
@@ -0,0 +1,12 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with the Front-Cover texts
+being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
+(a) below. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this @acronym{GNU} manual. Buying copies from the @acronym{FSF}
+supports it in developing @acronym{GNU} and promoting software
+freedom.''
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
new file mode 100644
index 0000000..a0a6634
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/dvipdfmx.tex
@@ -0,0 +1,6 @@
+\section*{GNU Free Documentation License}\label{SEC:FDL}
+\subsection*{GNU Free Documentation License}\label{SEC:FDL}
+ \subsubsection{GNU Free Documentation License}\label{SEC:FDL}
+
+This document is distributed under the term of the GNU Free Documentation
+License. See, the attached file for copying conditions.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/empty.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
new file mode 100644
index 0000000..8e87b5f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/empty.texi
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
new file mode 100644
index 0000000..7ad0640
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/emptybis.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation.
+
+A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
new file mode 100644
index 0000000..19560b4
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/false-positive.rtf
@@ -0,0 +1,125 @@
+{\rtf1\ansi\ansicpg1252\cocoartf102{\fonttbl\f2\fnil Bitstream Charter;\f0\fnil Droid Sans Mono;\f1\fnil FreeSans;}
+{\colortbl;\red0\green0\blue200;\red0\green0\blue0;\red255\green0\blue0;}
+{{\NeXTGraphic iconoGimp3.tif \width1816 \height1309}\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\f0\fs24 \'AC}\f1\fs48 \b\cf1 \'A1Welcome to FisicaLab!\cf0\fs24\b0\cf2 \par
+\par
+\fs20\i Copyright (C) 2009, 2010, 2012 German A. Arias.\par
+ Permission is granted to copy, distribute and/or modify this document\par
+ under the terms of the GNU Free Documentation License, Version 1.3\par
+ or any later version published by the Free Software Foundation;\par
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\par
+ A copy of the license is included in the section entitled "GNU\par
+ Free Documentation License".\fs24\i0 \par
+\par
+\par
+FisicaLab is an educational application to solve physics problems. Its main objective is let the user to focus in physics concepts, leaving aside the mathematical details (FisicaLab take care of them). This allows the user to become familiar with the physical concepts without running the risk of getting lost in mathematical details. And so, when the user gain confidence in applying physical concepts, will be better prepared to solve the problems by hand (with pen and paper). FisicaLab is easy to use and very intuitive. However, in order to take advantage of all its features, we recommend you read first these help files.\par
+\par
+FisicaLab display to two windows, one named \b Modules and elements\b0 and other named \b Chalkboard\b0 . The first of these windows, contain all modules that can be used to solve problems. These modules are grouped by: kinematics, static, dynamics, ... (see image below). You can select one of these groups with the buttons at the top of the window, marked with (1) in the image. When you leave the mouse\rquote s cursor above one of these buttons, a label with the group name is displayed. The buttons marked with (2) let you select the system of units, SI or English. You can see the modules of the selected group inside the box marked with (3). The tabs marked with (4) let you select one of the available modules. The elements of the selected module are displayed inside the box marked with (5). This elements let you set the problems. Inside the box marked with (6) you can write the element\rquote s data (if any element is selected, this box will be empty).\f2 \par
+\par
+ \cf0\f0{{\NeXTGraphic FisicaLabPanel.jpg \width7680 \height10760}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\f1 The window named \b Chalkboard\b0 (see image below), have at the top two buttons, marked with (7). The button at the left let you solve the problem, and the other is to clean the chalkboard. The black box marked with (8) is the chalkboard, where you add the elements to set the problems. You need keep in mind, although you can\rquote t see, that the chalkboard is a grid formed with cells of 50x50 pixels. By default the chalkboard size is 26x18 cells. In \b Preferences\b0 panel you can change the size to a maximum of 100x100 cells (A greater size than the default could be useful for trusses problems). The text view marked with (9) is where FisicaLab show the answer and messages. The checkbox marked with (10) erase the content of the text view before show the next answer or message. If you want keep the previous content, unselect this checkbox. In this case you can add notes to identify the results of the different problems.\f2 \par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic FisicaLabPizarra.jpg \width8540 \height6680}\'AC}\f2\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+\par
+\f1\fs28\b Handling the elements\f2\fs24\b0 \par
+ \par
+\f1 To add elements at the chalkboard, do a click above the desired element. The mouse\rquote s cursor will become in an open hand, meaning this that we will add an element. Do a click above the chalkboard in the position where you want the element, the mouse\rquote s cursor will back at its original shape. Each time you add a new element, or select one different, a yellow square will be drawn around the current element. The data of the current element are displayed, for its edition, at panel \b Modules and elements\b0 . When you leave the mouse\rquote s cursor above one element in the chalkboard, a label with the element\rquote s data is displayed. In \b Preferences\b0 panel you can configure the font size of these labels.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic chalkboardProperties.jpg \width9020 \height4600}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+If you want move an element, click above it with the \b Control\b0 key pressed, the mouse\rquote s cursor will become in a close hand, meaning this that we are moving an element. Do click in the new position and the mouse\rquote s cursor will back at its original shape. In other hand, if you want delete an element, do click above it with the \b Shift\b0 key pressed.\par
+\par
+Keep in mind that FisicaLab don\rquote t let you combine elements from different modules. The elements in each module are enough to set a wide variety of problems.\f2 \par
+\par
+\par
+\f1\fs28\b Element data\f2\fs24\b0 \par
+\par
+\f1 When you select an element in the chalkboard, or add a new element, you will see a table at the bottom of the window \b Modules and elements\b0 . With a double click above any field of the second column, you can write the data. FisicaLab supports scientific notation, to use this use the letter E. For example, to write the number 3.45x10-5, write:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 3.45E-5\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All numerical data must be without spaces. For example, the following numbers are wrong:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc - 5.3\par
+7.8E - 8\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, FisicaLab can use many conversion factors. To use these, add the character @ before the conversion. If you have selected the SI system, FisicaLab assumes that all data are in meters, kg, seconds, etc. With the English system, FisicaLab assumes that all data are in feet, pounds, slugs, seconds, etc. (in the English system the mass must be in slugs). For example, if you want write an speed of 75 km/h, use:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 75 @ km/h\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Here, we have one space before and after the character @, but these are for clarity, and are not required. Each module has its how conversion factors, as you can see in the sections that deal about these. \par
+\par
+You can use letters or words to represent the unknown data. If, for example, the final velocity is an unknown data, you can represent this like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc fv\par
+finalv\par
+fvel\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql or any other combination. But, we recommend you use letters or words that are related with the unknown data. Also, the conversion factors can be used with the unknown data. For example, if the time is unknown, and you want this in minutes, write something like:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc t @ min\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql The scientific notation can be used with the unknowns, adding the characters #E at the end of the name. For example, for a coefficient of thermal expansion, that is a small value:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc coefficient#E\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Also, this can be used with a conversion factor. For example, for a very long distance that we want in kilometers:\par
+\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc distance#E @ km\par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+All the conversion factors are available in a contextual menu. After select the row of data where want add the factor, a right mouse click open a context menu with all available factors.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic menuContextual.jpg \width6120 \height5320}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+FisicaLab allows mathematical operations directly on the fields where you enter data. Can be carried out operations of addition (+), subtraction (-), multiplication (*) and division (/). Although not allowed to group operations by parentheses. It also provides some useful functions for certain calculations. These are listed below with its description:\par
+\par
+\b cos(ang)\tab \tab Calculates the cosine of the sexagesimal angle "ang".\par
+sin(ang)\tab \tab Calculates the sine of the sexagesimal angle "ang".\par
+tan(ang)\tab \tab Calculates the tangent of the sexagesimal angle "ang".\par
+sqrt(x)\tab \tab Calculates the square root of the number "x".\par
+hypot(a,b)\tab Calculates the hypotenuse of a right triangle whose legs are "a" and "b".\par
+leg(c,a)\tab \tab Calculates the leg of the right triangle whose hypotenuse is "c" and the\par
+\tab \tab \tab other leg is "a".\par
+rd(m1,m2,d)\tab Calculates the distance of the mass "m1" to the center of mass of the\par
+\tab \tab \tab system consisting of the masses "m1" and "m2", which are spaced a\par
+\tab \tab \tab distance "d".\b0 \par
+\par
+The numbers that are passed as parameters to these functions must have consistent units. For example, in the \b hypot()\b0 function both legs must be in the same units, whether centimeters, meters, inches, etc. These functions can be used in operations of addition, subtraction, multiplication and division. In these operations blank spaces are not allowed. Here are some examples:\par
+\par
+\pard\ql\b\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc 8*cos(34)\par
+hypot(4,3)-2\par
+rd(3,6,40)*sin(30) @ cm\par
+15*8/hypot(13,8)\b0 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+Once entered the operation, FisicaLab will do the calculation and will write the result in the entry. Note that is possible to apply conversion factors. Although these can also be applied after carrying out the calculation.\par
+\par
+The fields where you enter angles do not allow the operations and functions described above. This is because these fields have their own operations and functions. For example, FisicaLab allows write the angles as slopes (a/b), and automatically convert this to sexagesimal angles. What is very useful for problems of trusses.\par
+\par
+\pard\ql\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0\f0{{\NeXTGraphic angulos.jpg \width5080 \height2660}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+For these fields are available two functions that calculates an angle from other relationships. These functions are:\par
+\par
+\b acos(a/c)\tab Calculates the sexagesimal angle whose cosine is the ratio "a/c".\par
+asin(b/c)\tab \tab Calculates the sexagesimal angle whose sine is the ratio "b/c".\b0 \par
+\par
+If an operation is entered incorrectly, for example if it contains spaces or contains a function with an incorrect number of parameters, FisicaLab will do nothing and will take that string as an unknown.\par
+\par
+\par
+\b Caution:\b0 \cf0\cf3 If, for example, you add a mass conversion factor in a time data, this will cause an error in the solution. And you will not get a message about this error.\cf0\f2\cf2 \par
+\par
+\par
+\f1\fs28\b How it works\f2\fs24\b0 \par
+\par
+\f1 FisicaLab work over the base of \i number of equations = number of unknown data\i0 . In general you don\rquote t need worry about this. But in some cases you will see the error \b "The system is undetermined"\b0 . This occurs when you write numeric data in a field that must be an unknown data. The examples show this cases.\f2 \par
+\par
+\par
+\f1\fs28\b Messages\f2\fs24\b0 \par
+\par
+\f1 FisicaLab write a wide variety of messages in the text view when a problem is wrong. However, you always will see a message about the calculation\rquote s status, as you can see in the following image:\par
+\par
+\pard\ql\f0\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql \cf0{{\NeXTGraphic cinema44.tif \width4760 \height800}\'AC}\f1\cf2 \par
+\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \par
+The last line say \b "State = success"\b0 , meaning that the calculation was successful. Any other status different as \i success\i0 , mean that or the set problem don\rquote t have a solution, or an unexpected error occurred.\par
+\par
+} \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
new file mode 100644
index 0000000..b8e14bc
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.html
@@ -0,0 +1,56 @@
+<html lang="en">
+<head>
+<title>Some title</title>
+<!--
+Some verbatim test
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "Funding Free Software", the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+(a) The Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds.-->
+</head>
+<body>
+This is
+ <pre class="sp">
+</pre>
+Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010, 2011, 2012
+
+ <p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being &ldquo;Funding Free Software&rdquo;, the Front-Cover
+Texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+&ldquo;GNU Free Documentation License&rdquo;.
+
+ <p>(a) The Front-Cover Text is:
+
+ <p>A GNU Manual
+
+ <p>(b) The Back-Cover Text is:
+
+ <p>You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published raises funds.
+ <pre class="sp">
+
+</pre>
+</body>
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
new file mode 100644
index 0000000..aa1d8e0
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/frontback.texi
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A Debian Manual'',
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
new file mode 100644
index 0000000..e649d17
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/invariant.txt
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with the Invariant Sections being just "GNU
+Manifesto", with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section
+entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
new file mode 100644
index 0000000..8883cac
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/appendix.txt
@@ -0,0 +1,25 @@
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
new file mode 100644
index 0000000..fd6ed32
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/badpunctuation.txt
@@ -0,0 +1,8 @@
+No ;after version
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts;
+A copy of the license is included in the section entitled
+license GNU Free Documentation License
+
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
new file mode 100644
index 0000000..2be8767
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/cflow.texi
@@ -0,0 +1,12 @@
+Published by the Free Software Foundation,
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301, USA
+
+Copyright @copyright{} 2005, 2010, 2014-2016 Sergey Poznyakoff
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover and Back-Cover texts. A copy of
+the license is included in the section entitled ``GNU Free Documentation
+License''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
new file mode 100644
index 0000000..73f9c3a
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/citetitle.po
@@ -0,0 +1,16 @@
+#: C/index.docbook:65(legalnotice/para)
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the <citetitle>GNU Free Documentation License</citetitle>, "
+"Version 1.1 or any later version published by the Free Software Foundation "
+"with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A "
+"copy of the license is <link linkend=\"fdl\">included</link>."
+msgstr ""
+"Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free "
+"Documentation License (GFDL), Version 1.1 oder jeder späteren, von der Free "
+"Software Foundation veröffentlichten Version ohne unveränderbare Abschnitte "
+"sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt "
+"und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem "
+"<ulink type=\"help\" url=\"ghelp:fdl\">Link</ulink> oder in der mit diesem "
+"Handbuch gelieferten Datei COPYING-DOCS."
+
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
new file mode 100644
index 0000000..d3490c4
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.txt
@@ -0,0 +1,9 @@
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License
+(FDL), either version 1.2 of the license,
+or (at your option) any later version published by the free software
+foundation (FSF); with no invariant sections,
+with no front-cover text, and with no back-cover texts
+A copy of the license is included in the
+section entitled "GNU Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
new file mode 100644
index 0000000..37449fb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/clisp.xml
@@ -0,0 +1,6 @@
+ <para>This document documents free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ (&gpl;), either version 2 of the License, or (at your option) any
+ later version published by the &fsf;.
+ A copy of the license is included in <xref linkend="gpl"/>.
+ </para>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
new file mode 100644
index 0000000..d11e67b
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/comments.po
@@ -0,0 +1,9 @@
+# French translation for SANE backend options
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.1
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, with no Front-Cover Texts, and with
+# no Back-Cover.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
new file mode 100644
index 0000000..6ace5df
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/diveintopythonok.html
@@ -0,0 +1,12 @@
+<html>
+<!--- This is a old false positive -->
+<body>
+ <div class="legalnotice">
+ <p>Permission is granted to copy, distribute, and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in <a href="../appendix/fdl.html" title="Appendix&nbsp;G.&nbsp;GNU Free Documentation License">Appendix&nbsp;G, <i>GNU Free Documentation License</i></a>.
+ </p>
+ <p>The example programs in this book are free software; you can redistribute and/or modify them under the terms of the <span class="application">Python</span> license as published by the <span class="application">Python</span> Software Foundation. A copy of the license is included in <a href="../appendix/license.html" title="Appendix&nbsp;H.&nbsp;Python license">Appendix&nbsp;H, <i>Python license</i></a>.
+ </p>
+ </div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
new file mode 100644
index 0000000..5291fd3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findsutilsokinlinenewline.c
@@ -0,0 +1,15 @@
+/* false positive from some package */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant\nSections, with no\nFront-Cover Texts,\nand with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
new file mode 100644
index 0000000..23aa0af
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/findutilsok.c
@@ -0,0 +1,15 @@
+/* false positive from findutils */
+ static const char *copy_para[]=
+ {
+ "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006,"
+ ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc."
+ ,""
+ ,"Permission is granted to copy, distribute and/or modify this document"
+ ,"under the terms of the GNU Free Documentation License, Version 1.3 or"
+ ,"any later version published by the Free Software Foundation; with no"
+ ,"Invariant Sections, with no Front-Cover Texts, and with no Back-Cover"
+ ,"Texts. A copy of the license is included in the ``GNU Free"
+ ,"Documentation License'' file as part of this distribution."
+ ""
+ ,NULL
+ };
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
new file mode 100644
index 0000000..ee27a4f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fonts.html
@@ -0,0 +1,9 @@
+<P align="JUSTIFY" style="margin-bottom: 0cm"><FONT face="tahoma"><FONT size="2">
+Permission is granted to copy, distribute
+and/or modify this document under the terms
+of the GNU Free Documentation License, Version
+1.1 or any later version published by the
+Free Software Foundation; with the Invariant
+Sections being LIST THEIR TITLES, with the
+Front-Cover Texts being LIST, and with the
+Back-Cover Texts being LIST.</FONT></FONT></P> \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
new file mode 100644
index 0000000..426c273
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/fontsMX.html
@@ -0,0 +1 @@
+<td>Permission is granted to copy, distribute and/or modify this document under the terms of the <b><a href="https://en.wikipedia.org/wiki/en:GNU_Free_Documentation_License" class="extiw" title="w:en:GNU Free Documentation License">GNU Free Documentation License</a></b>, Version 1.2 or any later version published by the <a href="https://en.wikipedia.org/wiki/en:Free_Software_Foundation" class="extiw" title="w:en:Free Software Foundation">Free Software Foundation</a>; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled <i><a href="/wiki/Commons:GNU_Free_Documentation_License,_version_1.2" title="Commons:GNU Free Documentation License, version 1.2">GNU Free Documentation License</a></i>.<span class="licensetpl_link" style="display:none;">http://www.gnu.org/copyleft/fdl.html</span><span class="licensetpl_short" style="display:none;">GFDL</span><span class="licensetpl_long" style="display:none;">GNU Free Documentation License</span><span class="licensetpl_link_req" style="display:none;">true</span><span class="licensetpl_attr_req" style="display:none;">true</span></td> \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
new file mode 100644
index 0000000..fffca61
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
new file mode 100644
index 0000000..fc52ba9
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexample.texi
@@ -0,0 +1,13 @@
+false positive found in license text:
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being @var{list their titles}, with the
+ Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
new file mode 100644
index 0000000..46cbd2f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdllicenseexamplesbr.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+false positive found in license text:
+<pre>
+Copyright (C) year your name.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the<br/> Invariant Sections<br /> being <var>list their titles</var>, with
+the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+being <var>list</var>.
+A copy of the license is included in the section entitled ``GNU Free Documentation License''.
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
new file mode 100644
index 0000000..00e496c
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gfdltexcomments.tex
@@ -0,0 +1,7 @@
+% Permission is granted to copy, distribute and/or modify this document
+% under the terms of the GNU Free Documentation License, Version 1.1 or
+% any later version published by the Free Software Foundation; with no
+% Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+% Texts. A copy of the license is included in the section entitled
+% ``GNU Free Documentation License.''
+%
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
new file mode 100644
index 0000000..f01cd4c
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.html
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<a class="link" href="#fdl-invariant">Invariant Sections</link>, with no <a class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <a class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</a>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
new file mode 100644
index 0000000..cc7a754
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.info
@@ -0,0 +1,14 @@
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+Copyright 2008, Free Software Foundation.
+
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.1 or any later version published by the Free Software
+Foundation; with noInvariant Sections (*note fdl-invariant::),
+with no Front-Cover Texts (*note fdl-cover-texts::), and with no
+Back-Cover Texts (*note fdl-cover-texts::). A copy of the license
+is included in the section entitled "GNU Free Documentation
+License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
new file mode 100644
index 0000000..9e77873
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gnashfalsepositive.xml
@@ -0,0 +1,15 @@
+<html>
+<body>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright 2008, Free Software Foundation.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no<link class="link" href="#fdl-invariant">Invariant Sections</link>, with no <link class="link" href="#fdl-cover-texts">Front-Cover Texts</link>,
+ and with no <link class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</link>. A copy of the license is included in
+ the section entitled "GNU Free Documentation License".
+</p></blockquote></div>
+</body>
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
new file mode 100644
index 0000000..07b3003
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/gtk-doc.po
@@ -0,0 +1,42 @@
+#: C/fdl-appendix.xml:79(sect1/para)
+msgid ""
+"A <_:quote-1/> is a named appendix or a front-matter section of the <_:"
+"link-2/> that deals exclusively with the relationship of the publishers or "
+"authors of the Document to the Document's overall subject (or to related "
+"matters) and contains nothing that could fall directly within that overall "
+"subject. (For example, if the Document is in part a textbook of mathematics, "
+"a Secondary Section may not explain any mathematics.) The relationship could "
+"be a matter of historical connection with the subject or with related "
+"matters, or of legal, commercial, philosophical, ethical or political "
+"position regarding them."
+msgstr ""
+"Une <_:quote-1/> désigne une annexe au <_:link-2/>, ou toute information "
+"indiquant les rapports entre l'auteur ou l'éditeur et le sujet (ou tout "
+"autre sujet connexe) du Document, sans toutefois être en rapport direct avec "
+"le sujet lui-même (par exemple, si le Document est un manuel de "
+"mathématiques, une Section secondaire ne traitera d'aucune notion "
+"mathématique). Cette section peut contenir des informations relatives à "
+"l'historique du Document, des sources documentaires, des dispositions "
+"légales, commerciales, philosophiques, ou des positions éthiques ou "
+"politiques susceptibles de concerner le sujet traité."
+
+
+#: C/fdl-appendix.xml:632(blockquote/para)
+#, fuzzy
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU Free Documentation License, Version 1.1 or any later "
+"version published by the Free Software Foundation; with the <_:link-1/> being "
+"LIST THEIR TITLES, with the <_:link-2/> being LIST, and with the <_:link-3/> "
+"being LIST. A copy of the license is included in the section entitled <_:"
+"quote-4/>."
+msgstr ""
+"Es wird die Erlaubnis gegeben, dieses Dokument zu kopieren, verteilen und/"
+"oder zu verändern unter den Bedingungen der GNU Free Documentation License, "
+"Version 1.1 oder einer späteren, von der Free Software Foundation "
+"veröffentlichten Version; mit den <link linkend=\"fdl-invariant"
+"\">Unveränderlichen Abschnitten</link>. DEREN TITEL AUFGEZÄHLT sind, mit den "
+"<link linkend=\"fdl-cover-texts\">Vorderseitentexten</link>, die AUFGEZÄHLT "
+"sind, und mit den <link linkend=\"fdl-cover-texts\">Rückseitentexten</link>, "
+"die AUFGEZÄHLT sind. Eine Kopie dieser Lizenz ist in dem Abschnitt enthalten, "
+"der mit <quote>GNU Free Documentation License</quote> betitelt ist."
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
new file mode 100644
index 0000000..ae8c973
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/hyphen-used-as-minus-sign.diff
@@ -0,0 +1,102 @@
+Description: hyphen-used-as-minus-sign
+ This manual page seems to contain a hyphen where a minus sign was
+ intended.
+Author: Ruben Molina <rmolina@udea.edu.co>
+Forwarded: no
+Last-Update: 2011-06-25
+
+Index: kst-2.0.3/src/kst/kst.1.txt
+===================================================================
+--- kst-2.0.3.orig/src/kst/kst.1.txt
++++ kst-2.0.3/src/kst/kst.1.txt
+@@ -47,7 +47,7 @@ kst may be run entirely from within its
+ command line arguments are needed. kst has a powerful wizard for
+ easily setting up new plots.
+
+-In the second invocation, kst loads pre-saved plot specifications from the
++In the second invocation, kst loads pre\-saved plot specifications from the
+ file
+ .I kstfile
+ and optionally may override some of the settings in that file.
+@@ -64,7 +64,7 @@ plot all curves in separate plots
+ .TP
+ .B \-a\fR
+ average frames (simple mean) when plotting with
+-.B -s\fR.
++.B \-s\fR.
+ .TP
+ .B \-\-A4\fR
+ use A4 sized paper for printing. Requires
+@@ -90,7 +90,7 @@ and instead use
+ .B \-f\ STARTFRAME\fR
+ begin plotting at
+ .I STARTFRAME
+-frames into the data. Set to -1 to start at
++frames into the data. Set to \-1 to start at
+ .I NUMFRAMES
+ from the end of the data.
+ .TP
+@@ -112,7 +112,7 @@ use US Letter sized paper for printing.
+ .B \-n\ NUMFRAMES\fR
+ plot at most
+ .I NUMFRAMES
+-frames of data. Set to -1 to indicate all of the data.
++frames of data. Set to \-1 to indicate all of the data.
+ .TP
+ .B \-P\ PLOTNAME\fR
+ plot all plots in the plot named
+@@ -145,7 +145,7 @@ frames when plotting.
+ .B \-x\ FIELD\fR
+ use
+ .I FIELD
+-as the X-axis vector.
++as the X\-axis vector.
+ .TP
+ .B \-y\ FIELD\fR
+ plot
+@@ -158,30 +158,30 @@ plot
+ as an image.
+ .SH EXAMPLES
+ Plot all data in column 2 from data.dat.
+- kst data.dat -y 2
++ kst data.dat \-y 2
+
+ Same as above, except only read 20 lines, starting at line 10.
+- kst data.dat -f 10 -n 20 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 2
+
+ also read col 1. One plot per curve.
+- kst data.dat -f 10 -n 20 -y 1 -y 2
++ kst data.dat \-f 10 \-n 20 \-y 1 \-y 2
+
+ Read col 1 from data2.dat and col 1 from data.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-y 1
+
+ Same as above, except read 40 lines starting at 30 in data2.dat
+- kst data.dat -f 10 -n 20 -y 2 data2.dat -f 30 -n 40 -y 1
++ kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-f 30 \-n 40 \-y 1
+
+ Specify the X vector and error bars:
+ Plot x = col 1 and Y = col 2 and error flags = col 3 from data.dat
+- kst data.dat -x 1 -e 3 -y 2
++ kst data.dat \-x 1 \-e 3 \-y 2
+
+ Get the X vector from data1.dat, and the Y vector from data2.dat.
+- kst data1.dat -x 1 data2.dat -y 1
++ kst data1.dat \-x 1 data2.dat \-y 1
+
+ Placement:
+ Plot column 2 and column 3 in plot P1 and column 4 in plot P2
+- kst data.dat -P P1 -y 2 -y 3 -P P2 -y 4
++ kst data.dat \-P P1 \-y 2 \-y 3 \-P P2 \-y 4
+ .SH BUGS
+ Please report bugs to either the kst mailing list at
+ .I kst@kde.org
+@@ -198,6 +198,6 @@ Matthew Truch <matt@truch.net>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2 or
+ any later version published by the Free Software Foundation; with no
++Invariant Sections, with no Front\-Cover Texts, and with no Back\-Cover
+ Texts. A copy of the license is included in the `COPYING.DOC' file
+ as part of the kst distribution.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
new file mode 100644
index 0000000..0168da6
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbook
@@ -0,0 +1,6 @@
+<para>Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+Version 1.2 or any later version published by the Free Software
+Foundation; with &FDLInvariantSections;, with &FDLFrontCoverText;, and
+with &FDLBackCoverText;. A copy of the license is included in <xref linkend="gnu-fdl"/>.</para>
+
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
new file mode 100644
index 0000000..96f3be3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/krusader
@@ -0,0 +1,20 @@
+<!-- **********************************************************************
+ 4 more.docbook
+ 5 +++++++++++++++++++++++++++
+ 6 copyright : (C) 2000 - 2010
+ 7 XXXXXX
+ 8 XXXX
+ 9 e-mail : XXXX@XXXX
+ 10 web site : YYYYYY
+ 11 description : something
+ 12
+ 13 ***************************************************************************
+ 14 * Permission is granted to copy, distribute and/or modify this *
+ 15 * document under the terms of the GNU Free Documentation License, *
+ 16 * Version 1.1 or any later version published by the Free Software *
+ 17 * Foundation; with no Invariant Sections, no Front-Cover Texts and *
+ 18 * no Back-Cover Texts. A copy of the license is available on the *
+ 19 * GNU site http://www.gnu.org/licenses/fdl.html or by writing to: *
+ 20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, *
+ 21 * MA 02111-1307, USA. *
+ 22 *********************************************************************** --> \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
new file mode 100644
index 0000000..d082bfc
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhref.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\href{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
new file mode 100644
index 0000000..e193a16
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyperlink.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the
+\hyperlink{http://www.fsf.org}{Free Software Foundation};
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``\hyperlink{GFDL_GFDL}{GNU Free Documentation License}''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
new file mode 100644
index 0000000..370ea73
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexhyphenslash.tex
@@ -0,0 +1,2 @@
+Copyright @sx(c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-\/Cover Texts, and no Back-\/Cover Texts. A copy of the license is included in the section entitled \char`\"{}GNU
+Free Documentation License\char`\"{}. \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
new file mode 100644
index 0000000..107d9fb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/latexurl.tex
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation
+License\url{http://www.gnu.org/copyleft/fdl.html}, Version 1.1 or any
+later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the chapter entitled "GNU
+Free Documentation License". \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
new file mode 100644
index 0000000..8a5eb6e
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/libnss-pgsql.xml
@@ -0,0 +1,7 @@
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation. There
+ are no invariant sections. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+ </para>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
new file mode 100644
index 0000000..56939ee
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
new file mode 100644
index 0000000..4e66d64
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/lilypond2.txt
@@ -0,0 +1,19 @@
+Permission is granted to copy, distribute and/or modify the
+documentation for GNU LilyPond under the terms of the GNU Free
+Documentation License as published by the Free Software Foundation,
+either version 1.3, or (at your option) any later version; with no
+Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
+
+A copy of the license is contained in the file COPYING.FDL.
+
+The following exceptions apply:
+
+ * It does not apply to input files (contained in the
+ directory tree Documentation/snippets/); these are in
+ the public domain.
+
+ * It does not apply to any manual which explicitly states
+ another license.
+
+ * It does not apply to the MusicXML unit test suite,
+ which is licensed under the MIT license.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
new file mode 100644
index 0000000..dffaccc
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/mailutils.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover, and no Back-Cover texts.
+A copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
new file mode 100644
index 0000000..e1fd5a2
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.html
@@ -0,0 +1,28 @@
+<html>
+<body>
+<p>Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+</p>
+<div class="smallexample">
+<pre class="smallexample">Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to
+copy and modify this GNU manual. Buying copies from the FSF
+supports it in developing GNU and promoting software freedom.''
+</pre></div>
+
+<p>If the FSF does not publish this manual on paper, then omit the last
+sentence in (a) that talks about copies from GNU Press. If the FSF is
+not the copyright holder, then replace &lsquo;<samp>FSF</samp>&rsquo; with the appropriate
+name.
+</p>
+</body>
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
new file mode 100644
index 0000000..633e758
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/maintain.texi
@@ -0,0 +1,13 @@
+Documentation files should have license notices also. Manuals should
+use the GNU Free Documentation License. Following is an example of the
+license notice to use after the copyright line(s) using all the
+features of the GFDL.
+
+@smallexample
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', with the
+Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
+as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
new file mode 100644
index 0000000..b5c2685
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/make-stds.texi
@@ -0,0 +1,7 @@
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.1
+@c or any later version published by the Free Software Foundation;
+@c with no Invariant Sections, with no
+@c Front-Cover Texts, and with no Back-Cover Texts.
+@c A copy of the license is included in the section entitled ``GNU
+@c Free Documentation License''.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
new file mode 100644
index 0000000..a58e927
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.c
@@ -0,0 +1,13 @@
+ /*****************************************************************************/
+/** \mainpage Cal3D API Reference
+ * <center>
+ * <p>
+ * Permission is granted to copy, distribute and/or modify this document
+ * under the terms of the GNU Free Documentation License, Version 1.1 or
+ * any later version published by the Free Software Foundation;
+ * with no Invariant Sections, no Front-Cover Texts and
+ * no Back-Cover Texts;
+ * A copy of the license is included in the section entitled
+ * \link license "GNU Free Documentation License" \endlink .
+ * </center>
+ *****************************************************************************/
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
new file mode 100644
index 0000000..d9c1b54
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normal.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts and
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
new file mode 100644
index 0000000..dd888e2
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalbkchem.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; no Invariant Sections, no Front-Cover Texts,
+no Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
new file mode 100644
index 0000000..747d2e0
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalhtmlcomment.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<!-- Permission is granted to copy, distribute and/or modify this document -->
+<!-- under the terms of the GNU Free Documentation License, Version 1.3 or -->
+<!-- any later version published by the Free Software Foundation; with no -->
+<!-- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -->
+<!-- a copy of the license is included under /home -->
+</body>
+</html>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
new file mode 100644
index 0000000..f33dfcd
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalmancomment.txt
@@ -0,0 +1,7 @@
+.\" manual page for blaze, a command wrapper for BlazeBlogger
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.3 or
+.\" any later version published by the Free Software Foundation; with no
+.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+.\" A copy of the license is included below. \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
new file mode 100644
index 0000000..22ae575
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/normalwithbreakathyphen.texi
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-
+Cover Texts and
+no Back-
+Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8 b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
new file mode 100644
index 0000000..5a4df93
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/oidentd.8
@@ -0,0 +1,9 @@
+.\" Copyright (C) XXX
+.\"
+.\" Permission is granted to copy, distribute and/or modify this document
+.\" under the terms of the GNU Free Documentation License, Version 1.1
+.\" or any later version published by the Free Software Foundation;
+.\" with the Invariant Sections being no invariant sections, with the
+.\" Front-Cover Texts being no front-cover texts, and with the Back-Cover
+.\" Texts being no back-cover texts. A copy of the license is included with
+.\" this package in the file "COPYING.DOC." \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
new file mode 100644
index 0000000..3241276
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/opentoken.txt
@@ -0,0 +1,5 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, Front-Cover or Back-Cover texts. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''. \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
new file mode 100644
index 0000000..950d936
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/parsewiki.txt
@@ -0,0 +1,4 @@
+Permission is granted to copy, distribute and/or modify this document under \
+the terms of the GNU Free Documentation License, Version 1.1 or any later \
+version published by the Free Software Foundation; without any Invariant \
+Sections. A copy of the license is included in the file GFDL.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
new file mode 100644
index 0000000..96037ac
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partedvariant.txt
@@ -0,0 +1,8 @@
+Parted 2.13 version with strange grammar.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with the no Invariant Sections, with the no Front-Cover Texts, and
+with no Back-Cover Texts. A copy of the license is included in the
+file, COPYING.DOC.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
new file mode 100644
index 0000000..f1d17a5
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/partialtranslation.po
@@ -0,0 +1,15 @@
+<para>För att använda GNU Free Documentation License för ett dokument du har skrivit, inkludera en kopia av licensen [det engelska originalet] i dokumentet och placera följande copyrightklausul omedelbart efter titelsidan:</para>
+
+<blockquote>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with the <link linkend="fdl-invariant">Invariant Sections</link> being LIST
+ THEIR TITLES, with the <link linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST,
+ and with the <link linkend="fdl-cover-texts">Back-Cover
+ Texts</link> being LIST. A copy of the license is included in
+ the section entitled <quote>GNU Free Documentation
+ License</quote>.
+ </para>
+</blockquote>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
new file mode 100644
index 0000000..73e379b
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-R.diff
@@ -0,0 +1,7 @@
+1,6d0
+< Permission is granted to copy, distribute and/or modify this
+< document under the terms of the GNU Free Documentation License,
+< version 1.3 or any later version published by the Free Software
+< Foundation; with no Invariant Sections, no Front-Cover Texts and
+< no Back-Cover Texts. A copy of the license is included in the
+< section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
new file mode 100644
index 0000000..600653e
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-c0.diff
@@ -0,0 +1,18 @@
+*** make-stds.texi 2013-02-17 21:44:05.485250349 +0100
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
+***************
+*** 1,7 ****
+! @c Permission is granted to copy, distribute and/or modify this document
+! @c under the terms of the GNU Free Documentation License, Version 1.1
+! @c or any later version published by the Free Software Foundation;
+! @c with no Invariant Sections, with no
+! @c Front-Cover Texts, and with no Back-Cover Texts.
+! @c A copy of the license is included in the section entitled ``GNU
+! @c Free Documentation License''.
+--- 1,6 ----
+! Permission is granted to copy, distribute and/or modify this
+! document under the terms of the GNU Free Documentation License,
+! version 1.3 or any later version published by the Free Software
+! Foundation; with no Invariant Sections, no Front-Cover Texts and
+! no Back-Cover Texts. A copy of the license is included in the
+! section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
new file mode 100644
index 0000000..db6e4f9
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-u.diff
@@ -0,0 +1,9 @@
+--- /dev/null 2013-05-15 23:18:30.206386135 +0200
++++ normal.texi 2012-12-20 21:23:22.829397718 +0100
+@@ -0,0 +1,6 @@
++Permission is granted to copy, distribute and/or modify this
++document under the terms of the GNU Free Documentation License,
++version 1.3 or any later version published by the Free Software
++Foundation; with no Invariant Sections, no Front-Cover Texts and
++no Back-Cover Texts. A copy of the license is included in the
++section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
new file mode 100644
index 0000000..347adff
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch-uR.diff
@@ -0,0 +1,9 @@
+--- normal.texi 2012-12-20 21:23:22.829397718 +0100
++++ /dev/null 2013-05-15 23:18:30.206386135 +0200
+@@ -1,6 +0,0 @@
+-Permission is granted to copy, distribute and/or modify this
+-document under the terms of the GNU Free Documentation License,
+-version 1.3 or any later version published by the Free Software
+-Foundation; with no Invariant Sections, no Front-Cover Texts and
+-no Back-Cover Texts. A copy of the license is included in the
+-section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
new file mode 100644
index 0000000..f64bfaf
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/patch.diff
@@ -0,0 +1,7 @@
+0a1,6
+> Permission is granted to copy, distribute and/or modify this
+> document under the terms of the GNU Free Documentation License,
+> version 1.3 or any later version published by the Free Software
+> Foundation; with no Invariant Sections, no Front-Cover Texts and
+> no Back-Cover Texts. A copy of the license is included in the
+> section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
new file mode 100644
index 0000000..2ab3103
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/php-elisp.texi
@@ -0,0 +1,19 @@
+@copying
+This manual documents PHP mode version @value{version} for
+use with GNU Emacs.
+
+Copyright @copyright{} 2008 Aaron S. Hawley
+
+@quotation
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, and no
+Cover Texts. A copy of the license is included in the
+section entitled ``Copying This Manual.''
+
+A copy of the license is also available from the Free
+Software Foundation Web site at
+@url{http://www.gnu.org/licenses/fdl.html}.
+
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
new file mode 100644
index 0000000..8a0594a
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/pipeindent.txt
@@ -0,0 +1,7 @@
+Some user ident with pipe (|)
+ | Permission is granted to copy, distribute and/or modify this
+ | document under the terms of the GNU Free Documentation License,
+ | version 1.3 or any later version published by the Free Software
+ | Foundation; with no Invariant Sections, no Front-Cover Texts and
+ | no Back-Cover Texts. A copy of the license is included in the
+ | section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
new file mode 100644
index 0000000..58edd5b
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quotes.xml
@@ -0,0 +1,8 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no <quote>Back-Cover Texts</quote>.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
new file mode 100644
index 0000000..112c734
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/quoteswithasdefined.xml
@@ -0,0 +1,9 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation
+License, Version 1.2 or any later version published by the
+Free Software Foundation;
+with no <quote>invariant sections</quote>, <quote>front-cover texts</quote> or <quote>back-cover texts</quote>,
+each as defined in the license.
+A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
new file mode 100644
index 0000000..ff31741
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/sdlbasic.html
@@ -0,0 +1,11 @@
+<div style="text-align: justify;"><span class="text">
+Permission is granted to copy, distribute
+and/or modify this document under the terms of the GNU Free
+Documentation License, Version 1.2 or any later version published by
+the Free Software Foundation; with no Invariant Sections Texts.</span><br>
+
+
+<span class="text">A copy of the license is included here below.</span><br>
+
+
+</div>
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
new file mode 100644
index 0000000..c803dc5
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/smbc.texi
@@ -0,0 +1,9 @@
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'' and ``GNU Free
+Documentation License'', with no Front-Cover Texts, and with no
+Back-Cover Texts. A copy of the license is included in the section
+entitled ``GNU Free Documentation License''.
+@end quotation \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
new file mode 100644
index 0000000..e0a41a6
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/soundjuicer.po
@@ -0,0 +1,8 @@
+#~ "Permission is granted to copy, distribute and/or modify this document "
+#~ "under the terms of the GNU Free Documentation License, Version 1.1 or any "
+#~ "later version published by the Free Software Foundation; with the <link "
+#~ "linkend=\"fdl-invariant\">Invariant Sections</link> being LIST THEIR "
+#~ "TITLES, with the <link linkend=\"fdl-cover-texts\">Front-Cover Texts</"
+#~ "link> being LIST, and with the <link linkend=\"fdl-cover-texts\">Back-"
+#~ "Cover Texts</link> being LIST. A copy of the license is included in the "
+#~ "section entitled <quote>GNU Free Documentation License</quote>." \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
new file mode 100644
index 0000000..9327024
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texignu.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Sections, with no Front-Cover texts
+and with no Back-Cover Texts. A copy of the license is included in the section entitled
+``@acronym{GNU} Free Documentation License.''
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
new file mode 100644
index 0000000..b6e1240
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlive.tex
@@ -0,0 +1,8 @@
+% note the end is not classical...
+% Copyright (c) 2002--2004 Philipp Lehman
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, version 1.2, with no
+% invariant sections, with no front-cover texts, and no back-cover texts. This
+% document is distributed in the hope that it will be useful, but without any
+% warranty; without even the implied warranty of merchantability or fitness for
+% a particular purpose.
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
new file mode 100644
index 0000000..d4b872c
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/texlivefont.tex
@@ -0,0 +1,6 @@
+Copyright © 2002--2004 Philipp Lehman
+
+Permission is granted to copy, distribute and\slash or modify this document under the terms of the GNU Free Documentation License, version 1.2, with no invariant sections, no front-cover texts, and no back-cover texts.
+
+A copy of the license is included in the appendix.
+
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
new file mode 100644
index 0000000..2043b26
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/tla.txt
@@ -0,0 +1,21 @@
+/*
+ * :permissions ("Permission is granted to copy, distribute and/or modify this document"
+ * "under the terms of the GNU Free Documentation License, Version 1.1"
+ * "or any later version published by the Free Software Foundation;"
+ * "with the Invariant Sections being:"
+ * ""
+ * " The GNU General Public License"
+ * " The GNU Free Documentation License"
+ * ""
+ * "with the Front-Cover Texts being"
+ * ""
+ * " (none),"
+ * ""
+ * "and with the Back-Cover Texts being"
+ * ""
+ * " (none)."
+ * ""
+ * "A copy of the license is included in the section entitled \"GNU"
+ * "Free Documentation License\"."))
+ *
+ */ \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
new file mode 100644
index 0000000..6f634a6
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/ulink.xml
@@ -0,0 +1,7 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the <ulink url="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
+License</ulink>, Version 1.2 or any later version published by the
+Free Software Foundation; with no Invariant Sections, no
+Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled "GNU Free Documentation
+License". \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
new file mode 100644
index 0000000..8463a59
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/variantdictfold.txt
@@ -0,0 +1,7 @@
+This is ok
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with no Invariant Sections, Front-
+ or Back-Cover Texts. A copy of the license is included in the
+ section entitled "{GNU Free Documentation License}".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
new file mode 100644
index 0000000..8782eed
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldfalsepositive/zeroisnotplural.texi
@@ -0,0 +1,6 @@
+Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License,
+version 1.3 or any later version published by the Free Software
+Foundation; with no Invariant Section, no Front-Cover Text and
+no Back-Cover Text. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1 b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
new file mode 100644
index 0000000..83a4acf
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/build-spec/orig/src/oldmanpagesgfdlproblem.1
@@ -0,0 +1,12 @@
+.\"
+.\" Manpage example
+.\"
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
+Free Software\*(R", the Front-Cover texts being (a) (see below), and with
+the Back-Cover Texts being (b) (see below). A copy of the license is
+included in the \fIgfdl\fR\|(7) man page.
+.PP
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/desc b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/desc
new file mode 100644
index 0000000..81c81d8
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-gfdl-invariants
+Check: files/source-missing
diff --git a/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/hints b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/hints
new file mode 100644
index 0000000..a7e587c
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-gfdl-invariants/eval/hints
@@ -0,0 +1 @@
+cruft-gfdl-invariants (source): source-is-missing [src/oldfalsepositive/fontsMX.html]
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/install b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/json.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/json.js
new file mode 100644
index 0000000..9a338bf
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/json.js
@@ -0,0 +1,529 @@
+/*
+ json.js
+ 2012-10-08
+
+ Public Domain
+
+ No warranty expressed or implied. Use at your own risk.
+
+ This file has been superceded by http://www.JSON.org/json2.js
+
+ See http://www.JSON.org/js.html
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+ This file adds these methods to JavaScript:
+
+ object.toJSONString(whitelist)
+ This method produce a JSON text from a JavaScript value.
+ It must not contain any cyclical references. Illegal values
+ will be excluded.
+
+ The default conversion for dates is to an ISO string. You can
+ add a toJSONString method to any date object to get a different
+ representation.
+
+ The object and array methods can take an optional whitelist
+ argument. A whitelist is an array of strings. If it is provided,
+ keys in objects not found in the whitelist are excluded.
+
+ string.parseJSON(filter)
+ This method parses a JSON text to produce an object or
+ array. It can throw a SyntaxError exception.
+
+ The optional filter parameter is a function which can filter and
+ transform the results. It receives each of the keys and values, and
+ its return value is used instead of the original value. If it
+ returns what it received, then structure is not modified. If it
+ returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. If a key contains the string 'date' then
+ // convert the value to a date.
+
+ myData = text.parseJSON(function (key, value) {
+ return key.indexOf('date') >= 0 ? new Date(value) : value;
+ });
+
+ This file will break programs with improper for..in loops. See
+ http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true, unparam: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, parseJSON, prototype, push, replace, slice,
+ stringify, test, toJSON, toJSONString, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' : gap ?
+ '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' : gap ?
+ '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+ '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+
+// Augment the basic prototypes if they have not already been augmented.
+// These forms are obsolete. It is recommended that JSON.stringify and
+// JSON.parse be used instead.
+
+ if (!Object.prototype.toJSONString) {
+ Object.prototype.toJSONString = function (filter) {
+ return JSON.stringify(this, filter);
+ };
+ Object.prototype.parseJSON = function (filter) {
+ return JSON.parse(this, filter);
+ };
+ }
+}());
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/debian/missing-sources/subdir.js/source.js
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/fill-values b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/fill-values
new file mode 100644
index 0000000..5dd0aba
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-minified-js
+Description: Misc errors related to minified javascript
+Extra-Build-Depends: uglifyjs
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/README b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/README
new file mode 100644
index 0000000..914d120
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/README
@@ -0,0 +1 @@
+Here we test deploy java \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js
new file mode 100644
index 0000000..aa511b3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.browser.js
@@ -0,0 +1,19 @@
+(function(modules, cache, entry) {
+ req(entry);
+ function req(name) {
+ if (cache[name]) return cache[name].exports;
+ var m = cache[name] = {exports: {}};
+ modules[name][0].call(m.exports, modRequire, m, m.exports, window);
+ return m.exports;
+ function modRequire(alias) {
+ var id = modules[name][1][alias];
+ if (!id) throw new Error("Cannot find module " + alias);
+ return req(id);
+ }
+ }
+})({0: [function(require,module,exports,global){
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
+}, {}],}, {}, 0);
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.js
new file mode 100644
index 0000000..2cb2fb3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/deployJava/deployJava.js
@@ -0,0 +1,3 @@
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js
new file mode 100644
index 0000000..4a35a5a
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-debug.js
@@ -0,0 +1 @@
+//the source
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js
new file mode 100644
index 0000000..e1a0655
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-debug.js/src/test-min.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js
new file mode 100644
index 0000000..620611a
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-nc.js
@@ -0,0 +1 @@
+//the source see zoneminder
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js
new file mode 100644
index 0000000..e1a0655
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/-nc.js/test-yc.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js
new file mode 100644
index 0000000..3fc1fc2
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/admin.js
@@ -0,0 +1 @@
+// this catch missing . in regexp \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js
new file mode 100644
index 0000000..0668aa7
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/css_browser_selector.js
@@ -0,0 +1,8 @@
+/*
+CSS Browser Selector v0.4.0 (Nov 02, 2010)
+Rafael Lima (http://rafael.adm.br)
+http://rafael.adm.br/css_browser_selector
+License: http://creativecommons.org/licenses/by/2.5/
+Contributors: http://rafael.adm.br/css_browser_selector#contributors
+*/
+function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js
new file mode 100644
index 0000000..a1c3620
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.debug.js
@@ -0,0 +1 @@
+//the source found for instance in mono
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js
new file mode 100644
index 0000000..fc9eb65
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/debug.js/testdebug.js
@@ -0,0 +1,4 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; var second='X';
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js
new file mode 100644
index 0000000..a0a67e8
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.js
@@ -0,0 +1,3 @@
+var deployJava=function(){};
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt
new file mode 100644
index 0000000..a701c9f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/deployJava/deployJava.txt
@@ -0,0 +1 @@
+Here we test if source is available \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js
new file mode 100644
index 0000000..7ab1dda
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/endoflinecomments.js
@@ -0,0 +1,104 @@
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
+var longlonglong = 5; // comment
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js
new file mode 100644
index 0000000..d2f68d3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/jslint.js
@@ -0,0 +1,2 @@
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js
new file mode 100644
index 0000000..66222ee
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/longlicensetext.js
@@ -0,0 +1,30 @@
+/* long line in fake license */
+/*
+ * LICENSE
+ *
+ * POCKET MARKS
+ *
+ * Notwithstanding the permitted uses of the Software (as defined below) pursuant to the license set forth below, "Pocket," "Read It Later" and the Pocket icon and logos (collectively, the “Pocket Marksâ€) are registered and common law trademarks of Read It Later, Inc. This means that, while you have considerable freedom to redistribute and modify the Software, there are tight restrictions on your ability to use the Pocket Marks. This license does not grant you any rights to use the Pocket Marks except as they are embodied in the Software.
+ *
+ * ---
+ *
+ * SOFTWARE
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README
new file mode 100644
index 0000000..2db2f0f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/README
@@ -0,0 +1 @@
+exercice missing dir in relative dir \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js
new file mode 100644
index 0000000..3e0e3c2
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/dist/fake.min.js
@@ -0,0 +1,2 @@
+// fake min.js
+toto='1'; \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js
new file mode 100644
index 0000000..772fe5c
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/nested-dir/src/fake.js
@@ -0,0 +1,2 @@
+// fake source
+toto='1'; \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js
new file mode 100644
index 0000000..077c6f7
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/pandoc/search_index.js
@@ -0,0 +1,4 @@
+var search_index = [
+'ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION''ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION','ALLEGRO_CONFIG','ALLEGRO_CONFIG_SECTION',];
+var search_urls = [
+'config.html#allegro_config','config.html#allegro_config_section'];
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html
new file mode 100644
index 0000000..7267c7f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/scriptinhtml/falsecopyright.html
@@ -0,0 +1,7 @@
+<html>
+<header>
+<script>
+(c)?b<=c:true)}function d(c,b)
+</script>
+</header>
+</html> \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js
new file mode 100644
index 0000000..80e795f
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/singlecolon.js
@@ -0,0 +1,3 @@
+/* simulate a long line by with only one ;*/
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js
new file mode 100644
index 0000000..8e17061
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/sqlite.js
@@ -0,0 +1 @@
+// this one catch lite suffix \ No newline at end of file
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js
new file mode 100644
index 0000000..d47653c
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.min.js
@@ -0,0 +1,3 @@
+// a very long javascript yuic compressed
+/* simulate a long line */
+var longline = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js
new file mode 100644
index 0000000..4a35a5a
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/src.js/test.src.js
@@ -0,0 +1 @@
+//the source
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compiled.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-compressed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-lite.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-pack.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-packed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test-yc.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.compressed.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js
new file mode 100644
index 0000000..cb851fb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.js
@@ -0,0 +1 @@
+# the source
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test.min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js
new file mode 100644
index 0000000..d9fd3cb
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/orig/oldfalsepositives/suffix/test_min.js
@@ -0,0 +1,2 @@
+// a very long javascript yuic compressed
+
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/pre-build b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/pre-build
new file mode 100755
index 0000000..13f30ca
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/build-spec/pre-build
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+jsdir="$1/usr/share/javascript/"
+srcdir="$1"
+json="$srcdir/debian/missing-sources/json.js"
+uglyjson="$jsdir/json/json.min.js"
+
+mkdir -p "$jsdir"
+mkdir -p "$jsdir/minwithoutsource"
+mkdir -p "$jsdir/jswithoutminext"
+mkdir -p "$jsdir/json"
+mkdir -p "$jsdir/sourced"
+mkdir -p "$jsdir/sourced_variant"
+mkdir -p "$jsdir/jswithoutminextwithoutsource/"
+mkdir -p "$srcdir/src/js"
+mkdir -p "$srcdir/build/js"
+
+# create a js file
+uglifyjs -o "$uglyjson" "$json"
+# fake install of minified js without min.js
+cp "$uglyjson" "$jsdir/jswithoutminext/json.js"
+# fake not sourced
+cp "$uglyjson" "$jsdir/minwithoutsource/notsourced.min.js"
+cp "$uglyjson" "$jsdir/minwithoutsource/subdir.min.js"
+# fake install but not sourced
+cp "$uglyjson" "$jsdir/jswithoutminextwithoutsource/jsonnotsourced.js"
+# fake source and min alone
+cp "$uglyjson" "$jsdir/sourced/sourced.min.js"
+cp "$json" "$jsdir/sourced/sourced.js"
+cp "$uglyjson" "$jsdir/sourced_variant/sourced.min.js"
+cp "$json" "$jsdir/sourced_variant/sourced_orig.js"
+# sourced in parent's parent
+cp "$uglyjson" "$srcdir/build/js/foo.min.js"
+cp "$json" "$srcdir/src/js/foo.js"
+
+cat > $srcdir/src/js/foo.html <<EOF
+<html>
+<head>
+<script>
+// Copyright someone
+EOF
+cat "$uglyjson" >> $srcdir/src/js/foo.html
+cat >> $srcdir/src/js/foo.html <<EOF
+</script>
+</head>
+</html>
+EOF
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/eval/desc b/t/recipes/checks/files/source-missing/cruft-minified-js/eval/desc
new file mode 100644
index 0000000..cb20281
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-minified-js
+Check: files/source-missing
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/eval/hints b/t/recipes/checks/files/source-missing/cruft-minified-js/eval/hints
new file mode 100644
index 0000000..9bdf288
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/eval/hints
@@ -0,0 +1,34 @@
+cruft-minified-js (source): source-is-missing [usr/share/javascript/minwithoutsource/notsourced.min.js]
+cruft-minified-js (source): source-is-missing [usr/share/javascript/jswithoutminextwithoutsource/jsonnotsourced.js]
+cruft-minified-js (source): source-is-missing [src/js/foo.html]
+cruft-minified-js (source): source-is-missing [oldfalsepositives/pandoc/search_index.js]
+cruft-minified-js (source): source-is-missing [oldfalsepositives/longlicensetext.js]
+cruft-minified-js (source): source-is-missing [oldfalsepositives/jslint.js]
+cruft-minified-js (source): source-is-missing [oldfalsepositives/css_browser_selector.js]
+cruft-minified-js (source): source-is-missing [deployJava/deployJava.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/sourced_variant/sourced.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/sourced/sourced.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/minwithoutsource/subdir.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/minwithoutsource/notsourced.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/jswithoutminextwithoutsource/jsonnotsourced.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/jswithoutminext/json.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [usr/share/javascript/json/json.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test_min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test.compressed.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-yc.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-packed.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-pack.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-lite.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-compressed.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/suffix/test-compiled.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/src.js/test.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/pandoc/search_index.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/nested-dir/dist/fake.min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/longlicensetext.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/jslint.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/css_browser_selector.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/-nc.js/test-yc.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [oldfalsepositives/-debug.js/src/test-min.js]
+cruft-minified-js (source): source-contains-prebuilt-javascript-object [build/js/foo.min.js]
diff --git a/t/recipes/checks/files/source-missing/cruft-minified-js/eval/post-test b/t/recipes/checks/files/source-missing/cruft-minified-js/eval/post-test
new file mode 100644
index 0000000..f1d2602
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-minified-js/eval/post-test
@@ -0,0 +1,4 @@
+s/mean line length is about [0-9]+ characters$/mean line is about NUMBER characters/
+s/line [0-9]+ is [0-9]+ characters long \(>[0-9]+\)$/line POSITION is LENGTH characters long (>CUTOFF)/
+s/code fragment:.*$/code fragment:CODE/
+s/extract of copyright statement:.*/extract of copyright statement: COPYRIGHT/
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/debian/control.in b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..f46d6ef
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: utils
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/fill-values b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/fill-values
new file mode 100644
index 0000000..1ce50ee
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: cruft-source-is-missing-unrel
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Package-Architecture: any
+Description: Check for source-is-missing false positives
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/orig/main.c b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/orig/main.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/orig/main.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-build b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-build
new file mode 100755
index 0000000..db309af
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-build
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd "$1"
+
+mkdir -p debian/missing-sources/bar
+cp main.c debian/missing-sources/bar/main.c
+
+ln -s bar debian/missing-sources/foo
+ln -s bar debian/missing-sources/quux
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-upstream b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-upstream
new file mode 100755
index 0000000..fb28255
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/build-spec/pre-upstream
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd "$1"
+
+
+gcc -o foo main.c
+gcc -o bar main.c
+mkdir -p baz/
+gcc -o baz/quux main.c
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/desc b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/desc
new file mode 100644
index 0000000..cffe431
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: cruft-source-is-missing-unrel
+Check: files/source-missing
+Test-Against:
+ source-is-missing
diff --git a/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/hints b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/hints
new file mode 100644
index 0000000..6fc2d40
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-source-is-missing-unrel/eval/hints
@@ -0,0 +1,3 @@
+cruft-source-is-missing-unrel (source): source-contains-prebuilt-binary [foo]
+cruft-source-is-missing-unrel (source): source-contains-prebuilt-binary [baz/quux]
+cruft-source-is-missing-unrel (source): source-contains-prebuilt-binary [bar]
diff --git a/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/fill-values b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/fill-values
new file mode 100644
index 0000000..b58a4b1
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-upstream-binaries
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Check for binaries in the upstream tarball
diff --git a/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/orig/hello.c b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/orig/hello.c
new file mode 100644
index 0000000..1b47b80
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ printf("Hello world!\n");
+ return 0;
+}
diff --git a/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-build b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-build
new file mode 100755
index 0000000..b35385b
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+mkdir -p $1/debian/missing-sources
+cp $1/hello.c $1/debian/missing-sources/sourced.c
+ln -s sourced.c $1/debian/missing-sources/symlink-to-sourced.c
diff --git a/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-upstream b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-upstream
new file mode 100755
index 0000000..c94b2d3
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/build-spec/pre-upstream
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+cd "$1"
+gcc -o hello hello.c
+# create non source binary
+cp hello notsourced
+# create two sourced binaries
+cp hello sourced
+cp hello symlink-to-sourced
diff --git a/t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/desc b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/desc
new file mode 100644
index 0000000..3829781
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-upstream-binaries
+Check: files/source-missing
diff --git a/t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/hints b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/hints
new file mode 100644
index 0000000..3c79aaa
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-upstream-binaries/eval/hints
@@ -0,0 +1,5 @@
+cruft-upstream-binaries (source): source-is-missing [notsourced]
+cruft-upstream-binaries (source): source-contains-prebuilt-binary [symlink-to-sourced]
+cruft-upstream-binaries (source): source-contains-prebuilt-binary [sourced]
+cruft-upstream-binaries (source): source-contains-prebuilt-binary [notsourced]
+cruft-upstream-binaries (source): source-contains-prebuilt-binary [hello]
diff --git a/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/fill-values b/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/fill-values
new file mode 100644
index 0000000..b5cd494
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: cruft-wasm
+Description: Misc errors related to wasm
+Skeleton: upload-non-native
+Extra-Build-Depends: file (>= 1:5.32)
diff --git a/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/orig/README b/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/orig/README
new file mode 100644
index 0000000..a6a4fce
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/orig/README
@@ -0,0 +1 @@
+This include fake wasm file
diff --git a/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/pre-upstream b/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/pre-upstream
new file mode 100755
index 0000000..12344f9
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-wasm/build-spec/pre-upstream
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+srcdir="$1"
+
+printf "\0asm\001\0\0\0" > "$srcdir/fake.wasm"
+
diff --git a/t/recipes/checks/files/source-missing/cruft-wasm/eval/desc b/t/recipes/checks/files/source-missing/cruft-wasm/eval/desc
new file mode 100644
index 0000000..1168e50
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-wasm/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-wasm
+Check: files/source-missing
diff --git a/t/recipes/checks/files/source-missing/cruft-wasm/eval/hints b/t/recipes/checks/files/source-missing/cruft-wasm/eval/hints
new file mode 100644
index 0000000..43ec573
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/cruft-wasm/eval/hints
@@ -0,0 +1 @@
+cruft-wasm (source): source-contains-prebuilt-wasm-binary [fake.wasm]
diff --git a/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js b/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js
new file mode 100644
index 0000000..9a338bf
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/debian/missing-sources/ugly/fullpath.js
@@ -0,0 +1,529 @@
+/*
+ json.js
+ 2012-10-08
+
+ Public Domain
+
+ No warranty expressed or implied. Use at your own risk.
+
+ This file has been superceded by http://www.JSON.org/json2.js
+
+ See http://www.JSON.org/js.html
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+
+ This file adds these methods to JavaScript:
+
+ object.toJSONString(whitelist)
+ This method produce a JSON text from a JavaScript value.
+ It must not contain any cyclical references. Illegal values
+ will be excluded.
+
+ The default conversion for dates is to an ISO string. You can
+ add a toJSONString method to any date object to get a different
+ representation.
+
+ The object and array methods can take an optional whitelist
+ argument. A whitelist is an array of strings. If it is provided,
+ keys in objects not found in the whitelist are excluded.
+
+ string.parseJSON(filter)
+ This method parses a JSON text to produce an object or
+ array. It can throw a SyntaxError exception.
+
+ The optional filter parameter is a function which can filter and
+ transform the results. It receives each of the keys and values, and
+ its return value is used instead of the original value. If it
+ returns what it received, then structure is not modified. If it
+ returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. If a key contains the string 'date' then
+ // convert the value to a date.
+
+ myData = text.parseJSON(function (key, value) {
+ return key.indexOf('date') >= 0 ? new Date(value) : value;
+ });
+
+ This file will break programs with improper for..in loops. See
+ http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects. It can be a
+ function or an array of strings.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or '&nbsp;'),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array of strings, then it will be
+ used to select the members to be serialized. It filters the results
+ such that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+*/
+
+/*jslint evil: true, regexp: true, unparam: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+ call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+ getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+ lastIndex, length, parse, parseJSON, prototype, push, replace, slice,
+ stringify, test, toJSON, toJSONString, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+ JSON = {};
+}
+
+(function () {
+ 'use strict';
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ if (typeof Date.prototype.toJSON !== 'function') {
+
+ Date.prototype.toJSON = function (key) {
+
+ return isFinite(this.valueOf()) ?
+ this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z' : null;
+ };
+
+ String.prototype.toJSON =
+ Number.prototype.toJSON =
+ Boolean.prototype.toJSON = function (key) {
+ return this.valueOf();
+ };
+ }
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta[a];
+ return typeof c === 'string' ? c :
+ '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// Is the value an array?
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' : gap ?
+ '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' : gap ?
+ '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
+ '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+ if (typeof JSON.stringify !== 'function') {
+ JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ };
+ }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+ if (typeof JSON.parse !== 'function') {
+ JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ text = String(text);
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' +
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/
+ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ };
+ }
+
+// Augment the basic prototypes if they have not already been augmented.
+// These forms are obsolete. It is recommended that JSON.stringify and
+// JSON.parse be used instead.
+
+ if (!Object.prototype.toJSONString) {
+ Object.prototype.toJSONString = function (filter) {
+ return JSON.stringify(this, filter);
+ };
+ Object.prototype.parseJSON = function (filter) {
+ return JSON.parse(this, filter);
+ };
+ }
+}());
diff --git a/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/fill-values b/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/fill-values
new file mode 100644
index 0000000..89b1eef
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: min-js-with-sources
+Description: Minified JavaScript with sources
+Extra-Build-Depends: uglifyjs
diff --git a/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/pre-build b/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/pre-build
new file mode 100755
index 0000000..2c47e53
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/min-js-with-sources/build-spec/pre-build
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+
+sourcedir="$dir/debian/missing-sources"
+sourcejs="$sourcedir/ugly/fullpath.js"
+uglydir="$dir/ugly"
+uglyjs="$uglydir/fullpath.min.js"
+
+mkdir -p "$uglydir"
+
+# create a js file
+uglifyjs -o "$uglyjs" "$sourcejs"
+
+cp "$sourcejs" "$sourcedir/basename.js"
+cp "$uglyjs" "$uglydir/basename.min.js"
+
+cp "$uglyjs" "$uglydir/missing-source.min.js"
diff --git a/t/recipes/checks/files/source-missing/min-js-with-sources/eval/desc b/t/recipes/checks/files/source-missing/min-js-with-sources/eval/desc
new file mode 100644
index 0000000..82874fa
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/min-js-with-sources/eval/desc
@@ -0,0 +1,4 @@
+Testname: min-js-with-sources
+Check: files/source-missing
+See-Also:
+ Bug#962583
diff --git a/t/recipes/checks/files/source-missing/min-js-with-sources/eval/hints b/t/recipes/checks/files/source-missing/min-js-with-sources/eval/hints
new file mode 100644
index 0000000..8e5d657
--- /dev/null
+++ b/t/recipes/checks/files/source-missing/min-js-with-sources/eval/hints
@@ -0,0 +1,4 @@
+min-js-with-sources (source): source-is-missing [ugly/missing-source.min.js]
+min-js-with-sources (source): source-contains-prebuilt-javascript-object [ugly/missing-source.min.js]
+min-js-with-sources (source): source-contains-prebuilt-javascript-object [ugly/fullpath.min.js]
+min-js-with-sources (source): source-contains-prebuilt-javascript-object [ugly/basename.min.js]
diff --git a/t/recipes/checks/files/special/files-special-file/build-spec/debian/rules b/t/recipes/checks/files/special/files-special-file/build-spec/debian/rules
new file mode 100644
index 0000000..80395cd
--- /dev/null
+++ b/t/recipes/checks/files/special/files-special-file/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+PKG=$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ mkdir -p debian/$(PKG)/usr/share/$(PKG)/
+ mkfifo debian/$(PKG)/usr/share/$(PKG)/fifo-pipe
+ dh_builddeb
+
diff --git a/t/recipes/checks/files/special/files-special-file/build-spec/fill-values b/t/recipes/checks/files/special/files-special-file/build-spec/fill-values
new file mode 100644
index 0000000..604318f
--- /dev/null
+++ b/t/recipes/checks/files/special/files-special-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-special-file
+Description: Test for special files in the deb
diff --git a/t/recipes/checks/files/special/files-special-file/eval/desc b/t/recipes/checks/files/special/files-special-file/eval/desc
new file mode 100644
index 0000000..9e7d65e
--- /dev/null
+++ b/t/recipes/checks/files/special/files-special-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-special-file
+Check: files/special
diff --git a/t/recipes/checks/files/special/files-special-file/eval/hints b/t/recipes/checks/files/special/files-special-file/eval/hints
new file mode 100644
index 0000000..43b6d34
--- /dev/null
+++ b/t/recipes/checks/files/special/files-special-file/eval/hints
@@ -0,0 +1 @@
+files-special-file (binary): special-file 0644 [usr/share/files-special-file/fifo-pipe]
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/desc b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/desc
new file mode 100644
index 0000000..2a73621
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/symbolic-links/broken
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/hints b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/hints
new file mode 100644
index 0000000..c40f8ed
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): package-contains-unsafe-symlink [usr/lib/filenames/symlink2wrong]
diff --git a/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/post-test b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/broken-links.links b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/broken-links.links
new file mode 100644
index 0000000..2364bbe
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/broken-links.links
@@ -0,0 +1,10 @@
+# broken links
+usr/share/broken-links/some.data usr/lib/broken-links/some.data
+etc/some.conf usr/lib/broken-links/some.conf
+# At the time of writing, debhelper does not expand wildcard in
+# links files.
+etc/some-*.conf usr/lib/broken-links/some-other.conf
+
+# valid links
+usr/share/data-pkg/valid.data usr/lib/data-pkg/valid.data
+etc/valid.conf usr/lib/data-pkg/valid.conf
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/control.in b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/control.in
new file mode 100644
index 0000000..49142de
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: broken-links
+Architecture: all
+Depends: ${misc:Depends}, data-pkg
+Description: [% $description %] - symlinks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Contains only symlinks.
+
+Package: data-pkg
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - data
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Contains actual files.
+
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/data-pkg.install b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/data-pkg.install
new file mode 100644
index 0000000..e26c08b
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/debian/data-pkg.install
@@ -0,0 +1,2 @@
+valid.conf etc/
+valid.data usr/share/data-pkg/
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/fill-values
new file mode 100644
index 0000000..9fb3c92
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: symlinks-broken
+Description: General tests broken symlinks
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.conf b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.conf
new file mode 100644
index 0000000..9f51dd6
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.conf
@@ -0,0 +1 @@
+# lalalalal - some conf file
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.data b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.data
new file mode 100644
index 0000000..1e19ae1
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/build-spec/orig/valid.data
@@ -0,0 +1 @@
+Hallo world data file
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/desc b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/desc
new file mode 100644
index 0000000..b6532b1
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/desc
@@ -0,0 +1,2 @@
+Testname: symlinks-broken
+Check: files/symbolic-links/broken
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/hints b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/hints
new file mode 100644
index 0000000..dcc7d8b
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-broken/eval/hints
@@ -0,0 +1 @@
+broken-links (binary): package-contains-broken-symlink-wildcard etc/some-*.conf [usr/lib/broken-links/some-other.conf]
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/debian/rules
new file mode 100644
index 0000000..c2b7e3c
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+
+PKG:=$(shell dh_listpackages)
+LINK_DIR:=debian/$(PKG)/usr/share/lintian/bad-links
+LINK_TARGET:=non-existent/path/lintian-should-not-open
+
+%:
+ dh $@
+
+override_dh_link:
+ mkdir -p "$(LINK_DIR)"
+ ln -s ../../../../../$(LINK_TARGET) \
+ $(LINK_DIR)/relative-escape
+ ln -s /../$(LINK_TARGET) $(LINK_DIR)/absolute
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/fill-values
new file mode 100644
index 0000000..da87d48
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: symlinks-unsafe
+Description: General tests of unsafe symlinks
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/desc b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/desc
new file mode 100644
index 0000000..0784410
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/desc
@@ -0,0 +1,2 @@
+Testname: symlinks-unsafe
+Check: files/symbolic-links/broken
diff --git a/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/hints b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/hints
new file mode 100644
index 0000000..9285ab9
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/broken/symlinks-unsafe/eval/hints
@@ -0,0 +1,2 @@
+symlinks-unsafe (binary): package-contains-unsafe-symlink [usr/share/lintian/bad-links/relative-escape]
+symlinks-unsafe (binary): package-contains-unsafe-symlink [usr/share/lintian/bad-links/absolute]
diff --git a/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/fill-values
new file mode 100644
index 0000000..9fe30a6
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-unsafe-symlinks
+Description: General tests of unsafe symlinks
diff --git a/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/pre-build b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/pre-build
new file mode 100755
index 0000000..dfc51e8
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/build-spec/pre-build
@@ -0,0 +1,12 @@
+#!/bin/sh
+SOURCE_ROOT="$1"
+LINK_TARGET=non-existent/path/lintian-should-not-open
+
+
+mkdir -p "$SOURCE_ROOT/bad-symlinks" "$SOURCE_ROOT/tests/"
+ln -s "../../$LINK_TARGET" "$SOURCE_ROOT/bad-symlinks/relative-escape"
+ln -s "/../../$LINK_TARGET" "$SOURCE_ROOT/bad-symlinks/absolute-escape"
+
+# Lintian no longer ignores these
+ln -s "../../$LINK_TARGET" "$SOURCE_ROOT/tests/relative-escape-from-tests"
+ln -s "/../../$LINK_TARGET" "$SOURCE_ROOT/tests/absolute-escape-from-tests"
diff --git a/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/desc b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/desc
new file mode 100644
index 0000000..f5fb8b5
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-unsafe-symlinks
+Check: files/symbolic-links
diff --git a/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/hints b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/hints
new file mode 100644
index 0000000..21c0606
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/cruft-unsafe-symlinks/eval/hints
@@ -0,0 +1,4 @@
+cruft-unsafe-symlinks (source): wayward-symbolic-link-target-in-source ../../non-existent/path/lintian-should-not-open [tests/relative-escape-from-tests]
+cruft-unsafe-symlinks (source): wayward-symbolic-link-target-in-source ../../non-existent/path/lintian-should-not-open [bad-symlinks/relative-escape]
+cruft-unsafe-symlinks (source): absolute-symbolic-link-target-in-source /../../non-existent/path/lintian-should-not-open [tests/absolute-escape-from-tests]
+cruft-unsafe-symlinks (source): absolute-symbolic-link-target-in-source /../../non-existent/path/lintian-should-not-open [bad-symlinks/absolute-escape]
diff --git a/t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/fill-values
new file mode 100644
index 0000000..2f289a4
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: dev-null-fp
+Description: Absolute link target to /dev/null (false positive)
diff --git a/t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/pre-build b/t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/pre-build
new file mode 100755
index 0000000..dbc8e36
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/dev-null-fp/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+SOURCE_ROOT="$1"
+
+mkdir -p "$SOURCE_ROOT/systemd/"
+ln -s /dev/null "$SOURCE_ROOT/systemd/masked.service"
diff --git a/t/recipes/checks/files/symbolic-links/dev-null-fp/eval/desc b/t/recipes/checks/files/symbolic-links/dev-null-fp/eval/desc
new file mode 100644
index 0000000..e356af0
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/dev-null-fp/eval/desc
@@ -0,0 +1,5 @@
+Testname: dev-null-fp
+Check: files/symbolic-links
+Test-Against:
+ absolute-symbolic-link-target-in-source
+See-Also: Bug#964111, Bug#964234
diff --git a/t/recipes/checks/files/symbolic-links/dev-null-fp/eval/hints b/t/recipes/checks/files/symbolic-links/dev-null-fp/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/dev-null-fp/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/clean b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/dirs b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/examples b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/install b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/links b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/manpages b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/dir b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/types b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/symbolic-links/files-general/eval/desc b/t/recipes/checks/files/symbolic-links/files-general/eval/desc
new file mode 100644
index 0000000..fa065c8
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/symbolic-links
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/symbolic-links/files-general/eval/hints b/t/recipes/checks/files/symbolic-links/files-general/eval/hints
new file mode 100644
index 0000000..a1da773
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): lengthy-symlink ../bar/foo [usr/share/doc/bar/star]
diff --git a/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/install b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/install
new file mode 100644
index 0000000..a9d7a9f
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/install
@@ -0,0 +1 @@
+symlinks/* usr/share/lintian/data/
diff --git a/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/rules
new file mode 100644
index 0000000..e61f78e
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/debian/rules
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ mkdir symlinks/
+ ln -s /tmp/does-not-exist symlinks/points-to-tmp
+
+override_dh_auto_clean:
+ rm -fr symlinks/
+
+override_dh_link:
+ # it will fix our symlinks and ruin the test, so skip it.
diff --git a/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/fill-values
new file mode 100644
index 0000000..0d71863
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-symlink-points-to-tmp
+Description: Symlink point to /tmp
diff --git a/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/desc b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/desc
new file mode 100644
index 0000000..1f53716
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-symlink-points-to-tmp
+Check: files/symbolic-links
diff --git a/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/hints b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/hints
new file mode 100644
index 0000000..caa86dd
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlink-points-to-tmp/eval/hints
@@ -0,0 +1 @@
+files-symlink-points-to-tmp (binary): symlink-target-in-tmp /tmp/does-not-exist [usr/share/lintian/data/points-to-tmp]
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/install b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/install
new file mode 100644
index 0000000..45fcdc1
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/install
@@ -0,0 +1,11 @@
+data-file usr/share/lintian/data/
+pkg.conf etc/lintian/
+symlinks/data-file.old usr/share/lintian/data/
+symlinks/etc-lintian* usr/share/
+symlinks/pkg*.conf usr/share/lintian/data/
+symlinks/self-recursive usr/share/lintian/data/
+symlinks/spurious usr/share/lintian/data/
+symlinks/comp-data usr/lib/lintian/data/
+symlinks/1024 usr/lib/lintian/data/
+
+tmp/comp-data.gz usr/share/lintian/data/
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/rules
new file mode 100644
index 0000000..7a23a1c
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ mkdir tmp
+ gzip -n -9c < data-file > tmp/comp-data.gz
+ mkdir symlinks/
+ ln -s ../../../../etc/lintian/pkg.conf symlinks/pkg-old.conf
+ ln -s ../..//..//..//../etc/lintian/pkg.conf symlinks/pkg.conf
+ ln -s /usr/share/lintian/data/data-file symlinks/data-file.old
+ ln -s /etc/lintian/ symlinks/etc-lintian
+ ln -s / symlinks/self-recursive
+ ln -s ../../lintian-old/../lintian/data/data-file symlinks/spurious
+ ln -s ../../../share/lintian/data/comp-data.gz symlinks/comp-data
+ ln -s /var/lib/sbuild/1024 symlinks/1024
+
+override_dh_auto_clean:
+ rm -fr symlinks/ tmp
+
+override_dh_link:
+ # it will fix our symlinks and ruin the test, so skip it.
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/fill-values
new file mode 100644
index 0000000..69857b1
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-symlinks
+Description: Test tags about symlinks
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/data-file b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/data-file
new file mode 100644
index 0000000..9a50fd7
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/data-file
@@ -0,0 +1 @@
+# Some data file. \ No newline at end of file
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/pkg.conf b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/pkg.conf
new file mode 100644
index 0000000..b3138c3
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/build-spec/orig/pkg.conf
@@ -0,0 +1 @@
+# sample config file
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/eval/desc b/t/recipes/checks/files/symbolic-links/files-symlinks/eval/desc
new file mode 100644
index 0000000..31be296
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-symlinks
+Check: files/symbolic-links
diff --git a/t/recipes/checks/files/symbolic-links/files-symlinks/eval/hints b/t/recipes/checks/files/symbolic-links/files-symlinks/eval/hints
new file mode 100644
index 0000000..c291d39
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/files-symlinks/eval/hints
@@ -0,0 +1,9 @@
+files-symlinks (binary): symlink-target-in-build-tree /var/lib/sbuild/1024 [usr/lib/lintian/data/1024]
+files-symlinks (binary): symlink-is-self-recursive / [usr/share/lintian/data/self-recursive]
+files-symlinks (binary): symlink-has-too-many-up-segments ../..//..//..//../etc/lintian/pkg.conf [usr/share/lintian/data/pkg.conf]
+files-symlinks (binary): symlink-has-double-slash ../..//..//..//../etc/lintian/pkg.conf [usr/share/lintian/data/pkg.conf]
+files-symlinks (binary): symlink-ends-with-slash /etc/lintian/ [usr/share/etc-lintian]
+files-symlinks (binary): symlink-contains-spurious-segments ../../lintian-old/../lintian/data/data-file [usr/share/lintian/data/spurious]
+files-symlinks (binary): relative-symlink ../../../../etc/lintian/pkg.conf [usr/share/lintian/data/pkg-old.conf]
+files-symlinks (binary): compressed-symlink-with-wrong-ext ../../../share/lintian/data/comp-data.gz [usr/lib/lintian/data/comp-data]
+files-symlinks (binary): absolute-symlink-in-top-level-folder /usr/share/lintian/data/data-file [usr/share/lintian/data/data-file.old]
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/control b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/templates b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/eval/desc b/t/recipes/checks/files/symbolic-links/legacy-binary/eval/desc
new file mode 100644
index 0000000..7020dcb
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: files/symbolic-links
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/eval/hints b/t/recipes/checks/files/symbolic-links/legacy-binary/eval/hints
new file mode 100644
index 0000000..a1e39d3
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/eval/hints
@@ -0,0 +1,3 @@
+binary (binary): symlink-contains-spurious-segments ../html/./ch1.html [usr/share/doc/binary/html/ch2.html]
+binary (binary): lengthy-symlink ../html/./ch1.html [usr/share/doc/binary/html/ch2.html]
+binary (binary): absolute-symlink-in-top-level-folder /usr/share/doc/binary/htm/ch1.html [usr/share/doc/binary/html/ch3.html]
diff --git a/t/recipes/checks/files/symbolic-links/legacy-binary/eval/post-test b/t/recipes/checks/files/symbolic-links/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/desc b/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/desc
new file mode 100644
index 0000000..6f7fc95
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/symbolic-links
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/hints b/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/hints
new file mode 100644
index 0000000..6b4ae31
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/hints
@@ -0,0 +1,15 @@
+filenames (binary): symlink-is-self-recursive / [usr/lib/filenames/symlink7ok+warn]
+filenames (binary): symlink-is-self-recursive ../../.. [usr/lib/filenames/symlink10wrong]
+filenames (binary): symlink-is-self-recursive .. [usr/lib/filenames/symlink5ok+warn]
+filenames (binary): symlink-is-self-recursive . [usr/lib/filenames/symlink6ok+warn]
+filenames (binary): symlink-has-too-many-up-segments ../../../../etc/symlink [usr/lib/filenames/symlink2wrong]
+filenames (binary): symlink-has-double-slash ../menu//something [usr/lib/filenames/symlink8wrong]
+filenames (binary): symlink-ends-with-slash ../menu/something/ [usr/lib/filenames/symlink9wrong]
+filenames (binary): symlink-contains-spurious-segments ./file4 [usr/lib/filenames/symlink6wrong]
+filenames (binary): symlink-contains-spurious-segments ../menu/./something [usr/lib/filenames/symlink7wrong]
+filenames (binary): symlink-contains-spurious-segments ../menu/../somethingelse [usr/lib/filenames/symlink5wrong]
+filenames (binary): relative-symlink ../../../etc/symlink [usr/lib/filenames/symlink1wrong]
+filenames (binary): relative-symlink ../../.. [usr/lib/filenames/symlink10wrong]
+filenames (binary): lengthy-symlink ../filenames/symlink2 [usr/lib/filenames/symlink4wrong]
+filenames (binary): lengthy-symlink ../filenames/doc/version6.txt.gz [usr/share/doc/filenames/version.txt.gz]
+filenames (binary): absolute-symlink-in-top-level-folder /usr/lib/filenames/symlink2 [usr/lib/filenames/symlink3wrong]
diff --git a/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/post-test b/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/desc b/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..899b0b0
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: files/symbolic-links
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/hints b/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..c45833e
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz2 (binary): absolute-symlink-in-top-level-folder /usr/share/doc/lintian/changelog.gz [usr/share/doc/libbaz2/changelog.gz]
diff --git a/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/post-test b/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/files/symbolic-links/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/fill-values b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/fill-values
new file mode 100644
index 0000000..ac02fd0
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: exe-vs-gif-in-patched-filename
+Description: Unicode RLTO in patched file name
diff --git a/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/pre-build b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/pre-build
new file mode 100755
index 0000000..ab43774
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/build-spec/pre-build
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+
+DIR="$1"
+
+mkdir -p "$DIR/scripts"
+NAME=`echo -e 'example\xE2\x80\xAEfig.exe'`
+touch "$DIR/scripts/$NAME"
diff --git a/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/desc b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/desc
new file mode 100644
index 0000000..93e20d8
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/desc
@@ -0,0 +1,2 @@
+Testname: exe-vs-gif-in-patched-filename
+Check: files/unicode/trojan
diff --git a/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/hints b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/hints
new file mode 100644
index 0000000..d1e3a72
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/exe-vs-gif-in-patched-filename/eval/hints
@@ -0,0 +1 @@
+exe-vs-gif-in-patched-filename (source): unicode-trojan File name U+202E "RIGHT-TO-LEFT OVERRIDE" [scripts/example‮fig.exe]
diff --git a/t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/fill-values b/t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/fill-values
new file mode 100644
index 0000000..c619364
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: rte-in-contents
+Description: RTE in file contents
diff --git a/t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/pre-build b/t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/pre-build
new file mode 100755
index 0000000..d9672a5
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/rte-in-contents/build-spec/pre-build
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+DIR="$1"
+
+mkdir -p "$DIR/scripts"
+
+echo -e '#!/bin/sh\n\npotential\xE2\x80\xABtrojan' > "$DIR/scripts/careful"
+
+chmod +x "$DIR/scripts/careful"
diff --git a/t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/desc b/t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/desc
new file mode 100644
index 0000000..f5c13e0
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/desc
@@ -0,0 +1,2 @@
+Testname: rte-in-contents
+Check: files/unicode/trojan
diff --git a/t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/hints b/t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/hints
new file mode 100644
index 0000000..6c3251f
--- /dev/null
+++ b/t/recipes/checks/files/unicode/trojan/rte-in-contents/eval/hints
@@ -0,0 +1 @@
+rte-in-contents (source): unicode-trojan Contents U+202B "RIGHT-TO-LEFT EMBEDDING" [scripts/careful:3]
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/clean b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/dirs b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/examples b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/install b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/links b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/manpages b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/debian/rules b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/fill-values b/t/recipes/checks/files/unwanted/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/--lzma b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/dir b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.5 b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/sudotest b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/files/unwanted/files-general/build-spec/orig/types b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/files/unwanted/files-general/eval/desc b/t/recipes/checks/files/unwanted/files-general/eval/desc
new file mode 100644
index 0000000..7fb33e4
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: files/unwanted
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/files/unwanted/files-general/eval/hints b/t/recipes/checks/files/unwanted/files-general/eval/hints
new file mode 100644
index 0000000..bfcb810
--- /dev/null
+++ b/t/recipes/checks/files/unwanted/files-general/eval/hints
@@ -0,0 +1,2 @@
+files-general (binary): nfs-temporary-file-in-package [usr/share/foo/.nfs-fake-tmpfile]
+files-general (binary): backup-file-in-package [usr/share/foo/file~]
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/desc b/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..d5aa57f
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: files/usr-merge
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/hints b/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..e449a90
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/hints
@@ -0,0 +1,4 @@
+files-foo-in-bar (binary): package-contains-usr-unmerged-pathnames [libx32/bar]
+files-foo-in-bar (binary): package-contains-usr-unmerged-pathnames [lib64/bar]
+files-foo-in-bar (binary): package-contains-usr-unmerged-pathnames [lib32/bar]
+files-foo-in-bar (binary): package-contains-usr-unmerged-pathnames [bin/foo/bar]
diff --git a/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/post-test b/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install
new file mode 100644
index 0000000..d9a88fb
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/debian/install
@@ -0,0 +1 @@
+file-outside-usr /bin/subdir
diff --git a/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values
new file mode 100644
index 0000000..765af2c
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: files-package-contains-usr-unmerged-pathnames
+Skeleton: upload-native
+Description: Test for "real" files outside of /usr
diff --git a/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr
new file mode 100644
index 0000000..c52d3c2
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/build-spec/orig/file-outside-usr
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exit 0
diff --git a/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/desc b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/desc
new file mode 100644
index 0000000..a387fb9
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-usr-unmerged-pathnames
+Check: files/usr-merge
diff --git a/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/hints b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/hints
new file mode 100644
index 0000000..da33722
--- /dev/null
+++ b/t/recipes/checks/files/usr-merge/files-package-contains-usr-unmerged-pathnames/eval/hints
@@ -0,0 +1 @@
+files-package-contains-usr-unmerged-pathnames (binary): package-contains-usr-unmerged-pathnames [bin/subdir/file-outside-usr]
diff --git a/t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/debian/rules b/t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/debian/rules
new file mode 100644
index 0000000..506639f
--- /dev/null
+++ b/t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/debian/rules
@@ -0,0 +1,73 @@
+#!/usr/bin/make -f
+
+PKG :=$(shell dh_listpackages)
+SHARE:= debian/$(PKG)/usr/share
+DATA := $(SHARE)/$(PKG)
+DOC := $(SHARE)/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DOC) $(DATA)
+
+ # Vcs stuff
+ mkdir $(DATA)/.svn $(DATA)/.git
+ touch $(DATA)/.svn/file
+ touch $(DATA)/.git/file
+ touch $(DATA)/.gitignore
+ touch $(DATA)/.git_ignore
+ mkdir $(DATA)/sub-git1/
+ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz
+ touch $(DATA)/sub-git1/.gitattributes
+ touch $(DATA)/sub-git1/.gitmodules
+
+ touch $(DATA)/svn-commit-yeehaa.tmp
+ touch $(DATA)/svk-commit-yeehaa.tmp
+
+ # bts control dir
+ mkdir $(DATA)/.be
+ touch $(DATA)/.be/file
+
+ # macos stuff
+ touch $(DATA)/.DS_Store
+ touch $(DATA)/._stuff
+
+ # windows
+ touch $(DATA)/Thumbs.db
+
+ # Foreign READMEs
+ echo "Hallo World Mac" > $(DOC)/README.mac
+ echo "Hallo World Win" > $(DOC)/README.windows
+
+ # Linda override
+ mkdir -p $(SHARE)/linda/overrides
+ touch $(SHARE)/linda/overrides/$(PKG)
+
+ # CMake private files
+ mkdir -p $(SHARE)/cmake-3.1/Modules
+ touch $(SHARE)/cmake-3.1/FindFoo.cmake
+ touch $(SHARE)/cmake-3.1/Modules/FindVar.cmake
+
+ # Ignored Cargo sources
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/.gitignore
+ touch $(SHARE)/cargo/registry/crate-1.0.0/LICENSE
+ touch $(SHARE)/cargo/registry/crate-1.0.0/templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/foo_templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/foo_templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d
+ touch $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d/readme.tmpl
+ echo '#!/bin/sh' > $(SHARE)/cargo/registry/crate-1.0.0/test.sh
+ echo '#!/usr/bin/python' > $(SHARE)/cargo/registry/crate-1.0.0/test.py
+ chmod a+x $(SHARE)/cargo/registry/crate-1.0.0/test.py
+
+ # Documentation outside /usr/share/doc
+ touch $(DATA)/readme.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme_1.1.txt
+ touch $(DATA)/readme-1.1.txt
+ touch $(DATA)/readmefirst.txt
+ touch $(DATA)/readMesh_off.m # False-positive from #914500
diff --git a/t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/fill-values b/t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/fill-values
new file mode 100644
index 0000000..b55ed53
--- /dev/null
+++ b/t/recipes/checks/files/vcs/files-package-contains-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-package-contains-foo
+Description: Test tags about cruft in binary packages
diff --git a/t/recipes/checks/files/vcs/files-package-contains-foo/eval/desc b/t/recipes/checks/files/vcs/files-package-contains-foo/eval/desc
new file mode 100644
index 0000000..383fe04
--- /dev/null
+++ b/t/recipes/checks/files/vcs/files-package-contains-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-foo
+Check: files/vcs
diff --git a/t/recipes/checks/files/vcs/files-package-contains-foo/eval/hints b/t/recipes/checks/files/vcs/files-package-contains-foo/eval/hints
new file mode 100644
index 0000000..fb2da08
--- /dev/null
+++ b/t/recipes/checks/files/vcs/files-package-contains-foo/eval/hints
@@ -0,0 +1,9 @@
+files-package-contains-foo (binary): svn-commit-file-in-package [usr/share/files-package-contains-foo/svn-commit-yeehaa.tmp]
+files-package-contains-foo (binary): svk-commit-file-in-package [usr/share/files-package-contains-foo/svk-commit-yeehaa.tmp]
+files-package-contains-foo (binary): package-contains-vcs-control-file [usr/share/files-package-contains-foo/sub-git1/.gitmodules]
+files-package-contains-foo (binary): package-contains-vcs-control-file [usr/share/files-package-contains-foo/sub-git1/.gitignore.gz]
+files-package-contains-foo (binary): package-contains-vcs-control-file [usr/share/files-package-contains-foo/sub-git1/.gitattributes]
+files-package-contains-foo (binary): package-contains-vcs-control-file [usr/share/files-package-contains-foo/.gitignore]
+files-package-contains-foo (binary): package-contains-vcs-control-file [usr/share/files-package-contains-foo/.git_ignore]
+files-package-contains-foo (binary): package-contains-vcs-control-dir [usr/share/files-package-contains-foo/.svn/]
+files-package-contains-foo (binary): package-contains-vcs-control-dir [usr/share/files-package-contains-foo/.git/]
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/control b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/fill-values b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/eval/desc b/t/recipes/checks/files/vcs/legacy-filenames/eval/desc
new file mode 100644
index 0000000..a20c30b
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: files/vcs
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/eval/hints b/t/recipes/checks/files/vcs/legacy-filenames/eval/hints
new file mode 100644
index 0000000..534001a
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/eval/hints
@@ -0,0 +1,13 @@
+filenames (binary): svn-commit-file-in-package [files/svn-commit.tmp]
+filenames (binary): svk-commit-file-in-package [files/svk-commitsEr9P.tmp]
+filenames (binary): package-contains-vcs-control-file [usr/lib/ma-dir/perl/version/foo/.hgtags]
+filenames (binary): package-contains-vcs-control-file [usr/lib/ma-dir/perl/version/foo/.hgignore]
+filenames (binary): package-contains-vcs-control-file [usr/lib/ma-dir/perl/version/foo/.hg_archival.txt]
+filenames (binary): package-contains-vcs-control-file [usr/lib/ma-dir/perl/version/foo/.gitignore]
+filenames (binary): package-contains-vcs-control-file [files/.cvsignore]
+filenames (binary): package-contains-vcs-control-file [files/.arch-inventory]
+filenames (binary): package-contains-vcs-control-dir [usr/lib/ma-dir/perl/version/{arch}/]
+filenames (binary): package-contains-vcs-control-dir [usr/lib/ma-dir/perl/version/CVS/]
+filenames (binary): package-contains-vcs-control-dir [usr/lib/ma-dir/perl/version/.svn/]
+filenames (binary): package-contains-vcs-control-dir [usr/lib/ma-dir/perl/version/.bzr/]
+filenames (binary): package-contains-vcs-control-dir [usr/lib/ma-dir/perl/version/.arch-ids/]
diff --git a/t/recipes/checks/files/vcs/legacy-filenames/eval/post-test b/t/recipes/checks/files/vcs/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/files/vcs/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/debian/control.in b/t/recipes/checks/fonts/files-adobe-font/build-spec/debian/control.in
new file mode 100644
index 0000000..41d290d
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: fonts
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: fonts-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/debian/install b/t/recipes/checks/fonts/files-adobe-font/build-spec/debian/install
new file mode 100644
index 0000000..f589ca9
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/debian/install
@@ -0,0 +1 @@
+*.pfb usr/share/lintian/fonts/
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/fill-values b/t/recipes/checks/fonts/files-adobe-font/build-spec/fill-values
new file mode 100644
index 0000000..d1f8dad
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-adobe-font
+Description: Test for adobe font license issues
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/Makefile b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/Makefile
new file mode 100644
index 0000000..6b48449
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/Makefile
@@ -0,0 +1,8 @@
+all: bad.pfb good.pfb badnocredit.pfb badwithadobecode.pfb
+
+%.pfb: %.raw
+ t1asm $< > $@
+
+clean:
+ rm -f *.pfb
+
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/bad.raw b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/bad.raw
new file mode 100644
index 0000000..37b5d60
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/bad.raw
@@ -0,0 +1,16 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: bad
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: nthykier,,,
+%Copyright: Created by nthykier,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% The statements below are here to trick Lintian...
+% Copyright (c) 1987-1990 Adobe Systems Incorporated.
+% All Rights Reserved.
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badnocredit.raw b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badnocredit.raw
new file mode 100644
index 0000000..1270b84
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badnocredit.raw
@@ -0,0 +1,15 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: badnocredit
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: roucaries.bastien,,,
+%Copyright: Created by roucaries.bastien,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% The code below is here to trick Lintian...
+trick { /startlock get exec } def
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badwithadobecode.raw b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badwithadobecode.raw
new file mode 100644
index 0000000..4822d8d
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/badwithadobecode.raw
@@ -0,0 +1,17 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: badwithadobecode
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: roucaries.bastien,,,
+%Copyright: Created by roucaries.bastien,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% The code below is here to trick Lintian...
+% Copyright (c) 1987-1990 Adobe Systems Incorporated.
+% All Rights Reserved.
+trick { /startlock get exec } def
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/good.raw b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/good.raw
new file mode 100644
index 0000000..fd50247
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/build-spec/orig/good.raw
@@ -0,0 +1,15 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: good
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: nthykier,,,
+%Copyright: Created by nthykier,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% This file has no license issues (bad.raw doesn't either, but
+% we pretend it does).
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/files-adobe-font/eval/desc b/t/recipes/checks/fonts/files-adobe-font/eval/desc
new file mode 100644
index 0000000..12aa013
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-adobe-font
+Check: fonts
diff --git a/t/recipes/checks/fonts/files-adobe-font/eval/hints b/t/recipes/checks/fonts/files-adobe-font/eval/hints
new file mode 100644
index 0000000..6e39fb6
--- /dev/null
+++ b/t/recipes/checks/fonts/files-adobe-font/eval/hints
@@ -0,0 +1,4 @@
+fonts-files-adobe-font (binary): font-outside-font-dir [usr/share/lintian/fonts/good.pfb]
+fonts-files-adobe-font (binary): font-outside-font-dir [usr/share/lintian/fonts/badwithadobecode.pfb]
+fonts-files-adobe-font (binary): font-outside-font-dir [usr/share/lintian/fonts/badnocredit.pfb]
+fonts-files-adobe-font (binary): font-outside-font-dir [usr/share/lintian/fonts/bad.pfb]
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/debian/control.in b/t/recipes/checks/fonts/files-fonts/build-spec/debian/control.in
new file mode 100644
index 0000000..851be7b
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/debian/control.in
@@ -0,0 +1,31 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: [% $source %]
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %]
+ Non-font package containing fonts.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: ttf-[% $source %]
+Section: fonts
+Architecture: all
+# Due to file-conflict
+Conflicts: [% $source %]
+Depends: ${misc:Depends}
+Description: [% $description %] (okay)
+ Font package containing fonts.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/debian/files-fonts.install b/t/recipes/checks/fonts/files-fonts/build-spec/debian/files-fonts.install
new file mode 100644
index 0000000..f3dd053
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/debian/files-fonts.install
@@ -0,0 +1,14 @@
+font.otf usr/share/fonts/truetype
+font.ttf usr/share/fonts/truetype
+4shadow.ttf usr/share/fonts/truetype
+foo.pcf usr/share/fonts/X11/100dpi
+foo.pcf usr/share/fonts/X11/75dpi
+foo.pcf usr/share/fonts/X11/misc
+foo.pcf usr/share/fonts/X11/Type1
+foo.pcf usr/share/fonts/X11/encodings
+foo.pcf usr/share/fonts/X11/util
+foo.pcf usr/share/fonts/X11/PEX
+foo.pcf usr/share/fonts/X11/CID
+foo.pcf usr/share/fonts/X11/Speedo
+foo.pcf usr/share/fonts/X11/cyrillic
+foo.pcf usr/share/fonts/X11/other
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.install b/t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.install
new file mode 100644
index 0000000..95e5191
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.install
@@ -0,0 +1,4 @@
+font.otf usr/share/fonts/truetype
+font.ttf usr/share/fonts/truetype
+4shadow.ttf usr/share/fonts/truetype
+font.ttf usr/lib/fontpackage
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.links b/t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.links
new file mode 100644
index 0000000..f57bbb5
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/debian/ttf-files-fonts.links
@@ -0,0 +1 @@
+usr/share/fonts/truetype/font.ttf usr/share/fonts/truetype/dejavusans.ttf
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/fill-values b/t/recipes/checks/fonts/files-fonts/build-spec/fill-values
new file mode 100644
index 0000000..1b07cd1
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-fonts
+Description: Font file checks
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/orig/4shadow.ttf b/t/recipes/checks/fonts/files-fonts/build-spec/orig/4shadow.ttf
new file mode 100644
index 0000000..780ab93
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/orig/4shadow.ttf
@@ -0,0 +1,2 @@
+This isn't actually a font. The current test is based on the file
+name and doesn't care.
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/orig/font.otf b/t/recipes/checks/fonts/files-fonts/build-spec/orig/font.otf
new file mode 100644
index 0000000..c118d8d
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/orig/font.otf
@@ -0,0 +1 @@
+This is a fake font file.
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/orig/font.ttf b/t/recipes/checks/fonts/files-fonts/build-spec/orig/font.ttf
new file mode 100644
index 0000000..c118d8d
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/orig/font.ttf
@@ -0,0 +1 @@
+This is a fake font file.
diff --git a/t/recipes/checks/fonts/files-fonts/build-spec/orig/foo.pcf b/t/recipes/checks/fonts/files-fonts/build-spec/orig/foo.pcf
new file mode 100644
index 0000000..8a7d9df
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/build-spec/orig/foo.pcf
@@ -0,0 +1 @@
+I'm not really a font, but I play one on TV.
diff --git a/t/recipes/checks/fonts/files-fonts/eval/desc b/t/recipes/checks/fonts/files-fonts/eval/desc
new file mode 100644
index 0000000..68d9b83
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-fonts
+Check: fonts
diff --git a/t/recipes/checks/fonts/files-fonts/eval/hints b/t/recipes/checks/fonts/files-fonts/eval/hints
new file mode 100644
index 0000000..a6249e6
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/eval/hints
@@ -0,0 +1,5 @@
+ttf-files-fonts (binary): font-outside-font-dir [usr/lib/fontpackage/font.ttf]
+ttf-files-fonts (binary): duplicate-font-file also in (FONT_PACKAGES) [usr/share/fonts/truetype/4shadow.ttf]
+files-fonts (binary): font-in-non-font-package [usr/share/fonts/truetype/font.ttf]
+files-fonts (binary): font-in-non-font-package [usr/share/fonts/truetype/font.otf]
+files-fonts (binary): duplicate-font-file also in (FONT_PACKAGES) [usr/share/fonts/truetype/4shadow.ttf]
diff --git a/t/recipes/checks/fonts/files-fonts/eval/post-test b/t/recipes/checks/fonts/files-fonts/eval/post-test
new file mode 100644
index 0000000..4c76e7b
--- /dev/null
+++ b/t/recipes/checks/fonts/files-fonts/eval/post-test
@@ -0,0 +1 @@
+s/also in [(][^)]+[)]/also in (FONT_PACKAGES)/
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/build-spec/debian/install b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/debian/install
new file mode 100644
index 0000000..c7427e8
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/debian/install
@@ -0,0 +1 @@
+fonts/* /usr/share/fonts/
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/build-spec/fill-values b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/fill-values
new file mode 100644
index 0000000..2361324
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: use-restricted
+Skeleton: upload-native
+Description: Installs an OpenType font with a restricted license.
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Editable.otf b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Editable.otf
new file mode 100644
index 0000000..14e2176
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Editable.otf
Binary files differ
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Installable.otf b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Installable.otf
new file mode 100644
index 0000000..097d425
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Installable.otf
Binary files differ
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/NeverEmbed.otf b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/NeverEmbed.otf
new file mode 100644
index 0000000..51ad025
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/NeverEmbed.otf
Binary files differ
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Printable.otf b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Printable.otf
new file mode 100644
index 0000000..ba78881
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/build-spec/orig/fonts/Printable.otf
Binary files differ
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/eval/desc b/t/recipes/checks/fonts/opentype/use-restricted/eval/desc
new file mode 100644
index 0000000..cc64d13
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/eval/desc
@@ -0,0 +1,3 @@
+Testname: use-restricted
+Check: fonts/opentype
+See-Also: Debian Bug#635068
diff --git a/t/recipes/checks/fonts/opentype/use-restricted/eval/hints b/t/recipes/checks/fonts/opentype/use-restricted/eval/hints
new file mode 100644
index 0000000..699ec02
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/use-restricted/eval/hints
@@ -0,0 +1,3 @@
+use-restricted (binary): opentype-font-prohibits-installable-embedding (preview/print only) [usr/share/fonts/Printable.otf]
+use-restricted (binary): opentype-font-prohibits-installable-embedding (never embed) [usr/share/fonts/NeverEmbed.otf]
+use-restricted (binary): opentype-font-prohibits-installable-embedding (edit only) [usr/share/fonts/Editable.otf]
diff --git a/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/debian/install b/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/debian/install
new file mode 100644
index 0000000..c7427e8
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/debian/install
@@ -0,0 +1 @@
+fonts/* /usr/share/fonts/
diff --git a/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/fill-values b/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/fill-values
new file mode 100644
index 0000000..d4cbe4d
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: wrong-filename
+Skeleton: upload-native
+Description: Installs an OpenType font with an incorrect file extension.
diff --git a/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/orig/fonts/IsOTF.ttf b/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/orig/fonts/IsOTF.ttf
new file mode 100644
index 0000000..5f02e7b
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/wrong-filename/build-spec/orig/fonts/IsOTF.ttf
Binary files differ
diff --git a/t/recipes/checks/fonts/opentype/wrong-filename/eval/desc b/t/recipes/checks/fonts/opentype/wrong-filename/eval/desc
new file mode 100644
index 0000000..cea1815
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/wrong-filename/eval/desc
@@ -0,0 +1,2 @@
+Testname: wrong-filename
+Check: fonts/opentype
diff --git a/t/recipes/checks/fonts/opentype/wrong-filename/eval/hints b/t/recipes/checks/fonts/opentype/wrong-filename/eval/hints
new file mode 100644
index 0000000..88c3e38
--- /dev/null
+++ b/t/recipes/checks/fonts/opentype/wrong-filename/eval/hints
@@ -0,0 +1 @@
+wrong-filename (binary): opentype-font-wrong-filename [usr/share/fonts/IsOTF.ttf]
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/control.in b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/control.in
new file mode 100644
index 0000000..41d290d
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: fonts
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: fonts-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/install b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/install
new file mode 100644
index 0000000..f589ca9
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/debian/install
@@ -0,0 +1 @@
+*.pfb usr/share/lintian/fonts/
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/fill-values b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/fill-values
new file mode 100644
index 0000000..d1f8dad
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-adobe-font
+Description: Test for adobe font license issues
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/Makefile b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/Makefile
new file mode 100644
index 0000000..6b48449
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/Makefile
@@ -0,0 +1,8 @@
+all: bad.pfb good.pfb badnocredit.pfb badwithadobecode.pfb
+
+%.pfb: %.raw
+ t1asm $< > $@
+
+clean:
+ rm -f *.pfb
+
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/bad.raw b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/bad.raw
new file mode 100644
index 0000000..37b5d60
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/bad.raw
@@ -0,0 +1,16 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: bad
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: nthykier,,,
+%Copyright: Created by nthykier,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% The statements below are here to trick Lintian...
+% Copyright (c) 1987-1990 Adobe Systems Incorporated.
+% All Rights Reserved.
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badnocredit.raw b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badnocredit.raw
new file mode 100644
index 0000000..b7db4d3
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badnocredit.raw
@@ -0,0 +1,15 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: badnocredit
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: roucaries.bastien,,,
+%Copyright: Created by roucaries.bastien,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% The code below is here to trick Lintian...
+trick { /UniqueID 6859 } def
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badwithadobecode.raw b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badwithadobecode.raw
new file mode 100644
index 0000000..4822d8d
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/badwithadobecode.raw
@@ -0,0 +1,17 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: badwithadobecode
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: roucaries.bastien,,,
+%Copyright: Created by roucaries.bastien,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% The code below is here to trick Lintian...
+% Copyright (c) 1987-1990 Adobe Systems Incorporated.
+% All Rights Reserved.
+trick { /startlock get exec } def
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/good.raw b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/good.raw
new file mode 100644
index 0000000..fd50247
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/build-spec/orig/good.raw
@@ -0,0 +1,15 @@
+%!PS-AdobeFont-1.0: Untitled1 001.000
+%%Title: good
+%Version: 001.000
+%%CreationDate: Mon Dec 10 21:21:58 2012
+%%Creator: nthykier,,,
+%Copyright: Created by nthykier,,, hand-crafted
+%%EndComments
+
+/RD{string currentfile exch readstring pop}executeonly def
+
+% This file has no license issues (bad.raw doesn't either, but
+% we pretend it does).
+
+2 index /CharStrings 2 dict dup begin
+
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/desc b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/desc
new file mode 100644
index 0000000..a4cef90
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-adobe-font
+Check: fonts/postscript/type1
diff --git a/t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/hints b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/hints
new file mode 100644
index 0000000..cce5753
--- /dev/null
+++ b/t/recipes/checks/fonts/postscript/type1/files-adobe-font/eval/hints
@@ -0,0 +1,3 @@
+fonts-files-adobe-font (binary): license-problem-font-adobe-copyrighted-fragment-no-credit [usr/share/lintian/fonts/badnocredit.pfb]
+fonts-files-adobe-font (binary): license-problem-font-adobe-copyrighted-fragment [usr/share/lintian/fonts/badwithadobecode.pfb]
+fonts-files-adobe-font (binary): license-problem-font-adobe-copyrighted-fragment [usr/share/lintian/fonts/bad.pfb]
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/build-spec/debian/install b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/debian/install
new file mode 100644
index 0000000..c7427e8
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/debian/install
@@ -0,0 +1 @@
+fonts/* /usr/share/fonts/
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/build-spec/fill-values b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/fill-values
new file mode 100644
index 0000000..6d3106c
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: use-restricted
+Skeleton: upload-native
+Description: Installs a TrueType font with a restricted license.
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Editable.ttf b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Editable.ttf
new file mode 100644
index 0000000..1c693cf
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Editable.ttf
Binary files differ
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Installable.ttf b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Installable.ttf
new file mode 100644
index 0000000..7c88f0a
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Installable.ttf
Binary files differ
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/NeverEmbed.ttf b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/NeverEmbed.ttf
new file mode 100644
index 0000000..69fcdf9
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/NeverEmbed.ttf
Binary files differ
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Printable.ttf b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Printable.ttf
new file mode 100644
index 0000000..0a2bdb3
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/build-spec/orig/fonts/Printable.ttf
Binary files differ
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/eval/desc b/t/recipes/checks/fonts/truetype/use-restricted/eval/desc
new file mode 100644
index 0000000..75281e4
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/eval/desc
@@ -0,0 +1,3 @@
+Testname: use-restricted
+Check: fonts/truetype
+See-Also: Debian Bug#635068
diff --git a/t/recipes/checks/fonts/truetype/use-restricted/eval/hints b/t/recipes/checks/fonts/truetype/use-restricted/eval/hints
new file mode 100644
index 0000000..27eedac
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/use-restricted/eval/hints
@@ -0,0 +1,3 @@
+use-restricted (binary): truetype-font-prohibits-installable-embedding (preview/print only) [usr/share/fonts/Printable.ttf]
+use-restricted (binary): truetype-font-prohibits-installable-embedding (never embed) [usr/share/fonts/NeverEmbed.ttf]
+use-restricted (binary): truetype-font-prohibits-installable-embedding (edit only) [usr/share/fonts/Editable.ttf]
diff --git a/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/debian/install b/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/debian/install
new file mode 100644
index 0000000..c7427e8
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/debian/install
@@ -0,0 +1 @@
+fonts/* /usr/share/fonts/
diff --git a/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/fill-values b/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/fill-values
new file mode 100644
index 0000000..f0d586a
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: wrong-filename
+Skeleton: upload-native
+Description: Installs a TrueType font with an incorrect file extension.
diff --git a/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/orig/fonts/IsTTF.otf b/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/orig/fonts/IsTTF.otf
new file mode 100644
index 0000000..da64930
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/wrong-filename/build-spec/orig/fonts/IsTTF.otf
Binary files differ
diff --git a/t/recipes/checks/fonts/truetype/wrong-filename/eval/desc b/t/recipes/checks/fonts/truetype/wrong-filename/eval/desc
new file mode 100644
index 0000000..44e0a57
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/wrong-filename/eval/desc
@@ -0,0 +1,2 @@
+Testname: wrong-filename
+Check: fonts/truetype
diff --git a/t/recipes/checks/fonts/truetype/wrong-filename/eval/hints b/t/recipes/checks/fonts/truetype/wrong-filename/eval/hints
new file mode 100644
index 0000000..bc955c2
--- /dev/null
+++ b/t/recipes/checks/fonts/truetype/wrong-filename/eval/hints
@@ -0,0 +1 @@
+wrong-filename (binary): truetype-font-wrong-filename [usr/share/fonts/IsTTF.otf]
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/clean b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/dirs b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/examples b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/install b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/links b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/manpages b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/rules b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/fill-values b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/--lzma b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/dir b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.5 b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/sudotest b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/types b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/eval/desc b/t/recipes/checks/foreign-operating-systems/files-general/eval/desc
new file mode 100644
index 0000000..5a8843a
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: foreign-operating-systems
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/foreign-operating-systems/files-general/eval/hints b/t/recipes/checks/foreign-operating-systems/files-general/eval/hints
new file mode 100644
index 0000000..264527f
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): windows-devel-file-in-package [usr/lib/foo/foo.vcproj]
diff --git a/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/debian/rules b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/debian/rules
new file mode 100644
index 0000000..506639f
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/debian/rules
@@ -0,0 +1,73 @@
+#!/usr/bin/make -f
+
+PKG :=$(shell dh_listpackages)
+SHARE:= debian/$(PKG)/usr/share
+DATA := $(SHARE)/$(PKG)
+DOC := $(SHARE)/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DOC) $(DATA)
+
+ # Vcs stuff
+ mkdir $(DATA)/.svn $(DATA)/.git
+ touch $(DATA)/.svn/file
+ touch $(DATA)/.git/file
+ touch $(DATA)/.gitignore
+ touch $(DATA)/.git_ignore
+ mkdir $(DATA)/sub-git1/
+ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz
+ touch $(DATA)/sub-git1/.gitattributes
+ touch $(DATA)/sub-git1/.gitmodules
+
+ touch $(DATA)/svn-commit-yeehaa.tmp
+ touch $(DATA)/svk-commit-yeehaa.tmp
+
+ # bts control dir
+ mkdir $(DATA)/.be
+ touch $(DATA)/.be/file
+
+ # macos stuff
+ touch $(DATA)/.DS_Store
+ touch $(DATA)/._stuff
+
+ # windows
+ touch $(DATA)/Thumbs.db
+
+ # Foreign READMEs
+ echo "Hallo World Mac" > $(DOC)/README.mac
+ echo "Hallo World Win" > $(DOC)/README.windows
+
+ # Linda override
+ mkdir -p $(SHARE)/linda/overrides
+ touch $(SHARE)/linda/overrides/$(PKG)
+
+ # CMake private files
+ mkdir -p $(SHARE)/cmake-3.1/Modules
+ touch $(SHARE)/cmake-3.1/FindFoo.cmake
+ touch $(SHARE)/cmake-3.1/Modules/FindVar.cmake
+
+ # Ignored Cargo sources
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/.gitignore
+ touch $(SHARE)/cargo/registry/crate-1.0.0/LICENSE
+ touch $(SHARE)/cargo/registry/crate-1.0.0/templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/foo_templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/foo_templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d
+ touch $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d/readme.tmpl
+ echo '#!/bin/sh' > $(SHARE)/cargo/registry/crate-1.0.0/test.sh
+ echo '#!/usr/bin/python' > $(SHARE)/cargo/registry/crate-1.0.0/test.py
+ chmod a+x $(SHARE)/cargo/registry/crate-1.0.0/test.py
+
+ # Documentation outside /usr/share/doc
+ touch $(DATA)/readme.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme_1.1.txt
+ touch $(DATA)/readme-1.1.txt
+ touch $(DATA)/readmefirst.txt
+ touch $(DATA)/readMesh_off.m # False-positive from #914500
diff --git a/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/fill-values b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/fill-values
new file mode 100644
index 0000000..b55ed53
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-package-contains-foo
+Description: Test tags about cruft in binary packages
diff --git a/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/desc b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/desc
new file mode 100644
index 0000000..a8a1acf
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-foo
+Check: foreign-operating-systems
diff --git a/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/hints b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/hints
new file mode 100644
index 0000000..145a4a5
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/files-package-contains-foo/eval/hints
@@ -0,0 +1,3 @@
+files-package-contains-foo (binary): windows-thumbnail-database-in-package [usr/share/files-package-contains-foo/Thumbs.db]
+files-package-contains-foo (binary): macos-resource-fork-file-in-package [usr/share/files-package-contains-foo/._stuff]
+files-package-contains-foo (binary): macos-ds-store-file-in-package [usr/share/files-package-contains-foo/.DS_Store]
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/control b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/fill-values b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/desc b/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/desc
new file mode 100644
index 0000000..fc5fc77
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: foreign-operating-systems
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/hints b/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/hints
new file mode 100644
index 0000000..b0118dd
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/hints
@@ -0,0 +1,3 @@
+filenames (binary): windows-thumbnail-database-in-package [usr/share/doc/filenames/Thumbs.db]
+filenames (binary): macos-resource-fork-file-in-package [usr/share/doc/filenames/._NEWS.Debian]
+filenames (binary): macos-ds-store-file-in-package [usr/share/doc/filenames/.DS_Store]
diff --git a/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/post-test b/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/foreign-operating-systems/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/control.in b/t/recipes/checks/games/files-games-section/build-spec/debian/control.in
new file mode 100644
index 0000000..897b19c
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/control.in
@@ -0,0 +1,50 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-both
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Conflicts: [% $source %]-good, [% $source %]-wrong, [% $source %]-no-games
+Description: [% $description %] (both)
+ Package has both regular binaries and games.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-good
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (good)
+ Games package in games section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-no-games
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (no games)
+ Games package without any games.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-wrong
+Section: devel
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Conflicts: [% $source %]-good
+Description: [% $description %] (wrong)
+ Games package in wrong section.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.install b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.install
new file mode 100644
index 0000000..86aecc7
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.install
@@ -0,0 +1,2 @@
+shell-blaster usr/bin
+shell-blaster usr/games
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.manpages b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.manpages
new file mode 100644
index 0000000..e4d1bd8
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-both.manpages
@@ -0,0 +1,2 @@
+shell-blaster.1
+shell-blaster.6
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.install b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.install
new file mode 100644
index 0000000..d10f2ef
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.install
@@ -0,0 +1 @@
+shell-blaster usr/games
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.manpages b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.manpages
new file mode 100644
index 0000000..835dfac
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-good.manpages
@@ -0,0 +1 @@
+shell-blaster.6
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.install b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.install
new file mode 100644
index 0000000..8b29e1f
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.install
@@ -0,0 +1 @@
+shell-blaster usr/bin
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.manpages b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.manpages
new file mode 100644
index 0000000..36e298a
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-no-games.manpages
@@ -0,0 +1 @@
+shell-blaster.1
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.install b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.install
new file mode 100644
index 0000000..d10f2ef
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.install
@@ -0,0 +1 @@
+shell-blaster usr/games
diff --git a/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.manpages b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.manpages
new file mode 100644
index 0000000..835dfac
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/debian/files-games-section-wrong.manpages
@@ -0,0 +1 @@
+shell-blaster.6
diff --git a/t/recipes/checks/games/files-games-section/build-spec/fill-values b/t/recipes/checks/games/files-games-section/build-spec/fill-values
new file mode 100644
index 0000000..f76f56b
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-games-section
+Section: games
+Description: Correct section for games packages
diff --git a/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster b/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster
new file mode 100755
index 0000000..48f8d5d
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "I'll be a game when I grow up!"
diff --git a/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.1 b/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.1
new file mode 100644
index 0000000..a8fe203
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.1
@@ -0,0 +1,8 @@
+.TH SHELL-BLASTER 1 "2008-12-30"
+.SH "NAME"
+shell\-blaster \- A simple shell non\-game
+.SH "SYNOPSIS"
+.B shell\-blaster
+.SH "DESCRIPTION"
+.B shell\-blaster
+wants to be a game but isn't yet.
diff --git a/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.6 b/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.6
new file mode 100644
index 0000000..9d6bcef
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/build-spec/orig/shell-blaster.6
@@ -0,0 +1,8 @@
+.TH SHELL-BLASTER 6 "2008-12-30"
+.SH "NAME"
+shell\-blaster \- A simple shell non\-game
+.SH "SYNOPSIS"
+.B shell\-blaster
+.SH "DESCRIPTION"
+.B shell\-blaster
+wants to be a game but isn't yet.
diff --git a/t/recipes/checks/games/files-games-section/eval/desc b/t/recipes/checks/games/files-games-section/eval/desc
new file mode 100644
index 0000000..9885711
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-games-section
+Check: games
diff --git a/t/recipes/checks/games/files-games-section/eval/hints b/t/recipes/checks/games/files-games-section/eval/hints
new file mode 100644
index 0000000..8a60579
--- /dev/null
+++ b/t/recipes/checks/games/files-games-section/eval/hints
@@ -0,0 +1,3 @@
+files-games-section-wrong (binary): game-outside-section
+files-games-section-no-games (binary): package-section-games-but-contains-no-game
+files-games-section-both (binary): package-section-games-but-has-usr-bin
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/clean b/t/recipes/checks/games/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/dirs b/t/recipes/checks/games/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/examples b/t/recipes/checks/games/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/install b/t/recipes/checks/games/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/links b/t/recipes/checks/games/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/manpages b/t/recipes/checks/games/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/games/files-general/build-spec/debian/rules b/t/recipes/checks/games/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/games/files-general/build-spec/fill-values b/t/recipes/checks/games/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/--lzma b/t/recipes/checks/games/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/dir b/t/recipes/checks/games/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/games/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/foo.5 b/t/recipes/checks/games/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/games/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/games/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/games/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/games/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/games/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/games/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/games/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/sudotest b/t/recipes/checks/games/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/games/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/games/files-general/build-spec/orig/types b/t/recipes/checks/games/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/games/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/games/files-general/eval/desc b/t/recipes/checks/games/files-general/eval/desc
new file mode 100644
index 0000000..fd78dac
--- /dev/null
+++ b/t/recipes/checks/games/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: games
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/games/files-general/eval/hints b/t/recipes/checks/games/files-general/eval/hints
new file mode 100644
index 0000000..b196c2a
--- /dev/null
+++ b/t/recipes/checks/games/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): global-data-in-games-directory [usr/share/games/icons/hicolor/22x22/lintian-22x22.png]
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/games/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/debian/control b/t/recipes/checks/games/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/games/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/games/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/fill-values b/t/recipes/checks/games/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/games/legacy-filenames/eval/desc b/t/recipes/checks/games/legacy-filenames/eval/desc
new file mode 100644
index 0000000..2c2eced
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: games
diff --git a/t/recipes/checks/games/legacy-filenames/eval/hints b/t/recipes/checks/games/legacy-filenames/eval/hints
new file mode 100644
index 0000000..f683489
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/eval/hints
@@ -0,0 +1,2 @@
+more-filename-games (binary): package-section-games-but-has-usr-bin
+filename-games (binary): package-section-games-but-contains-no-game
diff --git a/t/recipes/checks/games/legacy-filenames/eval/post-test b/t/recipes/checks/games/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/games/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/control.in b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/control.in
new file mode 100644
index 0000000..0c93dc6
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/control.in
@@ -0,0 +1,99 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: root
+Architecture: all
+Depends: ${misc:Depends}, c1-a, c1-c, c2-b
+Description: [% $description %] - root
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ root.
+
+Package: leaf
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - leaf
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ leaf.
+
+Package: disconnected
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - dis
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ disconnected.
+
+
+Package: c1-a
+Architecture: all
+Depends: ${misc:Depends}, c1-b, leaf
+Description: [% $description %] - c1-a
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ c1-a.
+
+Package: c1-b
+Architecture: all
+Depends: ${misc:Depends}, c1-c
+Description: [% $description %] - c1-b
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ c1-b.
+
+Package: c1-c
+Architecture: all
+Depends: ${misc:Depends}, c1-a, leaf
+Description: [% $description %] - c1-c
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ c1-c.
+
+Package: c2-a
+Architecture: all
+Depends: ${misc:Depends}, c2-b, c2-c, leaf
+Description: [% $description %] - c2-a
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ c2-a.
+
+Package: c2-b
+Architecture: all
+Depends: ${misc:Depends}, c2-a, c2-c
+Description: [% $description %] - c2-b
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ c2-b.
+
+Package: c2-c
+Architecture: all
+Depends: ${misc:Depends}, c2-a, c2-b, leaf
+Description: [% $description %] - c2-c
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ c2-c.
+
diff --git a/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/rules b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/rules
new file mode 100644
index 0000000..644131e
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdocs:
+ for P in $$(dh_listpackages) ; do \
+ dh_installdocs -p$$P some-doc.txt || exit 1 ;\
+ done
diff --git a/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/fill-values b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/fill-values
new file mode 100644
index 0000000..b8f1db5
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: group-checks-circular-deps
+Description: Test for circular dependencies
diff --git a/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/orig/some-doc.txt b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/orig/some-doc.txt
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-circular-deps/build-spec/orig/some-doc.txt
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/group-checks/group-checks-circular-deps/eval/desc b/t/recipes/checks/group-checks/group-checks-circular-deps/eval/desc
new file mode 100644
index 0000000..ad7cbe5
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-circular-deps/eval/desc
@@ -0,0 +1,2 @@
+Testname: group-checks-circular-deps
+Check: group-checks
diff --git a/t/recipes/checks/group-checks/group-checks-circular-deps/eval/hints b/t/recipes/checks/group-checks/group-checks-circular-deps/eval/hints
new file mode 100644
index 0000000..00c9bef
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-circular-deps/eval/hints
@@ -0,0 +1,2 @@
+group-checks-circular-deps (source): intra-source-package-circular-dependency c2-a c2-b c2-c
+group-checks-circular-deps (source): intra-source-package-circular-dependency c1-a c1-b c1-c
diff --git a/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/control.in b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/control.in
new file mode 100644
index 0000000..6491675
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: pkga
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - pkga
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ pkga.
+
+Package: pkgb
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - pkgb
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ pkgb.
diff --git a/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/rules b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/rules
new file mode 100644
index 0000000..8e256c8
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_install:
+ for P in $$(dh_listpackages) ; do \
+ dh_install -p$$P data-file usr/share/pkga/ || exit 1 ;\
+ done
diff --git a/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/fill-values b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/fill-values
new file mode 100644
index 0000000..52da7a4
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: group-checks-file-conflict
+Description: Test for overlapping files
diff --git a/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/orig/data-file b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/orig/data-file
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-file-conflict/build-spec/orig/data-file
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/group-checks/group-checks-file-conflict/eval/desc b/t/recipes/checks/group-checks/group-checks-file-conflict/eval/desc
new file mode 100644
index 0000000..eb49a80
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-file-conflict/eval/desc
@@ -0,0 +1,2 @@
+Testname: group-checks-file-conflict
+Check: group-checks
diff --git a/t/recipes/checks/group-checks/group-checks-file-conflict/eval/hints b/t/recipes/checks/group-checks/group-checks-file-conflict/eval/hints
new file mode 100644
index 0000000..e405cca
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-file-conflict/eval/hints
@@ -0,0 +1 @@
+group-checks-file-conflict (source): binaries-have-file-conflict pkga pkgb usr/share/pkga/data-file
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/control.in b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/control.in
new file mode 100644
index 0000000..5e2a616
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/control.in
@@ -0,0 +1,52 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: pkg-foreign
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - pkg-foreign
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Should have been Multi-arch foreign package.
+
+Package: pkg-same
+Architecture: any
+Depends: ${misc:Depends}, pkg-foreign
+Multi-Arch: same
+Description: [% $description %] - pkg-same
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Multi-arch same package.
+
+Package: pkg-dbg
+Section: debug
+Architecture: any
+Depends: ${misc:Depends}, pkg-same (= ${binary:Version}),
+ pkg-foreign (>= ${source:Version})
+Description: [% $description %] - pkg-dbg
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Multi-arch <none> debug package.
+
+Package: python3-pkg-dbg
+Section: debug
+Architecture: any
+Depends: ${misc:Depends}, pkg-same (= ${binary:Version}),
+ pkg-foreign (>= ${source:Version})
+Description: [% $description %] - python-pkg-dbg
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Multi-arch <none> Python "debug package" false positive.
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-dbg.install b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-dbg.install
new file mode 100644
index 0000000..fca7cfd
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-dbg.install
@@ -0,0 +1 @@
+usr/lib/debug/
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-foreign.docs b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-foreign.docs
new file mode 100644
index 0000000..ff0f331
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-foreign.docs
@@ -0,0 +1 @@
+some-doc.txt
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-same.install b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-same.install
new file mode 100644
index 0000000..a1157c9
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/pkg-same.install
@@ -0,0 +1,2 @@
+usr/lib/pkg-same/
+
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/python3-pkg-dbg.install b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/python3-pkg-dbg.install
new file mode 100644
index 0000000..ee57923
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/debian/python3-pkg-dbg.install
@@ -0,0 +1 @@
+usr/lib/debug/ usr/lib/python3
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/fill-values b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/fill-values
new file mode 100644
index 0000000..2828591
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: group-checks-multi-arch
+Description: Test for multi-arch issues
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/Makefile b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/Makefile
new file mode 100644
index 0000000..91d0c72
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/Makefile
@@ -0,0 +1,10 @@
+DATAFILE=data-$(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+all:
+ echo $(DATAFILE) > $(DATAFILE)
+
+install:
+ install -d $(DESTDIR)/usr/lib/pkg-same/ \
+ $(DESTDIR)/usr/lib/debug/pkg-same/
+ install -m 0644 $(DATAFILE) $(DESTDIR)/usr/lib/pkg-same/$(DATAFILE)
+ install -m 0644 $(DATAFILE) $(DESTDIR)/usr/lib/debug/pkg-same/$(DATAFILE)
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/some-doc.txt b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/some-doc.txt
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/build-spec/orig/some-doc.txt
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/eval/desc b/t/recipes/checks/group-checks/group-checks-multi-arch/eval/desc
new file mode 100644
index 0000000..2635c91
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/eval/desc
@@ -0,0 +1,2 @@
+Testname: group-checks-multi-arch
+Check: group-checks
diff --git a/t/recipes/checks/group-checks/group-checks-multi-arch/eval/hints b/t/recipes/checks/group-checks/group-checks-multi-arch/eval/hints
new file mode 100644
index 0000000..fefe252
--- /dev/null
+++ b/t/recipes/checks/group-checks/group-checks-multi-arch/eval/hints
@@ -0,0 +1,2 @@
+group-checks-multi-arch (source): dependency-is-not-multi-archified pkg-same depends on pkg-foreign (multi-arch: no)
+group-checks-multi-arch (source): debug-package-for-multi-arch-same-pkg-not-coinstallable pkg-dbg => pkg-same
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/control b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/rules b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/templates b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/fill-values b/t/recipes/checks/group-checks/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/group-checks/legacy-binary/eval/desc b/t/recipes/checks/group-checks/legacy-binary/eval/desc
new file mode 100644
index 0000000..c0ee3ea
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: group-checks
diff --git a/t/recipes/checks/group-checks/legacy-binary/eval/hints b/t/recipes/checks/group-checks/legacy-binary/eval/hints
new file mode 100644
index 0000000..08e8f0d
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (source): intra-source-package-circular-dependency binary binary-data
diff --git a/t/recipes/checks/group-checks/legacy-binary/eval/post-test b/t/recipes/checks/group-checks/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/eval/desc b/t/recipes/checks/group-checks/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..df22007
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: group-checks
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/eval/hints b/t/recipes/checks/group-checks/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..243db64
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz (source): binaries-have-file-conflict libbaz1 libbaz2-dev usr/lib/libbaz2.a
+libbaz (source): binaries-have-file-conflict libbaz1 libbaz1-dev usr/lib/ma-dir/perl/version/auto/Foo/Foo.so
diff --git a/t/recipes/checks/group-checks/legacy-libbaz/eval/post-test b/t/recipes/checks/group-checks/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/group-checks/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/debian/rules b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/debian/rules
new file mode 100755
index 0000000..0d87500
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_install:
+ install -d debian/huge-usr-share-percent/usr/lib/a
+ echo "Hallo World" > debian/huge-usr-share-percent/usr/lib/a/some-file
+ install -d debian/huge-usr-share-percent/usr/share/a
+ dd if=/dev/zero of=debian/huge-usr-share-percent/usr/share/a/zero \
+ bs=1024k count=4
diff --git a/t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/fill-values b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/fill-values
new file mode 100644
index 0000000..7aab793
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: huge-usr-share-percent
+Description: Check passing the percentage limit of /usr/share data
+Package-Architecture: any
diff --git a/t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/desc b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/desc
new file mode 100644
index 0000000..3679b18
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/desc
@@ -0,0 +1,2 @@
+Testname: huge-usr-share-percent
+Check: huge-usr-share
diff --git a/t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/hints b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/hints
new file mode 100644
index 0000000..293e79a
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/huge-usr-share-percent/eval/hints
@@ -0,0 +1 @@
+huge-usr-share-percent (binary): arch-dep-package-has-big-usr-share 4097kB 100%
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/control b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/rules b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/templates b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/fill-values b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/eval/desc b/t/recipes/checks/huge-usr-share/legacy-binary/eval/desc
new file mode 100644
index 0000000..824ca6e
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/eval/desc
@@ -0,0 +1,3 @@
+Testname: legacy-binary
+Test-Against: arch-dep-package-has-big-usr-share
+Check: huge-usr-share
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/eval/hints b/t/recipes/checks/huge-usr-share/legacy-binary/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/huge-usr-share/legacy-binary/eval/post-test b/t/recipes/checks/huge-usr-share/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/huge-usr-share/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/install b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/install
new file mode 100644
index 0000000..236c9ab
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/install
@@ -0,0 +1 @@
+images/* usr/share/images
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/rules b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/rules
new file mode 100755
index 0000000..45d7c5a
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ dh_install
+ find "$(tmp)/usr/share/images" -type f -name '*.gz' -exec gunzip {} \;
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/fill-values b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/fill-values
new file mode 100644
index 0000000..16bdc84
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: conflicting-image-names
+Description: Image files have names usually associated with other formats
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/LICENSE b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/LICENSE
new file mode 100644
index 0000000..0061fad
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/LICENSE
@@ -0,0 +1,8 @@
+On December 6, 2019, I took the image located at
+
+ /usr/share/icons/Adwaita/scalable/actions/pan-up-symbolic.svg
+
+and converted it into various other formats. My modifications
+are herewith in the public domain.
+
+Felix Lechner
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_gif.jpeg b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_gif.jpeg
new file mode 100644
index 0000000..18ffcb9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_gif.jpeg
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_jpg.png b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_jpg.png
new file mode 100644
index 0000000..bcc3bb2
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_jpg.png
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_pbm.tif b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_pbm.tif
new file mode 100644
index 0000000..0093c5c
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_pbm.tif
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_png.SVG b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_png.SVG
new file mode 100644
index 0000000..57472a3
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_png.SVG
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_svg.xpm b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_svg.xpm
new file mode 100644
index 0000000..f5700f9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_svg.xpm
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <path d="M13 10L8 5l-5 5z" fill="#474747"/>
+</svg>
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_tiff.gif b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_tiff.gif
new file mode 100644
index 0000000..054ffd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_tiff.gif
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_xpm.ppm.gz b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_xpm.ppm.gz
new file mode 100644
index 0000000..c33bcd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/is_xpm.ppm.gz
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg
new file mode 100644
index 0000000..f5700f9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <path d="M13 10L8 5l-5 5z" fill="#474747"/>
+</svg>
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.gif b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.gif
new file mode 100644
index 0000000..18ffcb9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.gif
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpg b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpg
new file mode 100644
index 0000000..bcc3bb2
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpg
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbm b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbm
new file mode 100644
index 0000000..0093c5c
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbm
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.png b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.png
new file mode 100644
index 0000000..57472a3
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.png
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiff b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiff
new file mode 100644
index 0000000..054ffd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiff
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gz b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gz
new file mode 100644
index 0000000..c33bcd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gz
Binary files differ
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/eval/desc b/t/recipes/checks/images/filenames/conflicting-image-names/eval/desc
new file mode 100644
index 0000000..5b4f76c
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/eval/desc
@@ -0,0 +1,2 @@
+Testname: conflicting-image-names
+Check: images/filenames
diff --git a/t/recipes/checks/images/filenames/conflicting-image-names/eval/hints b/t/recipes/checks/images/filenames/conflicting-image-names/eval/hints
new file mode 100644
index 0000000..73eda87
--- /dev/null
+++ b/t/recipes/checks/images/filenames/conflicting-image-names/eval/hints
@@ -0,0 +1,7 @@
+conflicting-image-names (binary): image-file-has-conflicting-name (is XPM) [usr/share/images/is_xpm.ppm]
+conflicting-image-names (binary): image-file-has-conflicting-name (is TIFF) [usr/share/images/is_tiff.gif]
+conflicting-image-names (binary): image-file-has-conflicting-name (is SVG) [usr/share/images/is_svg.xpm]
+conflicting-image-names (binary): image-file-has-conflicting-name (is PNG) [usr/share/images/is_png.SVG]
+conflicting-image-names (binary): image-file-has-conflicting-name (is Netpbm) [usr/share/images/is_pbm.tif]
+conflicting-image-names (binary): image-file-has-conflicting-name (is JPEG) [usr/share/images/is_jpg.png]
+conflicting-image-names (binary): image-file-has-conflicting-name (is GIF) [usr/share/images/is_gif.jpeg]
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/install b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/install
new file mode 100644
index 0000000..236c9ab
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/install
@@ -0,0 +1 @@
+images/* usr/share/images
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/rules b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/rules
new file mode 100755
index 0000000..45d7c5a
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ dh_install
+ find "$(tmp)/usr/share/images" -type f -name '*.gz' -exec gunzip {} \;
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/fill-values b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/fill-values
new file mode 100644
index 0000000..7b1b344
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: unrelated-image-names
+Description: Test with image files installed with uncommon names
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/LICENSE b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/LICENSE
new file mode 100644
index 0000000..0061fad
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/LICENSE
@@ -0,0 +1,8 @@
+On December 6, 2019, I took the image located at
+
+ /usr/share/icons/Adwaita/scalable/actions/pan-up-symbolic.svg
+
+and converted it into various other formats. My modifications
+are herewith in the public domain.
+
+Felix Lechner
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_gif b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_gif
new file mode 100644
index 0000000..18ffcb9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_gif
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_jpg b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_jpg
new file mode 100644
index 0000000..bcc3bb2
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_jpg
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_pbm b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_pbm
new file mode 100644
index 0000000..0093c5c
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_pbm
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_png b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_png
new file mode 100644
index 0000000..57472a3
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_png
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_svg b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_svg
new file mode 100644
index 0000000..f5700f9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <path d="M13 10L8 5l-5 5z" fill="#474747"/>
+</svg>
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_tiff b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_tiff
new file mode 100644
index 0000000..054ffd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_tiff
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_xpm.gz b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_xpm.gz
new file mode 100644
index 0000000..c33bcd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/is_xpm.gz
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg
new file mode 100644
index 0000000..f5700f9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <path d="M13 10L8 5l-5 5z" fill="#474747"/>
+</svg>
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.gif b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.gif
new file mode 100644
index 0000000..18ffcb9
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.gif
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpg b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpg
new file mode 100644
index 0000000..bcc3bb2
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.jpg
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbm b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbm
new file mode 100644
index 0000000..0093c5c
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.pbm
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.png b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.png
new file mode 100644
index 0000000..57472a3
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.png
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiff b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiff
new file mode 100644
index 0000000..054ffd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.tiff
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gz b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gz
new file mode 100644
index 0000000..c33bcd1
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/build-spec/orig/images/pan-up-symbolic.svg.xpm.gz
Binary files differ
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/eval/desc b/t/recipes/checks/images/filenames/unrelated-image-names/eval/desc
new file mode 100644
index 0000000..9842e0a
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/eval/desc
@@ -0,0 +1,2 @@
+Testname: unrelated-image-names
+Check: images/filenames
diff --git a/t/recipes/checks/images/filenames/unrelated-image-names/eval/hints b/t/recipes/checks/images/filenames/unrelated-image-names/eval/hints
new file mode 100644
index 0000000..73c3a8d
--- /dev/null
+++ b/t/recipes/checks/images/filenames/unrelated-image-names/eval/hints
@@ -0,0 +1,7 @@
+unrelated-image-names (binary): image-file-has-unexpected-name (is XPM) [usr/share/images/is_xpm]
+unrelated-image-names (binary): image-file-has-unexpected-name (is TIFF) [usr/share/images/is_tiff]
+unrelated-image-names (binary): image-file-has-unexpected-name (is SVG) [usr/share/images/is_svg]
+unrelated-image-names (binary): image-file-has-unexpected-name (is PNG) [usr/share/images/is_png]
+unrelated-image-names (binary): image-file-has-unexpected-name (is Netpbm) [usr/share/images/is_pbm]
+unrelated-image-names (binary): image-file-has-unexpected-name (is JPEG) [usr/share/images/is_jpg]
+unrelated-image-names (binary): image-file-has-unexpected-name (is GIF) [usr/share/images/is_gif]
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/images/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/images/files-foo-in-bar/eval/desc b/t/recipes/checks/images/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..6ee2f5a
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: images
diff --git a/t/recipes/checks/images/files-foo-in-bar/eval/hints b/t/recipes/checks/images/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..81386fa
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): image-file-in-usr-lib [usr/lib/files-foo-in-bar/bar.png]
diff --git a/t/recipes/checks/images/files-foo-in-bar/eval/post-test b/t/recipes/checks/images/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/images/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/desc b/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..9f282f4
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: images/thumbnails
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/hints b/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..98048d4
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/hints
@@ -0,0 +1,2 @@
+files-foo-in-bar (binary): package-contains-xvpics-dir [usr/share/doc/files-foo-in-bar/.xvpics/]
+files-foo-in-bar (binary): package-contains-thumbnails-dir [usr/share/doc/files-foo-in-bar/.thumbnails/]
diff --git a/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/post-test b/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/images/thumbnails/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/debian/install b/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/debian/install
new file mode 100644
index 0000000..97ff9db
--- /dev/null
+++ b/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/debian/install
@@ -0,0 +1 @@
+include/* /usr/include/custom/
diff --git a/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/fill-values b/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/fill-values
new file mode 100644
index 0000000..f3f83c9
--- /dev/null
+++ b/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: package-name-refined
+Skeleton: upload-native
+Description: Installs a config.h name that defines PACKAGE_NAME
diff --git a/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/orig/include/config.h b/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/orig/include/config.h
new file mode 100644
index 0000000..bfe5daa
--- /dev/null
+++ b/t/recipes/checks/includes/config-h/package-name-srtp/build-spec/orig/include/config.h
@@ -0,0 +1 @@
+#define PACKAGE_NAME "srtp"
diff --git a/t/recipes/checks/includes/config-h/package-name-srtp/eval/desc b/t/recipes/checks/includes/config-h/package-name-srtp/eval/desc
new file mode 100644
index 0000000..04897c3
--- /dev/null
+++ b/t/recipes/checks/includes/config-h/package-name-srtp/eval/desc
@@ -0,0 +1,2 @@
+Testname: package-name-srtp
+Check: includes/config-h
diff --git a/t/recipes/checks/includes/config-h/package-name-srtp/eval/hints b/t/recipes/checks/includes/config-h/package-name-srtp/eval/hints
new file mode 100644
index 0000000..2cac933
--- /dev/null
+++ b/t/recipes/checks/includes/config-h/package-name-srtp/eval/hints
@@ -0,0 +1 @@
+package-name-refined (binary): package-name-defined-in-config-h usr/include/custom/config.h
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in
new file mode 100644
index 0000000..ec0215d
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: mail
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: Package with daemon, but no init.d script
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install
new file mode 100644
index 0000000..db29ac8
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install
@@ -0,0 +1,3 @@
+# Actual content does not matter, Lintain checks only for file names.
+debian/bar.service /lib/systemd/system/
+debian/run /etc/sv/foo/
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules
new file mode 100755
index 0000000..2d33f6a
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values
new file mode 100644
index 0000000..3a32284
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: directory-in-etc-sv-directory-without-executable-run-script
+Description: Check for directories in /etc/sv missing run script
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc
new file mode 100644
index 0000000..c344c6d
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc
@@ -0,0 +1,2 @@
+Testname: directory-in-etc-sv-directory-without-executable-run-script
+Check: init-d
diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints
new file mode 100644
index 0000000..37e6f0f
--- /dev/null
+++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints
@@ -0,0 +1 @@
+directory-in-etc-sv-directory-without-executable-run-script (binary): directory-in-etc-sv-directory-without-executable-run-script etc/sv/foo/run [etc/sv/foo/]
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in b/t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in
new file mode 100644
index 0000000..80dcc37
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in
@@ -0,0 +1,61 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-bugs
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- bugs
+ Test some simple bugs in the check
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-interpreter-in-usr-dir
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- bad script interpreter
+ Test a check for a /usr dir interpreter used in an init script
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-sourcing-without-test
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- sourcing without test
+ Test a check for . /etc/default/foo without checking the existence of
+ the file beforehand.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-new-style
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- "new style"
+ New style of init.d. (#919604)
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init
new file mode 100644
index 0000000..55305ab
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-general-bugs
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+# start stop force-reload restart status
+
+. /lib/lsb/init-functions
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst
new file mode 100644
index 0000000..37a4b2a
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "configure" ] ; then
+ # duplicate call
+ update-rc.d init.d-general-bugs word > /dev/null
+ update-rc.d init.d-general-bugs anotherword
+fi
+
+# Actually debhelper will add a third one for us, but since the line
+# number might change with any debhelper release, we don't want to
+# rely on that debhelper only changing seldomly what replaces the
+# token and hence rather add our own second one above. The token below
+# is just to not trigger further lintian warnings.
+
+#DEBHELPER#
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init
new file mode 100644
index 0000000..ff7698c
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init
@@ -0,0 +1,14 @@
+#!/usr/bin/perl -w
+
+### BEGIN INIT INFO
+# Provides: init.d-general-interpreter-in-usr-dir
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start daemon at boot time
+# Description: Enable service provided by daemon.
+### END INIT INFO
+
+printf "start status stop reload restart force-reload\n";
+
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init
new file mode 100644
index 0000000..e815337
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init
@@ -0,0 +1,31 @@
+#!/usr/bin/env /lib/init/init-d-script
+### BEGIN INIT INFO
+# Provides: init.d-general-new-style
+# Should-Start: $syslog
+# Required-Start: $time $local_fs
+# Required-Stop: $time
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: init.d-general-new-style
+### END INIT INFO
+NAME='init.d-general-new-style'
+DESC='init.d-general-new-style description here'
+DAEMON=/usr/sbin/init.d-general-new-styl
+
+daemon_ () { /usr/bin/daemon --noconfig --name "${NAME}" "$@"; }
+if ! test -x '/usr/bin/daemon' ; then
+ log_failure_msg "install \`daemon' package to use ${NAME} script"
+ exit 1
+fi
+
+do_start_cmd_override () {
+ daemon_ "${DAEMON}"
+}
+
+do_stop_cmd_override () {
+ if daemon_ --running ; then
+ daemon_ --stop
+ fi
+}
+
+# vim: ft=sh
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init
new file mode 100644
index 0000000..7046ed9
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init
@@ -0,0 +1,52 @@
+#!/bin/sh -e
+
+### BEGIN INIT INFO
+# Provides: init.d-general-sourcing-without-test
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start daemon at boot time
+# Description: Enable service provided by daemon.
+### END INIT INFO
+
+echo start stop reload restart force-reload status
+
+. /lib/lsb/init-functions
+
+. /etc/default/rcS
+
+[ ! -f /etc/default/foo ] || . /etc/default/foo
+
+[ -f /etc/default/bar ] && . /etc/default/bar
+
+if [ -e /etc/default/locale ]; then
+ . /etc/default/locale
+fi
+
+if [ -f /etc/default/moo ]; then
+ . /etc/default/moo
+fi
+
+if [ -r /etc/default/tmpfs ]; then
+ . /etc/default/tmpfs
+fi
+
+PACKAGE=moo
+[ -f /etc/default/$PACKAGE ] && . /etc/default/$PACKAGE
+
+if [ -f /etc/default/$PACKAGE ]; then
+ . /etc/default/$PACKAGE
+fi
+
+if test -f /etc/default/$PACKAGE; then
+ . /etc/default/$PACKAGE
+fi
+
+# This is not sourcing without a test and shouldn't produce an error.
+if [ ! -f /etc/default/$PACKAGE ] ; then
+ # do something else
+ :
+else
+ . /etc/default/$PACKAGE
+fi
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default
new file mode 100644
index 0000000..c1d7f21
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default
@@ -0,0 +1,17 @@
+ENABLED="false"
+ENABLED=false
+DISABLED="true"
+DISABLED=true
+RUN="true"
+RUN=true
+PREFIXRUN="true"
+PREFIXRUN=true
+
+# ENABLED="false"
+# ENABLED=false
+# DISABLED="true"
+# DISABLED=true
+# RUN="true"
+# RUN=true
+# PREFIXRUN="true"
+# PREFIXRUN=true
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init
new file mode 100644
index 0000000..b3e8ae7
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: init.d-general
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/fill-values b/t/recipes/checks/init-d/init.d-general/build-spec/fill-values
new file mode 100644
index 0000000..e567c49
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: init.d-general
+Description: Test tags related to the init.d checks
diff --git a/t/recipes/checks/init-d/init.d-general/eval/desc b/t/recipes/checks/init-d/init.d-general/eval/desc
new file mode 100644
index 0000000..92fea72
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: init.d-general
+Check: init-d
diff --git a/t/recipes/checks/init-d/init.d-general/eval/hints b/t/recipes/checks/init-d/init.d-general/eval/hints
new file mode 100644
index 0000000..0084e65
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-general/eval/hints
@@ -0,0 +1,24 @@
+init.d-general-sourcing-without-test (binary): init.d-script-sourcing-without-test /etc/default/rcS [etc/init.d/init.d-general-sourcing-without-test:17]
+init.d-general-interpreter-in-usr-dir (binary): init.d-script-uses-usr-interpreter /usr/bin/perl [etc/init.d/init.d-general-interpreter-in-usr-dir:1]
+init.d-general-bugs (binary): init.d-script-does-not-implement-status-option [etc/init.d/init.d-general-bugs]
+init.d-general-bugs (binary): init.d-script-does-not-implement-required-option stop [etc/init.d/init.d-general-bugs]
+init.d-general-bugs (binary): init.d-script-does-not-implement-required-option start [etc/init.d/init.d-general-bugs]
+init.d-general-bugs (binary): init.d-script-does-not-implement-required-option restart [etc/init.d/init.d-general-bugs]
+init.d-general-bugs (binary): init.d-script-does-not-implement-required-option force-reload [etc/init.d/init.d-general-bugs]
+init.d-general-bugs (binary): duplicate-updaterc.d-calls-in-postinst init.d-general-bugs [postinst:8]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:8]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:7]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:6]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:5]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:4]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:3]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:2]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:1]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:17]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:16]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:15]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:14]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:13]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:12]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:11]
+init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:10]
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in
new file mode 100644
index 0000000..07eac24
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in
@@ -0,0 +1,90 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-parsing
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- headers parsing
+ This is a test package designed to exercise the parsing of init scripts
+ by Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-remote
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- using /usr files
+ This is a test package designed to exercise the checking of init scripts
+ by Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-length
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- breaking length assumptions
+ Test package designed to exercise the checking of init
+ scripts by Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular package.
+
+Package: [% $source %]-local
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- using /var files
+ This is another test package designed to exercise the checking of init
+ scripts by Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular package.
+
+Package: [% $source %]-missing
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- missing runlevels
+ This is yet another test package designed to exercise the checking of
+ init scripts by Lintian. It is part of the Lintian test suite and may
+ do very odd things. It should not be installed like a regular package.
+
+Package: [% $source %]-virtual
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- virtual facilities
+ Test package to exercise the virtual facilities in init.d scripts
+ checks by lintian. It is part of the Lintian test suite and may
+ do very odd things. It should not be installed like a regular package.
+
+Package: [% $source %]-all
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- all virtual facilities
+ Test package designed to exercise the checking of virtual all facilities
+ in init.d scripts checks by lintian.
+ It is part of the Lintian test suite and may
+ do very odd things. It should not be installed like a regular package.
+
+Package: [% $source %]-early-boot
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- false positive
+ This is yet another test package designed to exercise the checking of
+ init scripts by Lintian. It is part of the Lintian test suite and may
+ do very odd things. It should not be installed like a regular
+ package.
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init
new file mode 100644
index 0000000..c9097f0
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-all
+# Required-Start: $all
+# Should-Start: $all
+# Required-Stop: $all
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: Test script for all virtual facility
+# Description: The short description pretty much covers it : test $all virtual facility
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init
new file mode 100644
index 0000000..dcfa1c1
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-early-boot
+# Required-Start:
+# Required-Stop:
+# Default-Start: S
+# Default-Stop: 0 6
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init
new file mode 100644
index 0000000..e450395
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-length
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop: 0 1 2 6
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init
new file mode 100644
index 0000000..2f7049b
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-local
+# Required-Start:
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+exec >/var/log/foo.log
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init
new file mode 100644
index 0000000..4e60e54
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-missing
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 5
+# Default-Stop: 0 6
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init
new file mode 100644
index 0000000..188e1f1
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-parsing
+# Required-Start: $local_fs
+# Required-Stop:$local_fs
+# Default-Start: 0
+# Default-Stop: 0
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init
new file mode 100644
index 0000000..c0a131c
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-remote
+# Required-Start: $local_fs
+# Required-Stop:
+# Should-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+. /usr/share/foo/lib.sh
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init
new file mode 100644
index 0000000..ac98ae9
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-lsb-headers-virtual
+# Required-Start: $local_fs $something_that_doesnt_exist
+# Should-Start: $something_we_might_not_ship
+# Required-Stop: $all
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: Just a test script
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init
new file mode 100644
index 0000000..847885c
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: nothing $bad_facility
+# Required-Start: mountall networking sysklogd
+# Should-Start: portmap
+# Required-Stop: mountnfs
+# Default-Start: 0 6 X
+# Default-Stop: S Y 0 6
+# Short-Description: Do nothing at all
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values
new file mode 100644
index 0000000..0923808
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: init.d-lsb-headers
+Description: Test tags related to init script LSB headers
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/eval/desc b/t/recipes/checks/init-d/init.d-lsb-headers/eval/desc
new file mode 100644
index 0000000..9581842
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/eval/desc
@@ -0,0 +1,2 @@
+Testname: init.d-lsb-headers
+Check: init-d
diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/eval/hints b/t/recipes/checks/init-d/init.d-lsb-headers/eval/hints
new file mode 100644
index 0000000..8cfce94
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-lsb-headers/eval/hints
@@ -0,0 +1,28 @@
+init.d-lsb-headers-virtual (binary): init.d-script-depends-on-unknown-virtual-facility $something_that_doesnt_exist [etc/init.d/init.d-lsb-headers-virtual]
+init.d-lsb-headers-virtual (binary): init.d-script-depends-on-all-virtual-facility required-stop [etc/init.d/init.d-lsb-headers-virtual]
+init.d-lsb-headers-parsing (binary): init.d-script-starts-in-stop-runlevel 0 [etc/init.d/init.d-lsb-headers-parsing]
+init.d-lsb-headers-parsing (binary): init.d-script-possible-missing-stop 1 6 [etc/init.d/init.d-lsb-headers-parsing]
+init.d-lsb-headers-parsing (binary): init.d-script-has-conflicting-start-stop 0 [etc/init.d/init.d-lsb-headers-parsing]
+init.d-lsb-headers-missing (binary): init.d-script-possible-missing-stop 1 [etc/init.d/init.d-lsb-headers-missing]
+init.d-lsb-headers-missing (binary): init.d-script-missing-start 4 [etc/init.d/init.d-lsb-headers-missing]
+init.d-lsb-headers-missing (binary): init.d-script-missing-lsb-short-description [etc/init.d/init.d-lsb-headers-missing]
+init.d-lsb-headers-local (binary): init.d-script-missing-dependency-on-local_fs required-start [etc/init.d/init.d-lsb-headers-local]
+init.d-lsb-headers-all (binary): init.d-script-depends-on-all-virtual-facility should-start [etc/init.d/init.d-lsb-headers-all]
+init.d-lsb-headers-all (binary): init.d-script-depends-on-all-virtual-facility required-stop [etc/init.d/init.d-lsb-headers-all]
+init.d-lsb-headers-all (binary): init.d-script-depends-on-all-virtual-facility required-start [etc/init.d/init.d-lsb-headers-all]
+init.d-lsb-headers (binary): non-virtual-facility-in-initd-script sysklogd -> $syslog [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): non-virtual-facility-in-initd-script portmap -> $portmap [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): non-virtual-facility-in-initd-script networking -> $network [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): non-virtual-facility-in-initd-script mountnfs -> $remote_fs [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): non-virtual-facility-in-initd-script mountall -> $local_fs [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-starts-in-stop-runlevel 6 [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-starts-in-stop-runlevel 0 [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-provides-virtual-facility $bad_facility [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-possible-missing-stop 1 [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-has-duplicate-lsb-keyword short-description [etc/init.d/init.d-lsb-headers:13]
+init.d-lsb-headers (binary): init.d-script-has-conflicting-start-stop 6 [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-has-conflicting-start-stop 0 [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-has-bad-stop-runlevel Y [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-has-bad-start-runlevel X [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init.d-script-does-not-provide-itself [etc/init.d/init.d-lsb-headers]
+init.d-lsb-headers (binary): init-d-script-stops-in-s-runlevel [etc/init.d/init.d-lsb-headers]
diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init
new file mode 100644
index 0000000..90c5dc7
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init
@@ -0,0 +1,27 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+ set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides: init.d-script-contains-skeleton-template-content
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d. This example start a
+# single forking daemon capable of writing a pid
+# file. To get other behavoirs, implemend
+# do_start(), do_stop() or other functions to
+# override the defaults in /lib/init/init-d-script.
+### END INIT INFO
+
+# Author: Foo Bar <foobar@baz.org>
+#
+# Please remove the "Author" lines above and replace them
+# with your own name if you copy and modify this script.
+
+DESC="Description of the service"
+DAEMON=/usr/sbin/daemonexecutablename
diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values
new file mode 100644
index 0000000..f0ac8fa
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: init.d-script-contains-skeleton-template-content
+Description: Test for scripts using the /etc/init.d/skeleton template
diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc
new file mode 100644
index 0000000..41a721e
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc
@@ -0,0 +1,2 @@
+Testname: init.d-script-contains-skeleton-template-content
+Check: init-d
diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints
new file mode 100644
index 0000000..963590d
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints
@@ -0,0 +1 @@
+init.d-script-contains-skeleton-template-content (binary): init.d-script-contains-skeleton-template-content [etc/init.d/init.d-script-contains-skeleton-template-content:23]
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install
new file mode 100644
index 0000000..2d8e757
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install
@@ -0,0 +1,3 @@
+foo.in /etc/init.d/
+README /etc/init.d/
+skeleton /etc/init.d/
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links
new file mode 100644
index 0000000..a3bfd32
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links
@@ -0,0 +1 @@
+etc/init.d/foo etc/init.d/bar
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules
new file mode 100755
index 0000000..cacd977
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod -x debian/init.d-script-registration/etc/init.d/README
+ chmod -x debian/init.d-script-registration/etc/init.d/skeleton
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values b/t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values
new file mode 100644
index 0000000..4ee8bc0
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: init.d-script-registration
+Description: Test tags related to the registration of init scripts
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README
new file mode 100644
index 0000000..09dd11b
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README
@@ -0,0 +1 @@
+Just a dummy file (normally with instructions), not an init script at all!
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in
new file mode 100644
index 0000000..9445298
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in
@@ -0,0 +1,18 @@
+#!/bin/sh -e
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ ;;
+ stop)
+ ;;
+ reload)
+ ;;
+ restart|force-reload)
+ ;;
+ status)
+ ;;
+ *)
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton
new file mode 100644
index 0000000..5984f06
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton
@@ -0,0 +1,2 @@
+The skeleton file looks like an init script, but we don't want to check it
+like an init script.
diff --git a/t/recipes/checks/init-d/init.d-script-registration/eval/desc b/t/recipes/checks/init-d/init.d-script-registration/eval/desc
new file mode 100644
index 0000000..611bad5
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/eval/desc
@@ -0,0 +1,2 @@
+Testname: init.d-script-registration
+Check: init-d
diff --git a/t/recipes/checks/init-d/init.d-script-registration/eval/hints b/t/recipes/checks/init-d/init.d-script-registration/eval/hints
new file mode 100644
index 0000000..cc784f9
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-script-registration/eval/hints
@@ -0,0 +1,3 @@
+init.d-script-registration (binary): script-in-etc-init.d-not-registered-via-update-rc.d [etc/init.d/foo.in]
+init.d-script-registration (binary): script-in-etc-init.d-not-registered-via-update-rc.d [etc/init.d/bar]
+init.d-script-registration (binary): init.d-script-missing-lsb-section [etc/init.d/foo.in]
diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links
new file mode 100644
index 0000000..2fe7261
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links
@@ -0,0 +1,2 @@
+/lib/init/upstart-job etc/init.d/lintian
+/lib/init/upstart-job etc/init.d/lintian-unreg
diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst
new file mode 100755
index 0000000..ed6bc65
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -e
+update-rc.d lintian defaults >/dev/null
+#DEBHELPER#
diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm
new file mode 100755
index 0000000..4bf5ee6
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+if [ "$1" = purse ] ; then
+ update-rc.d lintian remove >/dev/null
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values b/t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values
new file mode 100644
index 0000000..f6ac70a
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: init.d-symlink
+Description: Check proper handling of symlinked init scripts
diff --git a/t/recipes/checks/init-d/init.d-symlink/eval/desc b/t/recipes/checks/init-d/init.d-symlink/eval/desc
new file mode 100644
index 0000000..5f98c29
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-symlink/eval/desc
@@ -0,0 +1,5 @@
+Testname: init.d-symlink
+Test-Against:
+ init.d-script-not-included-in-package
+ init.d-script-not-marked-as-conffile
+Check: init-d
diff --git a/t/recipes/checks/init-d/init.d-symlink/eval/hints b/t/recipes/checks/init-d/init.d-symlink/eval/hints
new file mode 100644
index 0000000..8d92c7c
--- /dev/null
+++ b/t/recipes/checks/init-d/init.d-symlink/eval/hints
@@ -0,0 +1 @@
+init.d-symlink (binary): upstart-job-in-etc-init.d-not-registered-via-update-rc.d [etc/init.d/lintian-unreg]
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..6386459
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,3 @@
+Testname: legacy-maintainer-scripts
+Test-Against: init.d-script-not-marked-as-conffile
+Check: init-d
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..a988728
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,6 @@
+maintainer-scripts (binary): prerm-calls-updaterc.d foo [prerm:42]
+maintainer-scripts (binary): preinst-calls-updaterc.d bar defaults [preinst:4]
+maintainer-scripts (binary): postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/foo [postrm]
+maintainer-scripts (binary): postrm-contains-additional-updaterc.d-calls etc/init.d/bar [postrm]
+maintainer-scripts (binary): output-of-updaterc.d-not-redirected-to-dev-null bar [postrm:27]
+maintainer-scripts (binary): init.d-script-not-included-in-package etc/init.d/foo
diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values b/t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build b/t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/init-d/legacy-scripts/eval/desc b/t/recipes/checks/init-d/legacy-scripts/eval/desc
new file mode 100644
index 0000000..70aec81
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: init-d
diff --git a/t/recipes/checks/init-d/legacy-scripts/eval/hints b/t/recipes/checks/init-d/legacy-scripts/eval/hints
new file mode 100644
index 0000000..8b3fba8
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/eval/hints
@@ -0,0 +1,21 @@
+scripts (binary): init.d-script-not-marked-as-conffile etc/init.d/skeleton
+scripts (binary): init.d-script-missing-lsb-short-description [etc/init.d/lsb-other]
+scripts (binary): init.d-script-missing-lsb-section [etc/init.d/no-lsb]
+scripts (binary): init.d-script-missing-lsb-keyword required-start [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-has-unterminated-lsb-section [etc/init.d/lsb-broken:15]
+scripts (binary): init.d-script-has-unknown-lsb-keyword foo [etc/init.d/lsb-broken:14]
+scripts (binary): init.d-script-has-duplicate-lsb-section [etc/init.d/lsb-broken:19]
+scripts (binary): init.d-script-has-conflicting-start-stop 1 [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-has-bad-stop-runlevel X [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-has-bad-lsb-line [etc/init.d/lsb-broken:9]
+scripts (binary): init.d-script-has-bad-lsb-line [etc/init.d/lsb-broken:4]
+scripts (binary): init.d-script-does-not-provide-itself [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/skeleton]
+scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/no-lsb]
+scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/lsb-other]
+scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-does-not-implement-required-option restart [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-does-not-implement-required-option force-reload [etc/init.d/lsb-broken]
+scripts (binary): init-d-script-stops-in-s-runlevel [etc/init.d/skeleton]
+scripts (binary): init-d-script-stops-in-s-runlevel [etc/init.d/lsb-broken]
+scripts (binary): duplicate-updaterc.d-calls-in-postrm lsb-other [postrm:8]
diff --git a/t/recipes/checks/init-d/legacy-scripts/eval/post-test b/t/recipes/checks/init-d/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/init-d/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config
new file mode 100644
index 0000000..29abeba
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config
@@ -0,0 +1,3 @@
+#!/usr/bin/python
+
+# I use python, but that's not what I'm supposed to be allowed to use
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..de4161e
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/config debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..6130446
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: init-d/maintainer-script
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..13ac681
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1 @@
+maintainer-scripts (binary): maintainer-script-calls-init-script-directly [prerm:55]
diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install
new file mode 100644
index 0000000..31e3a9e
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install
@@ -0,0 +1,4 @@
+bad /etc/cron.daily
+other-action /etc/cron.daily
+test-first /etc/cron.daily
+self-invoke /etc/init.d
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst
new file mode 100644
index 0000000..3feaa42
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+
+update-rc.d self-invoke defaults >/dev/null
+/etc/init.d/self-invoke start
+
+#DEBHELPER#
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm
new file mode 100644
index 0000000..acba064
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+if [ "remove" = "$1" ] ; then
+ update-rc.d self-invoke remove >/dev/null
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values
new file mode 100644
index 0000000..e5cb95f
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-calls-init-script
+Description: Test proper use of invoke-rc.d
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad
new file mode 100755
index 0000000..86c80a7
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad
@@ -0,0 +1,2 @@
+#!/bin/sh
+/etc/init.d/ntp restart
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action
new file mode 100755
index 0000000..cd58f75
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action
@@ -0,0 +1,3 @@
+#!/bin/sh
+# Only supported invoke-rc.d actions are required to go through invoke-rc.d.
+/etc/init.d/foo frobnicate-the-bazerator
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke
new file mode 100755
index 0000000..048f01f
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke
@@ -0,0 +1,30 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: self-invoke
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Test init script
+# Description: Test init script.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ :
+ ;;
+ stop)
+ :
+ ;;
+ restart)
+ /etc/init.d/self-invoke start
+ ;;
+ status)
+ :
+ ;;
+ force-reload)
+ :
+ ;;
+esac
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first
new file mode 100755
index 0000000..5019218
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first
@@ -0,0 +1,6 @@
+#!/bin/sh
+if which invoke-rc.d >/dev/null 2>&1 ; then
+ invoke-rc.d ntp restart
+else
+ /etc/init.d/ntp restart
+fi
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc
new file mode 100644
index 0000000..4754f9c
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-calls-init-script
+Check: init-d/maintainer-script
+See-Also:
+ Bug#381485
diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints
new file mode 100644
index 0000000..1101108
--- /dev/null
+++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints
@@ -0,0 +1 @@
+scripts-calls-init-script (binary): maintainer-script-calls-init-script-directly [postinst:5]
diff --git a/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/debian/install b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/debian/install
new file mode 100644
index 0000000..73a6d47
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/debian/install
@@ -0,0 +1 @@
+fortran/* usr/lib/fortran/
diff --git a/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/fill-values b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/fill-values
new file mode 100644
index 0000000..ad604ba
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: missing-prerequisite-for-module
+Skeleton: upload-native
+Description: Tests missing a prerequisite for GFORTRAN modules
diff --git a/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/orig/fortran/mpi.mod b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/orig/fortran/mpi.mod
new file mode 100755
index 0000000..2657e91
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/build-spec/orig/fortran/mpi.mod
Binary files differ
diff --git a/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/desc b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/desc
new file mode 100644
index 0000000..84f5dc0
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/desc
@@ -0,0 +1,5 @@
+Testname: missing-prerequisite-for-module
+Check: languages/fortran/gfortran
+See-Also: Debian Bug #796352,
+ Debian Bug #714730,
+ https://salsa.debian.org/science-team/dh-fortran-mod/blob/debian/master/dh_fortran_mod.in
diff --git a/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/hints b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/hints
new file mode 100644
index 0000000..7777150
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/missing-prerequisite-for-module/eval/hints
@@ -0,0 +1 @@
+missing-prerequisite-for-module (binary): missing-prerequisite-for-gfortran-module [usr/lib/fortran/mpi.mod]
diff --git a/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/debian/install b/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/debian/install
new file mode 100644
index 0000000..73a6d47
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/debian/install
@@ -0,0 +1 @@
+fortran/* usr/lib/fortran/
diff --git a/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/fill-values b/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/fill-values
new file mode 100644
index 0000000..ad39210
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: no-module-version
+Skeleton: upload-native
+Description: GFORTRAN module missing a gfortran module version
diff --git a/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/orig/fortran/mpi.mod b/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/orig/fortran/mpi.mod
new file mode 100755
index 0000000..8367a24
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/no-module-version/build-spec/orig/fortran/mpi.mod
Binary files differ
diff --git a/t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/desc b/t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/desc
new file mode 100644
index 0000000..7d7c555
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/desc
@@ -0,0 +1,5 @@
+Testname: no-module-version
+Check: languages/fortran/gfortran
+See-Also: Debian Bug #796352,
+ Debian Bug #714730,
+ https://salsa.debian.org/science-team/dh-fortran-mod/blob/debian/master/dh_fortran_mod.in
diff --git a/t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/hints b/t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/hints
new file mode 100644
index 0000000..537b4bd
--- /dev/null
+++ b/t/recipes/checks/languages/fortran/gfortran/no-module-version/eval/hints
@@ -0,0 +1 @@
+no-module-version (binary): gfortran-module-does-not-declare-version [usr/lib/fortran/mpi.mod]
diff --git a/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/fill-values b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/fill-values
new file mode 100644
index 0000000..20669e9
--- /dev/null
+++ b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-golang
+Extra-Build-Depends: golang-go (>= 2:1.1.1-4)
+Description: Misc errors related to golang binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile
new file mode 100644
index 0000000..f04b342
--- /dev/null
+++ b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile
@@ -0,0 +1,16 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o basic.static basic.c
+
+install:
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -m 755 basic.static $(DESTDIR)/usr/lib/foo/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/basic.c b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/languages/golang/built-using/binaries-golang/eval/desc b/t/recipes/checks/languages/golang/built-using/binaries-golang/eval/desc
new file mode 100644
index 0000000..af9fa03
--- /dev/null
+++ b/t/recipes/checks/languages/golang/built-using/binaries-golang/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-golang
+Check: languages/golang/built-using
diff --git a/t/recipes/checks/languages/golang/built-using/binaries-golang/eval/hints b/t/recipes/checks/languages/golang/built-using/binaries-golang/eval/hints
new file mode 100644
index 0000000..52f68b9
--- /dev/null
+++ b/t/recipes/checks/languages/golang/built-using/binaries-golang/eval/hints
@@ -0,0 +1 @@
+binaries-golang (source): missing-built-using-field-for-golang-package (in section for binaries-golang) [debian/control:10]
diff --git a/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/fill-values b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/fill-values
new file mode 100644
index 0000000..20669e9
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-golang
+Extra-Build-Depends: golang-go (>= 2:1.1.1-4)
+Description: Misc errors related to golang binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile
new file mode 100644
index 0000000..f04b342
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile
@@ -0,0 +1,16 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o basic.static basic.c
+
+install:
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -m 755 basic.static $(DESTDIR)/usr/lib/foo/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/basic.c b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/languages/golang/import-path/binaries-golang/eval/desc b/t/recipes/checks/languages/golang/import-path/binaries-golang/eval/desc
new file mode 100644
index 0000000..17b4d64
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/binaries-golang/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-golang
+Check: languages/golang/import-path
diff --git a/t/recipes/checks/languages/golang/import-path/binaries-golang/eval/hints b/t/recipes/checks/languages/golang/import-path/binaries-golang/eval/hints
new file mode 100644
index 0000000..7886d2b
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/binaries-golang/eval/hints
@@ -0,0 +1 @@
+binaries-golang (source): missing-xs-go-import-path-for-golang-package
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install
new file mode 100644
index 0000000..c07a6cb
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control-file-golang-built-using.install
@@ -0,0 +1 @@
+static /usr/lib/foo/
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control.in b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control.in
new file mode 100644
index 0000000..d060140
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/debian/control.in
@@ -0,0 +1,41 @@
+Source: [% $source %]
+Section: net
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Build-Depends: [% $build_depends %],
+ golang-go (>= 2:1.1.1-4)
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Built-Using: ${misc:Built-Using}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dev
+Architecture: all
+Depends: ${misc:Depends}
+Built-Using: ${misc:Built-Using}
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source.
+
+Package: [% $source %]-clean-dev
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (clean dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source, without a built-using tag.
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/fill-values b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/fill-values
new file mode 100644
index 0000000..2c9dd7d
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: control-file-golang-built-using
+Description: False-positive test for Built-Using field
+Package-Architecture: any
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile
new file mode 100644
index 0000000..6047afb
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o static basic.c
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/basic.c b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/desc b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/desc
new file mode 100644
index 0000000..e0f3c0f
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-file-golang-built-using
+Check: languages/golang/import-path
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/hints b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/hints
new file mode 100644
index 0000000..93f0a70
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/eval/hints
@@ -0,0 +1 @@
+control-file-golang-built-using (source): missing-xs-go-import-path-for-golang-package
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install
new file mode 100644
index 0000000..0ba75d6
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control-file-golang-xs-go-import-path.install
@@ -0,0 +1 @@
+static usr/lib/foo/
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control.in b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control.in
new file mode 100644
index 0000000..0fafdb5
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/debian/control.in
@@ -0,0 +1,41 @@
+Source: [% $source %]
+Section: net
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Build-Depends: [% $build_depends %],
+ golang-go (>= 2:1.1.1-4)
+XS-Go-Import-Path: github.com/Debian/lintian-test-package
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Built-Using: ${misc:Built-Using}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dev
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source.
+
+Package: [% $source %]-clean-dev
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (clean dev)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains the source, without a built-using tag.
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/fill-values b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/fill-values
new file mode 100644
index 0000000..130e255
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: control-file-golang-xs-go-import-path
+Description: False-positive test for XS-Go-Import field
+Package-Architecture: any
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
new file mode 100644
index 0000000..6047afb
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o static basic.c
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/basic.c b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/desc b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/desc
new file mode 100644
index 0000000..3281454
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-file-golang-xs-go-import-path
+Check: languages/golang/import-path
+Test-Against:
+ missing-xs-go-import-path-for-golang-package
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/hints b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/control.in b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/control.in
new file mode 100644
index 0000000..ba62050
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: java
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-java
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/libfoo-java.install b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/libfoo-java.install
new file mode 100644
index 0000000..c5226d3
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/debian/libfoo-java.install
@@ -0,0 +1,3 @@
+mini.class usr/share/java/foo/
+mini.class usr/share/java/WEB-INF
+not-a-class-file.class usr/share/java/foo
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/fill-values b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/fill-values
new file mode 100644
index 0000000..b9ec9d6
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-java-classfiles
+Description: Test Java classfile related tags
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/mini.class b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/mini.class
new file mode 100644
index 0000000..0206c61
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/mini.class
Binary files differ
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/not-a-class-file.class b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/not-a-class-file.class
new file mode 100644
index 0000000..cc63a04
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/build-spec/orig/not-a-class-file.class
@@ -0,0 +1 @@
+This is not a Java .class file.
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/desc b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/desc
new file mode 100644
index 0000000..6e101fa
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-java-classfiles
+Check: languages/java/bytecode
diff --git a/t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/hints b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/hints
new file mode 100644
index 0000000..7f3a686
--- /dev/null
+++ b/t/recipes/checks/languages/java/bytecode/files-java-classfiles/eval/hints
@@ -0,0 +1 @@
+libfoo-java (binary): package-installs-java-bytecode [usr/share/java/foo/mini.class]
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/debian/control.in b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/control.in
new file mode 100644
index 0000000..a3f96c7
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], javahelper, default-jdk-headless | default-jdk
+Rules-Requires-Root: no
+
+Package: libtest-java
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. First part.
+ .
+ This package should not be installed.
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/debian/javabuild b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/javabuild
new file mode 100644
index 0000000..f13db32
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/javabuild
@@ -0,0 +1 @@
+test.jar src
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/debian/libtest-java.jlibs b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/libtest-java.jlibs
new file mode 100644
index 0000000..867ff3b
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/libtest-java.jlibs
@@ -0,0 +1,2 @@
+testa.jar
+testb.jar
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/debian/rules b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/rules
new file mode 100755
index 0000000..7e46dd0
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+%:
+ dh $@ --with javahelper
+
+override_jh_build:
+ jh_build --javacopts='-target 1.7' --javacopts='-source 1.7'
+ unzip test.jar
+ # Unknown class version
+ perl -i -pe 's/^(\xCA\xFE\xBA\xBE...)./$$1\x2A/' org/debian/lintian/TestA.class
+ # Java19 (unsupported)
+ perl -i -pe 's/^(\xCA\xFE\xBA\xBE...)./$$1\x3F/' org/debian/lintian/TestB.class
+ # Put them in separate Jars because Lintian stops when the first
+ # "unknown class format" is seen
+ zip -r testa.jar META-INF/ org/debian/lintian/TestA.class
+ zip -r testb.jar META-INF/ org/debian/lintian/TestB.class
+
+override_dh_auto_clean:
+ rm -fr META-INF/ org/
+ rm -f *.jar
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/fill-values b/t/recipes/checks/languages/java/java-class-format/build-spec/fill-values
new file mode 100644
index 0000000..856dd16
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: java-class-format
+Skeleton: upload-non-native
+Package-Architecture: all
+Description: Various checks for Java Class format
+Section: java
+Extra-Build-Depends: javahelper, default-jdk
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestA.java b/t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestA.java
new file mode 100644
index 0000000..fa9bad9
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestA.java
@@ -0,0 +1,8 @@
+package org.debian.lintian;
+
+/**
+ A neat empty useless class.
+ */
+public class TestA {
+ // An empty class should do.
+};
diff --git a/t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestB.java b/t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestB.java
new file mode 100644
index 0000000..eca69aa
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/build-spec/orig/src/org/debian/lintian/TestB.java
@@ -0,0 +1,8 @@
+package org.debian.lintian;
+
+/**
+ A neat empty useless class.
+ */
+public class TestB {
+ // An empty class should do.
+};
diff --git a/t/recipes/checks/languages/java/java-class-format/eval/desc b/t/recipes/checks/languages/java/java-class-format/eval/desc
new file mode 100644
index 0000000..c69ca55
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/eval/desc
@@ -0,0 +1,2 @@
+Testname: java-class-format
+Check: languages/java
diff --git a/t/recipes/checks/languages/java/java-class-format/eval/hints b/t/recipes/checks/languages/java/java-class-format/eval/hints
new file mode 100644
index 0000000..5969a6b
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-class-format/eval/hints
@@ -0,0 +1,2 @@
+libtest-java (binary): unknown-java-class-version org/debian/lintian/TestA.class -> 42 [usr/share/java/testa-1.0.jar]
+libtest-java (binary): incompatible-java-bytecode-format Java19 version (Class format: 63)
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/binary-using-java.jlibs b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/binary-using-java.jlibs
new file mode 100644
index 0000000..5e5f31e
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/binary-using-java.jlibs
@@ -0,0 +1 @@
+cp-missing-2.jar
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/control.in b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/control.in
new file mode 100644
index 0000000..cc8ad52
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/control.in
@@ -0,0 +1,38 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], javahelper (>= 0.32~), default-jdk-headlesss | default-jdk
+Rules-Requires-Root: no
+
+Package: libcp-missing-java
+Architecture: all
+Depends: ${misc:Depends}, libdepends-java
+Description: [% $description %] - missing
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. This package should not be
+ installed.
+ .
+ Test for missing classpaths.
+
+Package: libcp-relative-java
+Architecture: all
+Depends: ${misc:Depends}, libdepends-java
+Description: [% $description %] - relative
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. This package should not be
+ installed.
+ .
+ Test for relative classpaths.
+
+
+Package: binary-using-java
+Architecture: all
+Depends: ${misc:Depends}, libdepends-java
+Description: [% $description %] - binary
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. This package should not be
+ installed.
+ .
+ Test for classpaths in binary.
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/javabuild b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/javabuild
new file mode 100644
index 0000000..cdcc483
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/javabuild
@@ -0,0 +1,2 @@
+cp-missing.jar src
+cp-relative.jar src
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-missing-java.jlibs b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-missing-java.jlibs
new file mode 100644
index 0000000..702a7ca
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-missing-java.jlibs
@@ -0,0 +1 @@
+cp-missing.jar
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.jlibs b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.jlibs
new file mode 100644
index 0000000..4f2e007
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.jlibs
@@ -0,0 +1 @@
+cp-relative.jar
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.manifest b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.manifest
new file mode 100644
index 0000000..c060eca
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/libcp-relative-java.manifest
@@ -0,0 +1,2 @@
+usr/share/java/cp-relative.jar:
+ Class-Path: obviously-relative/stuff.jar
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/debian/rules b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/rules
new file mode 100755
index 0000000..df7aa48
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with javahelper
+
+override_jh_build:
+ jh_build --javacopts='-target 1.7' --javacopts='-source 1.7'
+ cp cp-missing.jar cp-missing-2.jar
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/fill-values b/t/recipes/checks/languages/java/java-classpath/build-spec/fill-values
new file mode 100644
index 0000000..91c9f1c
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: java-classpath
+Skeleton: upload-non-native
+Description: Various checks about JAR files
+Author: Vincent Fourmond <fourmond@debian.org>
+Section: java
+Extra-Build-Depends: javahelper, default-jdk
diff --git a/t/recipes/checks/languages/java/java-classpath/build-spec/orig/src/org/debian/lintian/TestA.java b/t/recipes/checks/languages/java/java-classpath/build-spec/orig/src/org/debian/lintian/TestA.java
new file mode 100644
index 0000000..dacb2f2
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/build-spec/orig/src/org/debian/lintian/TestA.java
@@ -0,0 +1,8 @@
+package org.debian.lintian;
+
+/**
+ A neat empty useless class.
+ */
+public class TestA {
+ // An empty class should do.
+}; \ No newline at end of file
diff --git a/t/recipes/checks/languages/java/java-classpath/eval/desc b/t/recipes/checks/languages/java/java-classpath/eval/desc
new file mode 100644
index 0000000..7cb903d
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/eval/desc
@@ -0,0 +1,2 @@
+Testname: java-classpath
+Check: languages/java
diff --git a/t/recipes/checks/languages/java/java-classpath/eval/hints b/t/recipes/checks/languages/java/java-classpath/eval/hints
new file mode 100644
index 0000000..6903914
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-classpath/eval/hints
@@ -0,0 +1 @@
+libcp-relative-java (binary): classpath-contains-relative-path obviously-relative/stuff.jar [usr/share/java/cp-relative-1.0.jar]
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/clean b/t/recipes/checks/languages/java/java-jars/build-spec/debian/clean
new file mode 100644
index 0000000..d392f0e
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/clean
@@ -0,0 +1 @@
+*.jar
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/control.in b/t/recipes/checks/languages/java/java-jars/build-spec/debian/control.in
new file mode 100644
index 0000000..a54ccaf
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/control.in
@@ -0,0 +1,73 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], javahelper, default-jdk-headless | default-jdk
+Rules-Requires-Root: no
+
+Package: libtesta-java
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - part A
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. First part.
+ .
+ This package should not be installed.
+
+Package: libcodeless-java
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - codeless
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. This package should not be
+ installed.
+ .
+ This package tests for codeless jars.
+
+Package: libmanifestless-java
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - manifestless
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. This package should not be
+ installed.
+ .
+ This package tests for mainifest-less code jars.
+
+Package: libtestc-java
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - part C
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. Third part.
+ .
+ This package should not be installed.
+
+Package: libtest-maven-plugin-java
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - part D
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. Fourth part.
+ .
+ This package should not be installed.
+
+Package: unparsable
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - unparsable
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. The unparsable part.
+ .
+ This package should not be installed.
+
+Package: libcontains-source-java
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] - contains .java source
+ This is a test package designed to test various aspects of the
+ java-related QA code in lintian. This package should not be
+ installed.
+ .
+ This package tests for .java files inside jars.
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/javabuild b/t/recipes/checks/languages/java/java-jars/build-spec/debian/javabuild
new file mode 100644
index 0000000..323c1da
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/javabuild
@@ -0,0 +1,4 @@
+testa.jar src
+testb.jar src
+testc.jar src
+testd.jar src
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libcodeless-java.jlibs b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libcodeless-java.jlibs
new file mode 100644
index 0000000..e31d0ab
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libcodeless-java.jlibs
@@ -0,0 +1 @@
+codeless.jar
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libcontains-source-java.jlibs b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libcontains-source-java.jlibs
new file mode 100644
index 0000000..db68d0e
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libcontains-source-java.jlibs
@@ -0,0 +1 @@
+contains-source.jar
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libmanifestless-java.jlibs b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libmanifestless-java.jlibs
new file mode 100644
index 0000000..7ae2544
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libmanifestless-java.jlibs
@@ -0,0 +1 @@
+manifestless.jar
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtest-maven-plugin-java.install b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtest-maven-plugin-java.install
new file mode 100644
index 0000000..b4f610f
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtest-maven-plugin-java.install
@@ -0,0 +1,2 @@
+testa.jar /usr/share/maven-repo/org/apache/maven/plugins/maven-site-plugin/2.1/
+testb.jar /usr/share/java/
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.install b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.install
new file mode 100644
index 0000000..cf31c45
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.install
@@ -0,0 +1,4 @@
+0.jar usr/share/java/
+0.jar usr/share/private-jars/
+testb.jar usr/lib/
+testc.jar usr/bin
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.jlibs b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.jlibs
new file mode 100644
index 0000000..b1017a7
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtesta-java.jlibs
@@ -0,0 +1 @@
+testa.jar
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtestc-java.install b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtestc-java.install
new file mode 100644
index 0000000..32c2610
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/libtestc-java.install
@@ -0,0 +1 @@
+testa.jar usr/share/private-jars
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/rules b/t/recipes/checks/languages/java/java-jars/build-spec/debian/rules
new file mode 100755
index 0000000..8ca4444
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/rules
@@ -0,0 +1,20 @@
+#!/usr/bin/make -f
+%:
+ dh $@ --with javahelper
+
+override_jh_build:
+ jh_build --javacopts='-target 1.7' --javacopts='-source 1.7'
+ cp testa.jar testb.jar
+ cp testa.jar 0.jar
+ unzip testa.jar
+ zip -r codeless.jar META-INF/
+ zip -r manifestless.jar org/
+ touch org/debian/lintian/TestA.java
+ zip -r contains-source.jar META-INF/ org/
+ perl generate-unparsable.pl
+
+# Skip - it chokes on "unparsable.jar" and we don't need it
+override_jh_manifest override_jh_depends override_dh_strip_nondeterminism:
+
+override_dh_auto_clean:
+ rm -fr META-INF/ org/
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/debian/unparsable.install b/t/recipes/checks/languages/java/java-jars/build-spec/debian/unparsable.install
new file mode 100644
index 0000000..a734cf7
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/debian/unparsable.install
@@ -0,0 +1 @@
+unparsable.jar usr/share/unparsable
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/fill-values b/t/recipes/checks/languages/java/java-jars/build-spec/fill-values
new file mode 100644
index 0000000..320d891
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: java-jars
+Skeleton: upload-non-native
+Description: Various checks about JAR files
+Author: Vincent Fourmond <fourmond@debian.org>
+Section: java
+Extra-Build-Depends: javahelper, default-jdk
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl b/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl
new file mode 100644
index 0000000..eaed15b
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/orig/generate-unparsable.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# Generated with "hexdump -C <valid-file.zip> | head -n 10". Should
+# be a valid header of a truncated zip file. This is enough to fool
+# file 5.30 and earlier, but will obviously break if you try to parse
+# it in full.
+my $valid_header = <<'EOF';
+00000000 50 4b 03 04 0a 00 00 00 00 00 4c 59 9e 4a 00 00 |PK........LY.J..|
+00000010 00 00 00 00 00 00 00 00 00 00 04 00 1c 00 6f 72 |..............or|
+00000020 67 2f 55 54 09 00 03 20 c6 05 59 20 c6 05 59 75 |g/UT... ..Y ..Yu|
+00000030 78 0b 00 01 04 e8 03 00 00 04 e8 03 00 00 50 4b |x.............PK|
+00000040 03 04 0a 00 00 00 00 00 4c 59 9e 4a 00 00 00 00 |........LY.J....|
+00000050 00 00 00 00 00 00 00 00 0b 00 1c 00 6f 72 67 2f |............org/|
+00000060 64 65 62 69 61 6e 2f 55 54 09 00 03 20 c6 05 59 |debian/UT... ..Y|
+00000070 20 c6 05 59 75 78 0b 00 01 04 e8 03 00 00 04 e8 | ..Yux..........|
+00000080 03 00 00 50 4b 03 04 0a 00 00 00 00 00 4c 59 9e |...PK........LY.|
+00000090 4a 00 00 00 00 00 00 00 00 00 00 00 00 13 00 1c |J...............|
+EOF
+
+open(my $fd, '>', 'unparsable.jar');
+
+for my $line (split(m/\n/, $valid_header)) {
+ chomp($line);
+ next if $line =~ s/^\s*+(?:\#.*)?$//;
+ next if $line !~ s/^[0-9a-fA-F]+\s+//; # Remove leading "offset"
+ $line =~ s/\s*(?:\|.+\|\s*)?$//; # Remove trailing "display" part (if present)
+ for my $byte (split(m/\s++/, $line)) {
+ printf {$fd} '%c', hex($byte);
+ }
+}
+
+close($fd);
+
diff --git a/t/recipes/checks/languages/java/java-jars/build-spec/orig/src/org/debian/lintian/TestA.java b/t/recipes/checks/languages/java/java-jars/build-spec/orig/src/org/debian/lintian/TestA.java
new file mode 100644
index 0000000..dacb2f2
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/build-spec/orig/src/org/debian/lintian/TestA.java
@@ -0,0 +1,8 @@
+package org.debian.lintian;
+
+/**
+ A neat empty useless class.
+ */
+public class TestA {
+ // An empty class should do.
+}; \ No newline at end of file
diff --git a/t/recipes/checks/languages/java/java-jars/eval/desc b/t/recipes/checks/languages/java/java-jars/eval/desc
new file mode 100644
index 0000000..3cff6bb
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/eval/desc
@@ -0,0 +1,4 @@
+Testname: java-jars
+Test-Against:
+ source-contains-prebuilt-java-object
+Check: languages/java
diff --git a/t/recipes/checks/languages/java/java-jars/eval/hints b/t/recipes/checks/languages/java/java-jars/eval/hints
new file mode 100644
index 0000000..cd4bd34
--- /dev/null
+++ b/t/recipes/checks/languages/java/java-jars/eval/hints
@@ -0,0 +1,11 @@
+unparsable (binary): zip-parse-error format error: can't find EOCD signature [usr/share/unparsable/unparsable.jar]
+libtestc-java (binary): javalib-but-no-public-jars
+libtesta-java (binary): missing-dep-on-jarwrapper
+libtesta-java (binary): jar-not-in-usr-share [usr/lib/testb.jar]
+libtesta-java (binary): executable-jar-without-main-class [usr/bin/testc.jar]
+libtesta-java (binary): bad-jar-name [usr/share/java/0.jar]
+libtest-maven-plugin-java (binary): maven-plugin-in-usr-share-java [usr/share/java/testb.jar]
+libtest-maven-plugin-java (binary): bad-jar-name [usr/share/java/testb.jar]
+libmanifestless-java (binary): missing-manifest [usr/share/java/manifestless-1.0.jar]
+libcontains-source-java (binary): jar-contains-source org/debian/lintian/TestA.java [usr/share/java/contains-source-1.0.jar]
+libcodeless-java (binary): codeless-jar [usr/share/java/codeless-1.0.jar]
diff --git a/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/fill-values b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/fill-values
new file mode 100644
index 0000000..01a1fce
--- /dev/null
+++ b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: prebuilt-java-object
+Skeleton: upload-native
+Description: Source package with a prebuilt java object
+Section: java
diff --git a/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.class b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.class
new file mode 100644
index 0000000..b7edf6d
--- /dev/null
+++ b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.class
Binary files differ
diff --git a/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.jar b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.jar
new file mode 100644
index 0000000..fa91875
--- /dev/null
+++ b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.jar
Binary files differ
diff --git a/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.java b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.java
new file mode 100644
index 0000000..8a6cd64
--- /dev/null
+++ b/t/recipes/checks/languages/java/prebuilt-java-object/build-spec/orig/HelloWorld.java
@@ -0,0 +1,7 @@
+package HelloWorld;
+
+class HelloWorld {
+ public void hello() {
+ System.out.println("Hello World!");
+ }
+}
diff --git a/t/recipes/checks/languages/java/prebuilt-java-object/eval/desc b/t/recipes/checks/languages/java/prebuilt-java-object/eval/desc
new file mode 100644
index 0000000..e294bed
--- /dev/null
+++ b/t/recipes/checks/languages/java/prebuilt-java-object/eval/desc
@@ -0,0 +1,2 @@
+Testname: prebuilt-java-object
+Check: languages/java
diff --git a/t/recipes/checks/languages/java/prebuilt-java-object/eval/hints b/t/recipes/checks/languages/java/prebuilt-java-object/eval/hints
new file mode 100644
index 0000000..9522af5
--- /dev/null
+++ b/t/recipes/checks/languages/java/prebuilt-java-object/eval/hints
@@ -0,0 +1 @@
+prebuilt-java-object (source): source-contains-prebuilt-java-object [HelloWorld.jar]
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/debian/install b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/debian/install
new file mode 100644
index 0000000..104313f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/debian/install
@@ -0,0 +1,10 @@
+jquery* usr/share/php
+mocha.* usr/share/javascript/mocha
+bootstrap-* usr/share/php
+bootstrap.js usr/share/xul-ext/lintian
+streams.php usr/share/php
+streams.php usr/share/php/pomo
+rss_parse.php usr/share/php
+tiny_mce_popup.js usr/share/php
+jquery.js usr/share/doxygen-test/
+doxygen.css usr/share/doxygen-test
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/fill-values b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/fill-values
new file mode 100644
index 0000000..8c48bea
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-embedded
+Description: Check for detection of embedded PEAR modules
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js
new file mode 100644
index 0000000..d9c3762
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js
@@ -0,0 +1 @@
+This is an embedded javascript library from Twitter that uses "var Carousel";
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap.js b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap.js
new file mode 100644
index 0000000..896075b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/bootstrap.js
@@ -0,0 +1 @@
+// https://developer.mozilla.org/en-US/docs/Extensions/bootstrap.js false positive
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/doxygen.css b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/doxygen.css
new file mode 100644
index 0000000..43dd760
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/doxygen.css
@@ -0,0 +1 @@
+Dummy CSS file so that we do not emit embedded-javascript-library in jQuery docs.
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.js b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.min.js b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.min.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/jquery.min.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.css b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.css
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.css
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.js b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/mocha.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/rss_parse.php b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/rss_parse.php
new file mode 100644
index 0000000..95afc6a
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/rss_parse.php
@@ -0,0 +1 @@
+This is not a php file.
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/streams.php b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/streams.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/streams.php
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/eval/desc b/t/recipes/checks/languages/javascript/embedded/files-embedded/eval/desc
new file mode 100644
index 0000000..1e47ec3
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-embedded
+See-Also: <g8t2fb$r9t$4@ger.gmane.org>
+Check: languages/javascript/embedded
diff --git a/t/recipes/checks/languages/javascript/embedded/files-embedded/eval/hints b/t/recipes/checks/languages/javascript/embedded/files-embedded/eval/hints
new file mode 100644
index 0000000..ea6df11
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/files-embedded/eval/hints
@@ -0,0 +1,6 @@
+files-embedded (binary): embedded-javascript-library please use tinymce [usr/share/php/tiny_mce_popup.js]
+files-embedded (binary): embedded-javascript-library please use libjs-mocha [usr/share/javascript/mocha/mocha.js]
+files-embedded (binary): embedded-javascript-library please use libjs-mocha [usr/share/javascript/mocha/mocha.css]
+files-embedded (binary): embedded-javascript-library please use libjs-jquery [usr/share/php/jquery.min.js]
+files-embedded (binary): embedded-javascript-library please use libjs-jquery [usr/share/php/jquery.js]
+files-embedded (binary): embedded-javascript-library please use libjs-bootstrap [usr/share/php/bootstrap-1.1.js]
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/control b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/fill-values b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/desc b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/desc
new file mode 100644
index 0000000..86c9842
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: languages/javascript/embedded
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/hints b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/hints
new file mode 100644
index 0000000..c5e3602
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/hints
@@ -0,0 +1,11 @@
+filenames (binary): embedded-javascript-library please use libjs-yui [usr/share/filenames/yahoo-min.js]
+filenames (binary): embedded-javascript-library please use libjs-yui [usr/share/filenames/yahoo-dom-event.js]
+filenames (binary): embedded-javascript-library please use libjs-scriptaculous [usr/share/filenames/scriptaculous.js]
+filenames (binary): embedded-javascript-library please use libjs-prototype [usr/share/filenames/prototype.js]
+filenames (binary): embedded-javascript-library please use libjs-prototype [usr/share/filenames/prototype.js.gz]
+filenames (binary): embedded-javascript-library please use libjs-prototype [usr/share/filenames/prototype-1.2.3.4.js]
+filenames (binary): embedded-javascript-library please use libjs-mochikit [usr/share/filenames/mochikit.js]
+filenames (binary): embedded-javascript-library please use libjs-jquery [usr/share/filenames/jquery.pack.js]
+filenames (binary): embedded-javascript-library please use libjs-jquery [usr/share/filenames/jquery.min.js]
+filenames (binary): embedded-javascript-library please use libjs-jquery [usr/share/filenames/jquery.lite.js]
+filenames (binary): embedded-javascript-library please use libjs-jquery [usr/share/filenames/jquery.js]
diff --git a/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/post-test b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/embedded/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/debian/control.in b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/debian/control.in
new file mode 100644
index 0000000..ca61aec
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dh-sequence-nodejs
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/fill-values
new file mode 100644
index 0000000..652b02b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: pkg-js-tools-test-is-missing
+Skeleton: upload-native
+Description: Test if debian/tests/pkg-js/test exists
+Extra-Build-Depends: pkg-js-tools (>= 0.9.6~), nodejs (>= 8.11.1)
diff --git a/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/package.json
new file mode 100644
index 0000000..889ee8e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/build-spec/orig/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "test",
+ "version": "0.1",
+ "main": "index.js"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/desc b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/desc
new file mode 100644
index 0000000..3270ad1
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: dh-sequence-nodejs-test-is-missing
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/hints b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/hints
new file mode 100644
index 0000000..1cc9594
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/dh-sequence-nodejs-test-is-missing/eval/hints
@@ -0,0 +1,3 @@
+pkg-js-tools-test-is-missing (source): pkg-js-tools-test-is-missing
+pkg-js-tools-test-is-missing (binary): nodejs-module-not-declared node-test [usr/share/nodejs/test/package.json]
+pkg-js-tools-test-is-missing (binary): nodejs-module test 0.1 [usr/share/nodejs/test/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/install b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/rules
new file mode 100755
index 0000000..22e3438
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/debian/rules
@@ -0,0 +1,16 @@
+#!/usr/bin/make -f
+PKG:=files-nodejs
+INSTPATH:=$(CURDIR)/debian/tmp/usr/share/nodejs
+
+
+%:
+ dh $@
+
+override_dh_install:
+ mkdir -p $(INSTPATH)
+ cp src/test.js $(INSTPATH)/test.js
+ cp src/test.json $(INSTPATH)/package.json
+ dh_install
+
+
+
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/fill-values
new file mode 100644
index 0000000..36fb14a
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-nodejs
+Description: Check for nodejs problems
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.js b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.js
new file mode 100644
index 0000000..ca538a6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.js
@@ -0,0 +1 @@
+/* test.js */ \ No newline at end of file
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.json b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.json
new file mode 100644
index 0000000..f0a3f50
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/build-spec/orig/src/test.json
@@ -0,0 +1 @@
+/* json test */ \ No newline at end of file
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/desc b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/desc
new file mode 100644
index 0000000..a86d3e5
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-nodejs
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/hints b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/hints
new file mode 100644
index 0000000..bd11eea
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/files-nodejs/eval/hints
@@ -0,0 +1,2 @@
+files-nodejs (binary): node-package-install-in-nodejs-rootdir [usr/share/nodejs/test.js]
+files-nodejs (binary): node-package-install-in-nodejs-rootdir [usr/share/nodejs/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/install b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/install
new file mode 100644
index 0000000..28705a7
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/install
@@ -0,0 +1,2 @@
+bson/* /usr/share/nodejs/badname/
+foobar/* /usr/share/nodejs/@bar/foo/
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/rules
new file mode 100644
index 0000000..9edc8dc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/tests/pkg-js/test b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/tests/pkg-js/test
new file mode 100644
index 0000000..bc7b127
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/tests/pkg-js/test
@@ -0,0 +1,3 @@
+# Does nothing
+
+
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/watch b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/watch
new file mode 100644
index 0000000..e6e86de
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/debian/watch
@@ -0,0 +1,42 @@
+version=4
+
+opts=\
+dversionmangle=s/\+(debian|dfsg|ds|deb)(\.\d+)?$//,\
+filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/node-mongodb-native-$1.tar.gz/ \
+ https://github.com/mongodb/node-mongodb-native/tags .*/archive/v?([\d\.]+).tar.gz group
+
+opts="searchmode=plain,pgpmode=none,component=mongodb-core" \
+ https://registry.npmjs.org/mongodb-core https://registry.npmjs.org/mongodb-core/-/mongodb-core-(\d[\d\.]*)@ARCHIVE_EXT@ group
+
+opts="searchmode=plain,pgpmode=none,component=requireoptional" \
+ https://registry.npmjs.org/require_optional https://registry.npmjs.org/require_optional/-/require_optional-(\d[\d\.]*)@ARCHIVE_EXT@ ignore
+
+opts="searchmode=plain,pgpmode=none,component=bson" \
+ https://registry.npmjs.org/bson https://registry.npmjs.org/bson/-/bson-(1[\d\.]*)@ARCHIVE_EXT@ ignore
+
+opts="searchmode=plain,pgpmode=none,component=foobar" \
+ https://registry.npmjs.org/bson https://registry.npmjs.org/foobar/-/foobar-(1[\d\.]*)@ARCHIVE_EXT@ ignore
+
+# It is not recommended use npmregistry. Please investigate more.
+# Take a look at https://wiki.debian.org/debian/watch/
+opts="searchmode=plain,component=denque,pgpmode=none" \
+ https://registry.npmjs.org/denque https://registry.npmjs.org/denque/-/denque-([\d\.]+)@ARCHIVE_EXT@ ignore
+
+opts=\
+component=saslprep,\
+dversionmangle=auto,\
+filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/node-saslprep-$1.tar.gz/ \
+ https://github.com/reklatsmasters/saslprep/tags .*/archive/v?([\d\.]+).tar.gz ignore
+
+opts=\
+component=sparse-bitfield,\
+dversionmangle=auto,\
+filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/node-sparse-bitfield-$1.tar.gz/ \
+ https://github.com/mafintosh/sparse-bitfield/tags .*/archive/v?([\d\.]+).tar.gz ignore
+
+opts=\
+component=memory-pager,\
+dversionmangle=auto,\
+filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/node-memory-pager-$1.tar.gz/ \
+ https://github.com/mafintosh/memory-pager/tags .*/archive/v?([\d\.]+).tar.gz ignore
+
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/fill-values
new file mode 100644
index 0000000..28ad15b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: multiple-nodejs-components
+Skeleton: upload-native
+Description: Test if debian/tests/pkg-js/test contains a command
+Extra-Build-Depends: pkg-js-tools (>= 0.9.6~), nodejs (>= 8.11.1)
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/package.json
new file mode 100644
index 0000000..fb10cf1
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/browser_build/package.json
@@ -0,0 +1 @@
+{ "name": "bson" }
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/package.json
new file mode 100644
index 0000000..745d4e7
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/bson/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "bson",
+ "version": "1.1.3"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/package.json
new file mode 100644
index 0000000..8e07817
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/denque/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "denque",
+ "version": "1.4.1"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/package.json
new file mode 100644
index 0000000..694a18b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/foobar/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "@foo/bar",
+ "version": "1.2.0"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/package.json
new file mode 100644
index 0000000..6d5e475
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/memory-pager/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "memory-pager",
+ "version": "1.5.0"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/package.json
new file mode 100644
index 0000000..0c136ce
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/mongodb-core/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "mongodb-core",
+ "version": "3.2.7"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/package.json
new file mode 100644
index 0000000..d60e40f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "mongodb",
+ "version": "3.5.2"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/package.json
new file mode 100644
index 0000000..e3bbffa
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "require_optional",
+ "version": "1.0.1"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/test/nestedTest/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/test/nestedTest/package.json
new file mode 100644
index 0000000..85c7a79
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/requireoptional/test/nestedTest/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "nestedtest",
+ "version": "1.0.0"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/package.json
new file mode 100644
index 0000000..536f56d
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/saslprep/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "saslprep",
+ "version": "1.0.3"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/index.js b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/package.json b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/package.json
new file mode 100644
index 0000000..309af23
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/build-spec/orig/sparse-bitfield/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "sparse-bitfield",
+ "version": "3.0.3"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/desc b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/desc
new file mode 100644
index 0000000..a356c1f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/desc
@@ -0,0 +1,2 @@
+Testname: multiple-nodejs-components
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/hints b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/hints
new file mode 100644
index 0000000..66aa966
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/multiple-nodejs-components/eval/hints
@@ -0,0 +1,17 @@
+multiple-nodejs-components (source): pkg-js-tools-test-is-empty [debian/tests/pkg-js/test]
+multiple-nodejs-components (binary): nodejs-module-not-declared node-mongodb [usr/share/nodejs/mongodb/package.json]
+multiple-nodejs-components (binary): nodejs-module-installed-in-bad-directory bson badname [usr/share/nodejs/badname/package.json]
+multiple-nodejs-components (binary): nodejs-module-installed-in-bad-directory @foo/bar @bar/foo [usr/share/nodejs/@bar/foo/package.json]
+multiple-nodejs-components (binary): nodejs-module sparse-bitfield 3.0.3 [usr/share/nodejs/mongodb/node_modules/sparse-bitfield/package.json]
+multiple-nodejs-components (binary): nodejs-module saslprep 1.0.3 [usr/share/nodejs/mongodb/node_modules/saslprep/package.json]
+multiple-nodejs-components (binary): nodejs-module require_optional 1.0.1 [usr/share/nodejs/mongodb/node_modules/require_optional/package.json]
+multiple-nodejs-components (binary): nodejs-module mongodb-core 3.2.7 [usr/share/nodejs/mongodb/node_modules/mongodb-core/package.json]
+multiple-nodejs-components (binary): nodejs-module mongodb 3.5.2 [usr/share/nodejs/mongodb/package.json]
+multiple-nodejs-components (binary): nodejs-module memory-pager 1.5.0 [usr/share/nodejs/mongodb/node_modules/memory-pager/package.json]
+multiple-nodejs-components (binary): nodejs-module denque 1.4.1 [usr/share/nodejs/mongodb/node_modules/denque/package.json]
+multiple-nodejs-components (binary): nodejs-module bson undef [usr/share/nodejs/mongodb/node_modules/bson/browser_build/package.json]
+multiple-nodejs-components (binary): nodejs-module bson undef [usr/share/nodejs/badname/browser_build/package.json]
+multiple-nodejs-components (binary): nodejs-module bson 1.1.3 [usr/share/nodejs/mongodb/node_modules/bson/package.json]
+multiple-nodejs-components (binary): nodejs-module bson 1.1.3 [usr/share/nodejs/badname/package.json]
+multiple-nodejs-components (binary): nodejs-module @foo/bar 1.2.0 [usr/share/nodejs/mongodb/node_modules/@foo/bar/package.json]
+multiple-nodejs-components (binary): nodejs-module @foo/bar 1.2.0 [usr/share/nodejs/@bar/foo/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/additional_components b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/additional_components
new file mode 100644
index 0000000..0b11676
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/additional_components
@@ -0,0 +1,2 @@
+bson
+foobar
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/root_modules b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/root_modules
new file mode 100644
index 0000000..323fae0
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/nodejs/root_modules
@@ -0,0 +1 @@
+foobar
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/rules
new file mode 100644
index 0000000..9edc8dc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/tests/pkg-js/test b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/tests/pkg-js/test
new file mode 100644
index 0000000..babcb6f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/tests/pkg-js/test
@@ -0,0 +1,2 @@
+# Does nothing
+echo OK
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/watch b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/watch
new file mode 100644
index 0000000..59625c6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/debian/watch
@@ -0,0 +1,6 @@
+version=4
+
+opts=\
+dversionmangle=s/\+(debian|dfsg|ds|deb)(\.\d+)?$//,\
+filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/node-mongodb-native-$1.tar.gz/ \
+ https://github.com/mongodb/node-mongodb-native/tags .*/archive/v?([\d\.]+).tar.gz group
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/fill-values
new file mode 100644
index 0000000..939e0b8
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: nodejs-missing-version-override
+Skeleton: upload-native
+Description: Test if nodejs modules have a valid version
+Extra-Build-Depends: pkg-js-tools (>= 0.9.6~), nodejs (>= 8.11.1)
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/package.json
new file mode 100644
index 0000000..0b293f1
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/bson/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "bson",
+ "version": "0.0.0-development"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/package.json
new file mode 100644
index 0000000..8ddf1cc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/foobar/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "@foo/bar",
+ "version": "0.0.0-development"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/package.json
new file mode 100644
index 0000000..fa746a2
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/build-spec/orig/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "mongodb",
+ "version": "0.0.0-development"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/desc b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/desc
new file mode 100644
index 0000000..ef8383a
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/desc
@@ -0,0 +1,2 @@
+Testname: nodejs-missing-version-override
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/hints b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/hints
new file mode 100644
index 0000000..e00c819
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-missing-version-override/eval/hints
@@ -0,0 +1,8 @@
+nodejs-missing-version-override (binary): nodejs-module-not-declared node-mongodb [usr/share/nodejs/mongodb/package.json]
+nodejs-missing-version-override (binary): nodejs-module-not-declared node-foo-bar [usr/share/nodejs/@foo/bar/package.json]
+nodejs-missing-version-override (binary): nodejs-module mongodb 0.0.0-development [usr/share/nodejs/mongodb/package.json]
+nodejs-missing-version-override (binary): nodejs-module bson 0.0.0-development [usr/share/nodejs/mongodb/node_modules/bson/package.json]
+nodejs-missing-version-override (binary): nodejs-module @foo/bar 0.0.0-development [usr/share/nodejs/@foo/bar/package.json]
+nodejs-missing-version-override (binary): nodejs-missing-version-override mongodb 0.0.0-development [usr/share/nodejs/mongodb/package.json]
+nodejs-missing-version-override (binary): nodejs-missing-version-override bson 0.0.0-development [usr/share/nodejs/mongodb/node_modules/bson/package.json]
+nodejs-missing-version-override (binary): nodejs-missing-version-override @foo/bar 0.0.0-development [usr/share/nodejs/@foo/bar/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/install b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/rules
new file mode 100755
index 0000000..0b4a889
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+PKG:=nodejs-module-installed-in-usr-lib
+INSTPATH:=$(CURDIR)/debian/tmp/usr/lib/nodejs/module-installed-in-usr-lib
+
+
+%:
+ dh $@
+
+override_dh_install:
+ mkdir -p $(INSTPATH)
+ cp src/test.js $(INSTPATH)/test.js
+ cp src/test.json $(INSTPATH)/package.json
+ dh_install
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/fill-values
new file mode 100644
index 0000000..89cbeb6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nodejs-module-installed-in-usr-lib
+Description: Check if nodejs modules are no more installed in /usr/lib/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.js
new file mode 100644
index 0000000..ca538a6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.js
@@ -0,0 +1 @@
+/* test.js */ \ No newline at end of file
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.json
new file mode 100644
index 0000000..f0a3f50
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/build-spec/orig/src/test.json
@@ -0,0 +1 @@
+/* json test */ \ No newline at end of file
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/desc b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/desc
new file mode 100644
index 0000000..ed2f889
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/desc
@@ -0,0 +1,2 @@
+Testname: nodejs-module-installed-in-usr-lib
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/hints b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/hints
new file mode 100644
index 0000000..74b9c37
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installed-in-usr-lib/eval/hints
@@ -0,0 +1,2 @@
+nodejs-module-installed-in-usr-lib (binary): nodejs-module-installed-in-usr-lib [usr/lib/nodejs/module-installed-in-usr-lib/test.js]
+nodejs-module-installed-in-usr-lib (binary): nodejs-module-installed-in-usr-lib [usr/lib/nodejs/module-installed-in-usr-lib/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/install b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/install
new file mode 100644
index 0000000..1b91047
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/install
@@ -0,0 +1 @@
+usr/
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/rules
new file mode 100755
index 0000000..9dc0a66
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+PKG:=nodejs-module-installed-in-usr-lib
+INSTPATH:=$(CURDIR)/debian/tmp/usr/share/nodejs/module-installs-lock-file
+
+
+%:
+ dh $@
+
+override_dh_install:
+ mkdir -p $(INSTPATH)
+ cp src/test.js $(INSTPATH)/yarn.lock
+ cp src/test.json $(INSTPATH)/package-lock.json
+ dh_install
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/fill-values
new file mode 100644
index 0000000..e8df969
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nodejs-module-installs-lock-file
+Description: Check if nodejs modules are no more installed in /usr/lib/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.js
new file mode 100644
index 0000000..ca538a6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.js
@@ -0,0 +1 @@
+/* test.js */ \ No newline at end of file
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.json
new file mode 100644
index 0000000..f0a3f50
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/build-spec/orig/src/test.json
@@ -0,0 +1 @@
+/* json test */ \ No newline at end of file
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/desc b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/desc
new file mode 100644
index 0000000..4072be6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: nodejs-module-installs-lock-file
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/hints b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/hints
new file mode 100644
index 0000000..19313b4
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-installs-lock-file/eval/hints
@@ -0,0 +1,2 @@
+nodejs-module-installs-lock-file (binary): nodejs-lock-file [usr/share/nodejs/module-installs-lock-file/yarn.lock]
+nodejs-module-installs-lock-file (binary): nodejs-lock-file [usr/share/nodejs/module-installs-lock-file/package-lock.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/additional_components b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/additional_components
new file mode 100644
index 0000000..0b11676
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/additional_components
@@ -0,0 +1,2 @@
+bson
+foobar
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/root_modules b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/root_modules
new file mode 100644
index 0000000..72e8ffc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/nodejs/root_modules
@@ -0,0 +1 @@
+*
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/rules
new file mode 100644
index 0000000..9edc8dc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/tests/pkg-js/test b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/tests/pkg-js/test
new file mode 100644
index 0000000..babcb6f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/tests/pkg-js/test
@@ -0,0 +1,2 @@
+# Does nothing
+echo OK
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/watch b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/watch
new file mode 100644
index 0000000..59625c6
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/debian/watch
@@ -0,0 +1,6 @@
+version=4
+
+opts=\
+dversionmangle=s/\+(debian|dfsg|ds|deb)(\.\d+)?$//,\
+filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/node-mongodb-native-$1.tar.gz/ \
+ https://github.com/mongodb/node-mongodb-native/tags .*/archive/v?([\d\.]+).tar.gz group
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/fill-values
new file mode 100644
index 0000000..87b010a
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: nodejs-module-not-declared
+Skeleton: upload-native
+Description: Test if nodejs modules are declared
+Extra-Build-Depends: pkg-js-tools (>= 0.9.6~), nodejs (>= 8.11.1)
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/package.json
new file mode 100644
index 0000000..fb10cf1
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/browser_build/package.json
@@ -0,0 +1 @@
+{ "name": "bson" }
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/package.json
new file mode 100644
index 0000000..745d4e7
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/bson/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "bson",
+ "version": "1.1.3"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/package.json
new file mode 100644
index 0000000..694a18b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/foobar/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "@foo/bar",
+ "version": "1.2.0"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/package.json
new file mode 100644
index 0000000..d60e40f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/build-spec/orig/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "mongodb",
+ "version": "3.5.2"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/desc b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/desc
new file mode 100644
index 0000000..086946a
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/desc
@@ -0,0 +1,2 @@
+Testname: nodejs-module-not-declared
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/hints b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/hints
new file mode 100644
index 0000000..d0b6fdb
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/nodejs-module-not-declared/eval/hints
@@ -0,0 +1,7 @@
+nodejs-module-not-declared (binary): nodejs-module-not-declared node-mongodb [usr/share/nodejs/mongodb/package.json]
+nodejs-module-not-declared (binary): nodejs-module-not-declared node-foo-bar [usr/share/nodejs/@foo/bar/package.json]
+nodejs-module-not-declared (binary): nodejs-module-not-declared node-bson [usr/share/nodejs/bson/package.json]
+nodejs-module-not-declared (binary): nodejs-module mongodb 3.5.2 [usr/share/nodejs/mongodb/package.json]
+nodejs-module-not-declared (binary): nodejs-module bson undef [usr/share/nodejs/bson/browser_build/package.json]
+nodejs-module-not-declared (binary): nodejs-module bson 1.1.3 [usr/share/nodejs/bson/package.json]
+nodejs-module-not-declared (binary): nodejs-module @foo/bar 1.2.0 [usr/share/nodejs/@foo/bar/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/control.in b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/control.in
new file mode 100644
index 0000000..7a2fe23
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Testsuite: autopkgtest-pkg-nodejs
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/files b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/files
new file mode 100644
index 0000000..34577ab
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/files
@@ -0,0 +1,5 @@
+test*
+lib/a
+lib/*/*.js
+lib/*/*.json
+la/test
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/test b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/test
new file mode 100644
index 0000000..802e05f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/debian/tests/pkg-js/test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/usr/bin/ls
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/fill-values
new file mode 100644
index 0000000..232821a
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: pkg-js-autopkgtest-file-does-not-exist
+Skeleton: upload-native
+Description: Test if files in debian/tests/pkg-js/files exists
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/lib/a/file.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/lib/a/file.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/lib/a/file.js
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/package.json
new file mode 100644
index 0000000..889ee8e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "test",
+ "version": "0.1",
+ "main": "index.js"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/test/test.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/test/test.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/build-spec/orig/test/test.js
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/desc b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/desc
new file mode 100644
index 0000000..9dc738c
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/desc
@@ -0,0 +1,2 @@
+Testname: pkg-js-autopkgtest-file-does-not-exist
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/hints b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/hints
new file mode 100644
index 0000000..f969845
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-file-does-not-exist/eval/hints
@@ -0,0 +1,2 @@
+pkg-js-autopkgtest-file-does-not-exist (source): pkg-js-autopkgtest-file-does-not-exist lib/*/*.json
+pkg-js-autopkgtest-file-does-not-exist (source): pkg-js-autopkgtest-file-does-not-exist la/test
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/control.in b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..7a2fe23
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Testsuite: autopkgtest-pkg-nodejs
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/tests/pkg-js/test b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/tests/pkg-js/test
new file mode 100644
index 0000000..bc7b127
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/debian/tests/pkg-js/test
@@ -0,0 +1,3 @@
+# Does nothing
+
+
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/fill-values
new file mode 100644
index 0000000..b141e9c
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: pkg-js-autopkgtest-test-is-empty
+Skeleton: upload-native
+Description: Test if debian/tests/pkg-js/test contains a command
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/package.json
new file mode 100644
index 0000000..889ee8e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/build-spec/orig/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "test",
+ "version": "0.1",
+ "main": "index.js"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/desc b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/desc
new file mode 100644
index 0000000..20643c4
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: pkg-js-autopkgtest-test-is-empty
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/hints b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/hints
new file mode 100644
index 0000000..f22cc4f
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-empty/eval/hints
@@ -0,0 +1 @@
+pkg-js-autopkgtest-test-is-empty (source): pkg-js-autopkgtest-test-is-empty [debian/tests/pkg-js/test]
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/debian/control.in b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/debian/control.in
new file mode 100644
index 0000000..7a2fe23
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Testsuite: autopkgtest-pkg-nodejs
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/fill-values
new file mode 100644
index 0000000..73868a8
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: pkg-js-autopkgtest-test-is-missing
+Skeleton: upload-native
+Description: Test if debian/tests/pkg-js/test exists
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/package.json
new file mode 100644
index 0000000..889ee8e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/build-spec/orig/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "test",
+ "version": "0.1",
+ "main": "index.js"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/desc b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/desc
new file mode 100644
index 0000000..ed9aeee
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: pkg-js-autopkgtest-test-is-missing
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/hints b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/hints
new file mode 100644
index 0000000..b0d5fdc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-autopkgtest-test-is-missing/eval/hints
@@ -0,0 +1 @@
+pkg-js-autopkgtest-test-is-missing (source): pkg-js-autopkgtest-test-is-missing
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/rules
new file mode 100644
index 0000000..9edc8dc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/tests/pkg-js/test b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/tests/pkg-js/test
new file mode 100644
index 0000000..bc7b127
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/debian/tests/pkg-js/test
@@ -0,0 +1,3 @@
+# Does nothing
+
+
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/fill-values
new file mode 100644
index 0000000..eb4db3b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: pkg-js-tools-test-is-empty
+Skeleton: upload-native
+Description: Test if debian/tests/pkg-js/test contains a command
+Extra-Build-Depends: pkg-js-tools (>= 0.9.6~), nodejs (>= 8.11.1)
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/package.json
new file mode 100644
index 0000000..889ee8e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/build-spec/orig/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "test",
+ "version": "0.1",
+ "main": "index.js"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/desc b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/desc
new file mode 100644
index 0000000..8b4e403
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: pkg-js-tools-test-is-empty
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/hints b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/hints
new file mode 100644
index 0000000..b5a1c1e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-empty/eval/hints
@@ -0,0 +1,3 @@
+pkg-js-tools-test-is-empty (source): pkg-js-tools-test-is-empty [debian/tests/pkg-js/test]
+pkg-js-tools-test-is-empty (binary): nodejs-module-not-declared node-test [usr/share/nodejs/test/package.json]
+pkg-js-tools-test-is-empty (binary): nodejs-module test 0.1 [usr/share/nodejs/test/package.json]
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/debian/rules b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/debian/rules
new file mode 100644
index 0000000..9edc8dc
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/fill-values b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/fill-values
new file mode 100644
index 0000000..652b02b
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: pkg-js-tools-test-is-missing
+Skeleton: upload-native
+Description: Test if debian/tests/pkg-js/test exists
+Extra-Build-Depends: pkg-js-tools (>= 0.9.6~), nodejs (>= 8.11.1)
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/index.js b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/index.js
new file mode 100644
index 0000000..3710888
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/index.js
@@ -0,0 +1 @@
+console.log('ok');
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/package.json b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/package.json
new file mode 100644
index 0000000..889ee8e
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/build-spec/orig/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "test",
+ "version": "0.1",
+ "main": "index.js"
+}
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/desc b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/desc
new file mode 100644
index 0000000..5820878
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: pkg-js-tools-test-is-missing
+Check: languages/javascript/nodejs
diff --git a/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/hints b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/hints
new file mode 100644
index 0000000..1cc9594
--- /dev/null
+++ b/t/recipes/checks/languages/javascript/nodejs/pkg-js-tools-test-is-missing/eval/hints
@@ -0,0 +1,3 @@
+pkg-js-tools-test-is-missing (source): pkg-js-tools-test-is-missing
+pkg-js-tools-test-is-missing (binary): nodejs-module-not-declared node-test [usr/share/nodejs/test/package.json]
+pkg-js-tools-test-is-missing (binary): nodejs-module test 0.1 [usr/share/nodejs/test/package.json]
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/desc
new file mode 100644
index 0000000..2c20db4
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/byte-code/compiled
diff --git a/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/hints
new file mode 100644
index 0000000..61a70b3
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/compiled/ocaml-general/eval/hints
@@ -0,0 +1,2 @@
+libocaml-general-ocaml-dev (binary): ocaml-dangling-cmx [usr/lib/ocaml/symbol2.cmx]
+libocaml-general-ocaml (binary): ocaml-dangling-cmx [usr/lib/ocaml/symbol.cmx]
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/desc
new file mode 100644
index 0000000..ae0ab3d
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/byte-code/interface
diff --git a/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/hints
new file mode 100644
index 0000000..66168b0
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/interface/ocaml-general/eval/hints
@@ -0,0 +1,5 @@
+libocaml-general-ocaml-dev (binary): ocaml-dangling-cmi [usr/lib/ocaml/foo.cmi]
+libocaml-general-ocaml-dev (binary): ocaml-dangling-cmi [usr/lib/ocaml/boo.cmi]
+libocaml-general-ocaml-dev (binary): ocaml-dangling-cmi [usr/lib/ocaml/baz.cmi]
+libocaml-general-ocaml-dev (binary): ocaml-dangling-cmi [usr/lib/ocaml/bar.cmi]
+libocaml-general-ocaml-dev (binary): ocaml-dangling-cmi [usr/lib/foo.cmi]
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/desc
new file mode 100644
index 0000000..2c1ce32
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/byte-code/library
diff --git a/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/hints
new file mode 100644
index 0000000..17e0257
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/library/ocaml-general/eval/hints
@@ -0,0 +1,2 @@
+libocaml-general-ocaml-dev (binary): ocaml-stray-cmo [usr/lib/ocaml/bleh.cma]
+libocaml-general-ocaml (binary): ocaml-dangling-cmxa [usr/lib/ocaml/foo.cmxa]
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/desc
new file mode 100644
index 0000000..a2ca616
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/byte-code/misplaced/package
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/hints
new file mode 100644
index 0000000..6444622
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/package/ocaml-general/eval/hints
@@ -0,0 +1 @@
+libocaml-general-ocaml (binary): ocaml-dev-file-in-nondev-package 2 files in usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/desc
new file mode 100644
index 0000000..a3693fc
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/byte-code/misplaced/path
diff --git a/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/hints
new file mode 100644
index 0000000..2bd1c18
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/misplaced/path/ocaml-general/eval/hints
@@ -0,0 +1 @@
+libocaml-general-ocaml-dev (binary): ocaml-dev-file-not-in-usr-lib-ocaml 1 file in usr/lib
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/desc
new file mode 100644
index 0000000..fed6496
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/byte-code/plugin
diff --git a/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/hints
new file mode 100644
index 0000000..d68e985
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/byte-code/plugin/ocaml-general/eval/hints
@@ -0,0 +1 @@
+libocaml-general-ocaml (binary): ocaml-dangling-cmxs [usr/lib/ocaml/bar.cmxs]
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/debian/rules b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/desc b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/desc
new file mode 100644
index 0000000..bcd8254
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: languages/ocaml/custom-executable
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/hints b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/hints
new file mode 100644
index 0000000..30a0d71
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/hints
@@ -0,0 +1 @@
+binaries-general (binary): ocaml-custom-executable [usr/lib/foo/ocaml-exec]
diff --git a/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/post-test b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/custom-executable/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/control.in b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/control.in
new file mode 100644
index 0000000..345bc0f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libocaml-general-ocaml
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml library package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A library package for OCaml checks.
+
+Package: libocaml-general-ocaml-dev
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: OCaml dev package for tests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ A development package for OCaml checks.
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
new file mode 100644
index 0000000..870611a
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml-dev.install
@@ -0,0 +1,12 @@
+symbol-dev.a usr/lib/ocaml/
+libbaz.a usr/lib/ocaml/
+ocaml/foo.cmi usr/lib/
+ocaml/foo.cmi usr/lib/ocaml/
+ocaml/bar.cmi usr/lib/ocaml/
+ocaml/baz.cmi usr/lib/ocaml/
+ocaml/boo.cmi usr/lib/ocaml/
+ocaml/symbol2.cmx usr/lib/ocaml/
+ocaml/symbol-dev.cmx usr/lib/ocaml/
+ocaml/bleh.cmo usr/lib/ocaml/
+ocaml/bleh.cma usr/lib/ocaml/
+ocaml/META usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
new file mode 100644
index 0000000..00a96ae
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.dirs
@@ -0,0 +1 @@
+usr/lib/ocaml
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.install b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
new file mode 100644
index 0000000..ebd6194
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/debian/libocaml-general-ocaml.install
@@ -0,0 +1,3 @@
+ocaml/foo.cmxa usr/lib/ocaml/
+ocaml/bar.cmxs usr/lib/ocaml/
+ocaml/symbol.cmx usr/lib/ocaml/
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/fill-values b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/fill-values
new file mode 100644
index 0000000..91956e2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: ocaml-general
+Package-Architecture: any
+Section: ocaml
+Description: Test the OCaml-related tags
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/Makefile b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..da8b039
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+# A simple makefile to build a *.o file and a *.a file to install to test
+# the OCaml checks for dangling *.cmx files.
+all: symbol.a symbol-dev.a libbaz.a
+
+%.a: %.o
+ ar rv $@ $<
+ # Not entirely sure this is acceptable for a normal OCaml
+ # library, but for this test the library does not need
+ # to work and it avoids a warning about unneeded sections.
+ strip --remove-section=.comment --remove-section=.note \
+ --strip-debug $@
+
+symbol-dev.o: symbol.c
+ cc -c $< -o $@
+
+libbaz.a: symbol-dev.o
+ ar r $@ $<
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/META b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/META
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/META
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmi b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmxs b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmxs
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bar.cmxs
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/baz.cmi b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/baz.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/baz.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cma b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cma
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cma
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cmo b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cmo
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/bleh.cmo
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/boo.cmi b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/boo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/boo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmi b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmi
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmi
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmxa b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmxa
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/foo.cmxa
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol-dev.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol.cmx b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol2.cmx b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
new file mode 100644
index 0000000..72885c2
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/ocaml/symbol2.cmx
@@ -0,0 +1 @@
+MEANINGLESS CONTENT
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/symbol.c b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/symbol.c
new file mode 100644
index 0000000..79a896f
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/build-spec/orig/symbol.c
@@ -0,0 +1,5 @@
+int
+symbol(void)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/desc b/t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/desc
new file mode 100644
index 0000000..5a6bca5
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: ocaml-general
+Check: languages/ocaml/meta
diff --git a/t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/hints b/t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/hints
new file mode 100644
index 0000000..db55eaf
--- /dev/null
+++ b/t/recipes/checks/languages/ocaml/meta/ocaml-general/eval/hints
@@ -0,0 +1 @@
+libocaml-general-ocaml-dev (binary): ocaml-meta-without-suggesting-findlib
diff --git a/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/control.in b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/control.in
new file mode 100644
index 0000000..42dccfc
--- /dev/null
+++ b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libtest-simple-perl
+Section: perl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: libversion-perl
+Section: perl
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: another [% $description %]
+ This is another test package, designed to exercise epoch handling
+ in the 'package-superseded-by-perl' check. It is part of the Lintian
+ test suite and may do very odd things. It should not be installed like
+ a regular package. It may be an empty package.
diff --git a/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/rules b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/rules
new file mode 100755
index 0000000..c965de0
--- /dev/null
+++ b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ dh_gencontrol -plibversion-perl -- -v9:999
+ dh_gencontrol -i -Nlibversion-perl
+
diff --git a/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/fill-values b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/fill-values
new file mode 100644
index 0000000..33091fe
--- /dev/null
+++ b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-perl-provides
+Version: 0.26
+Description: Test for packages provided by perl
diff --git a/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/desc b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/desc
new file mode 100644
index 0000000..2e8f861
--- /dev/null
+++ b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-perl-provides
+Check: languages/perl/core/provides
diff --git a/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/hints b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/hints
new file mode 100644
index 0000000..a2ffa85
--- /dev/null
+++ b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/hints
@@ -0,0 +1 @@
+libtest-simple-perl (binary): package-superseded-by-perl with VERSION
diff --git a/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/post-test b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/post-test
new file mode 100644
index 0000000..a96fc76
--- /dev/null
+++ b/t/recipes/checks/languages/perl/core/provides/fields-perl-provides/eval/post-test
@@ -0,0 +1 @@
+s/(with )[0-9.]*/\1VERSION/
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/eval/desc b/t/recipes/checks/languages/perl/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..39b2926
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: languages/perl
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/eval/hints b/t/recipes/checks/languages/perl/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..b9ba6b3
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/eval/hints
@@ -0,0 +1,5 @@
+files-foo-in-bar (binary): perl-module-in-core-directory [usr/share/perl/bar]
+files-foo-in-bar (binary): perl-module-in-core-directory [usr/lib/perl/bar]
+files-foo-in-bar (binary): package-installs-perllocal-pod [usr/lib/perl-foo/perllocal.pod]
+files-foo-in-bar (binary): package-installs-packlist [usr/lib/perl5/.packlist]
+files-foo-in-bar (binary): package-installs-nonbinary-perl-in-usr-lib-perl5 [usr/lib/perl5/Foo/Bar.pm]
diff --git a/t/recipes/checks/languages/perl/files-foo-in-bar/eval/post-test b/t/recipes/checks/languages/perl/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/control.in b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/control.in
new file mode 100644
index 0000000..275b801
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libperl4-corelibs-perl | perl (<< 5.12.3-7)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/install b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/install
new file mode 100644
index 0000000..595d5ed
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/debian/install
@@ -0,0 +1 @@
+Naughty.pm usr/share/perl5
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/fill-values b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/fill-values
new file mode 100644
index 0000000..2eb1bd8
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-uses-perl4-libs-with-dep
+Description: Check that script-uses-perl4-libs-without-dep works (negative)
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/orig/Naughty.pm b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/orig/Naughty.pm
new file mode 100644
index 0000000..f4a8c51
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/build-spec/orig/Naughty.pm
@@ -0,0 +1,7 @@
+package Naughty;
+use strict;
+use warnings;
+
+require 'assert.pl';
+
+1;
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/desc b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/desc
new file mode 100644
index 0000000..ae522e5
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-uses-perl4-libs-with-dep
+Test-Against: perl-module-uses-perl4-libs-without-dep
+Check: languages/perl
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/hints b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-with-dep/eval/hints
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/debian/install b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/debian/install
new file mode 100644
index 0000000..595d5ed
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/debian/install
@@ -0,0 +1 @@
+Naughty.pm usr/share/perl5
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/fill-values b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/fill-values
new file mode 100644
index 0000000..7c7335b
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-uses-perl4-libs-without-dep
+Description: Check that script-uses-perl4-libs-without-dep works (positive)
+Extra-Build-Depends: perl
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/orig/Naughty.pm b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/orig/Naughty.pm
new file mode 100644
index 0000000..f4a8c51
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/build-spec/orig/Naughty.pm
@@ -0,0 +1,7 @@
+package Naughty;
+use strict;
+use warnings;
+
+require 'assert.pl';
+
+1;
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/desc b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/desc
new file mode 100644
index 0000000..de74b29
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-uses-perl4-libs-without-dep
+Check: languages/perl
diff --git a/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/hints b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/hints
new file mode 100644
index 0000000..7dafbb5
--- /dev/null
+++ b/t/recipes/checks/languages/perl/files-uses-perl4-libs-without-dep/eval/hints
@@ -0,0 +1 @@
+files-uses-perl4-libs-without-dep (binary): perl-module-uses-perl4-libs-without-dep assert.pl [usr/share/perl5/Naughty.pm:5]
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/control b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/fill-values b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/eval/desc b/t/recipes/checks/languages/perl/legacy-filenames/eval/desc
new file mode 100644
index 0000000..6a1b7f6
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: languages/perl
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/eval/hints b/t/recipes/checks/languages/perl/legacy-filenames/eval/hints
new file mode 100644
index 0000000..f87332f
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/eval/hints
@@ -0,0 +1,2 @@
+filenames (binary): package-installs-nonbinary-perl-in-usr-lib-perl5 [usr/lib/ma-dir/perl/version/foo/bar.pm]
+filenames (binary): package-installs-nonbinary-perl-in-usr-lib-perl5 [usr/lib/ma-dir/perl/version/foo/ancient.pm]
diff --git a/t/recipes/checks/languages/perl/legacy-filenames/eval/post-test b/t/recipes/checks/languages/perl/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/languages/perl/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/control.in b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/control.in
new file mode 100644
index 0000000..34fc039
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], perl
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libperl4-corelibs-perl | perl (<< 5.12.3-7)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/install b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/install
new file mode 100644
index 0000000..1cd0e18
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/install
@@ -0,0 +1 @@
+naughty-script usr/bin
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/manpages b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/manpages
new file mode 100644
index 0000000..36ff204
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/debian/manpages
@@ -0,0 +1 @@
+naughty-script.1
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/fill-values b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/fill-values
new file mode 100644
index 0000000..11b5f91
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-uses-perl4-libs-with-dep
+Description: Check that script-uses-perl4-libs-without-dep works (negative)
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/Makefile b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/Makefile
new file mode 100644
index 0000000..a7ddd36
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+all: naughty-script.1
+
+%.1: %
+ pod2man --section 1 "$<" > "$@"
+
+clean:
+ rm -f naughty-script.1
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/naughty-script b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/naughty-script
new file mode 100644
index 0000000..50f342e
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/build-spec/orig/naughty-script
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+=head1 NAME
+
+naughty-script -- uses obsolete perl4 libs
+
+=head1 SYNOPSIS
+
+ naught-script
+
+=head1 DESCRIPTION
+
+This manpage is present to avoid a "binary-without-manpage" warning. :)
+
+=cut
+
+use strict;
+use warnings;
+
+do 'newgetopt.pl';
+
+NGetOpt();
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/desc b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/desc
new file mode 100644
index 0000000..4c34f70
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-uses-perl4-libs-with-dep
+Check: languages/perl/perl4/prerequisites
+Test-Against:
+ script-uses-perl4-libs-without-dep
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/hints b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-with-dep/eval/hints
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/install b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/install
new file mode 100644
index 0000000..1cd0e18
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/install
@@ -0,0 +1 @@
+naughty-script usr/bin
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/manpages b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/manpages
new file mode 100644
index 0000000..36ff204
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/debian/manpages
@@ -0,0 +1 @@
+naughty-script.1
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/fill-values b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/fill-values
new file mode 100644
index 0000000..3174317
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-uses-perl4-libs-without-dep
+Description: Check that script-uses-perl4-libs-without-dep works (positive)
+Extra-Build-Depends: perl
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/Makefile b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/Makefile
new file mode 100644
index 0000000..a7ddd36
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+all: naughty-script.1
+
+%.1: %
+ pod2man --section 1 "$<" > "$@"
+
+clean:
+ rm -f naughty-script.1
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/naughty-script b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/naughty-script
new file mode 100644
index 0000000..50f342e
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/build-spec/orig/naughty-script
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+=head1 NAME
+
+naughty-script -- uses obsolete perl4 libs
+
+=head1 SYNOPSIS
+
+ naught-script
+
+=head1 DESCRIPTION
+
+This manpage is present to avoid a "binary-without-manpage" warning. :)
+
+=cut
+
+use strict;
+use warnings;
+
+do 'newgetopt.pl';
+
+NGetOpt();
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/desc b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/desc
new file mode 100644
index 0000000..524f84e
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-uses-perl4-libs-without-dep
+Check: languages/perl/perl4/prerequisites
diff --git a/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/hints b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/hints
new file mode 100644
index 0000000..5853f15
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl4/prerequisites/scripts-uses-perl4-libs-without-dep/eval/hints
@@ -0,0 +1 @@
+scripts-uses-perl4-libs-without-dep (binary): script-uses-perl4-libs-without-dep (does not satisfy libperl4-corelibs-perl:any | perl:any (<< 5.12.3-7)) newgetopt.pl [usr/bin/naughty-script:20]
diff --git a/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/pkg.install b/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/pkg.install
new file mode 100644
index 0000000..bcf6074
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/pkg.install
@@ -0,0 +1 @@
+usr/lib/perl5/* targetdir/
diff --git a/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/rules b/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/rules
new file mode 100755
index 0000000..b039fd4
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+%:
+ echo This file mentions /usr/lib/perl5/. qed.
+ dh $@
diff --git a/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/fill-values b/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/fill-values
new file mode 100644
index 0000000..851b2cb
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl5/cruft-perl/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: cruft-perl
+Description: Misc errors related to Perl
diff --git a/t/recipes/checks/languages/perl/perl5/cruft-perl/eval/desc b/t/recipes/checks/languages/perl/perl5/cruft-perl/eval/desc
new file mode 100644
index 0000000..4f79e74
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl5/cruft-perl/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-perl
+Check: languages/perl/perl5
diff --git a/t/recipes/checks/languages/perl/perl5/cruft-perl/eval/hints b/t/recipes/checks/languages/perl/perl5/cruft-perl/eval/hints
new file mode 100644
index 0000000..ae7fd7f
--- /dev/null
+++ b/t/recipes/checks/languages/perl/perl5/cruft-perl/eval/hints
@@ -0,0 +1 @@
+cruft-perl (source): mentions-deprecated-usr-lib-perl5-directory [debian/rules]
diff --git a/t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/fill-values b/t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/fill-values
new file mode 100644
index 0000000..dfcfe2f
--- /dev/null
+++ b/t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: yapp-parser
+Skeleton: source-non-native
+Description: Source package with a prebuilt Parse::Yapp parser
diff --git a/t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/orig/perl/Dot.pm b/t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/orig/perl/Dot.pm
new file mode 100644
index 0000000..898b70b
--- /dev/null
+++ b/t/recipes/checks/languages/perl/yapp/yapp-parser/build-spec/orig/perl/Dot.pm
@@ -0,0 +1,14 @@
+####################################################################
+#
+# This file was generated using Parse::Yapp version 1.02.
+#
+# Don't edit this file, use source file instead.
+#
+# ANY CHANGE MADE HERE WILL BE LOST !
+#
+####################################################################
+
+Taken from lib/Graph/Reader/Dot.pm in libgraph-readwrite-perl-2.09
+on 1/22/20
+
+Felix Lechner
diff --git a/t/recipes/checks/languages/perl/yapp/yapp-parser/eval/desc b/t/recipes/checks/languages/perl/yapp/yapp-parser/eval/desc
new file mode 100644
index 0000000..3195837
--- /dev/null
+++ b/t/recipes/checks/languages/perl/yapp/yapp-parser/eval/desc
@@ -0,0 +1,3 @@
+Testname: yapp-parser
+Check: languages/perl/yapp
+See-Also: #921080
diff --git a/t/recipes/checks/languages/perl/yapp/yapp-parser/eval/hints b/t/recipes/checks/languages/perl/yapp/yapp-parser/eval/hints
new file mode 100644
index 0000000..a275624
--- /dev/null
+++ b/t/recipes/checks/languages/perl/yapp/yapp-parser/eval/hints
@@ -0,0 +1 @@
+yapp-parser (source): source-contains-prebuilt-yapp-parser [perl/Dot.pm]
diff --git a/t/recipes/checks/languages/php/composer/depends-composer/build-spec/debian/control.in b/t/recipes/checks/languages/php/composer/depends-composer/build-spec/debian/control.in
new file mode 100644
index 0000000..fc07151
--- /dev/null
+++ b/t/recipes/checks/languages/php/composer/depends-composer/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, composer
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package probably has no meaningful contents.
diff --git a/t/recipes/checks/languages/php/composer/depends-composer/build-spec/fill-values b/t/recipes/checks/languages/php/composer/depends-composer/build-spec/fill-values
new file mode 100644
index 0000000..b58213e
--- /dev/null
+++ b/t/recipes/checks/languages/php/composer/depends-composer/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: depends-composer
+Description: Installation package depends on composer
diff --git a/t/recipes/checks/languages/php/composer/depends-composer/eval/desc b/t/recipes/checks/languages/php/composer/depends-composer/eval/desc
new file mode 100644
index 0000000..108c8ec
--- /dev/null
+++ b/t/recipes/checks/languages/php/composer/depends-composer/eval/desc
@@ -0,0 +1,2 @@
+Testname: depends-composer
+Check: languages/php/composer
diff --git a/t/recipes/checks/languages/php/composer/depends-composer/eval/hints b/t/recipes/checks/languages/php/composer/depends-composer/eval/hints
new file mode 100644
index 0000000..924907b
--- /dev/null
+++ b/t/recipes/checks/languages/php/composer/depends-composer/eval/hints
@@ -0,0 +1 @@
+depends-composer (source): composer-prerequisite Depends (in section for depends-composer) [debian/control:13]
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/debian/install b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/debian/install
new file mode 100644
index 0000000..104313f
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/debian/install
@@ -0,0 +1,10 @@
+jquery* usr/share/php
+mocha.* usr/share/javascript/mocha
+bootstrap-* usr/share/php
+bootstrap.js usr/share/xul-ext/lintian
+streams.php usr/share/php
+streams.php usr/share/php/pomo
+rss_parse.php usr/share/php
+tiny_mce_popup.js usr/share/php
+jquery.js usr/share/doxygen-test/
+doxygen.css usr/share/doxygen-test
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/fill-values b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/fill-values
new file mode 100644
index 0000000..8c48bea
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-embedded
+Description: Check for detection of embedded PEAR modules
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js
new file mode 100644
index 0000000..d9c3762
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap-1.1.js
@@ -0,0 +1 @@
+This is an embedded javascript library from Twitter that uses "var Carousel";
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap.js b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap.js
new file mode 100644
index 0000000..896075b
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/bootstrap.js
@@ -0,0 +1 @@
+// https://developer.mozilla.org/en-US/docs/Extensions/bootstrap.js false positive
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/doxygen.css b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/doxygen.css
new file mode 100644
index 0000000..43dd760
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/doxygen.css
@@ -0,0 +1 @@
+Dummy CSS file so that we do not emit embedded-javascript-library in jQuery docs.
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.js b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.min.js b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.min.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/jquery.min.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.css b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.css
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.css
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.js b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/mocha.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/rss_parse.php b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/rss_parse.php
new file mode 100644
index 0000000..95afc6a
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/rss_parse.php
@@ -0,0 +1 @@
+This is not a php file.
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/streams.php b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/streams.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/streams.php
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/build-spec/orig/tiny_mce_popup.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/eval/desc b/t/recipes/checks/languages/php/embedded/files-embedded/eval/desc
new file mode 100644
index 0000000..76bfab6
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-embedded
+See-Also: <g8t2fb$r9t$4@ger.gmane.org>
+Check: languages/php/embedded
diff --git a/t/recipes/checks/languages/php/embedded/files-embedded/eval/hints b/t/recipes/checks/languages/php/embedded/files-embedded/eval/hints
new file mode 100644
index 0000000..613116c
--- /dev/null
+++ b/t/recipes/checks/languages/php/embedded/files-embedded/eval/hints
@@ -0,0 +1,2 @@
+files-embedded (binary): embedded-php-library please use php-php-gettext [usr/share/php/streams.php]
+files-embedded (binary): embedded-php-library please use libphp-magpierss [usr/share/php/rss_parse.php]
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/clean b/t/recipes/checks/languages/php/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/dirs b/t/recipes/checks/languages/php/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/examples b/t/recipes/checks/languages/php/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/install b/t/recipes/checks/languages/php/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/links b/t/recipes/checks/languages/php/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/manpages b/t/recipes/checks/languages/php/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/debian/rules b/t/recipes/checks/languages/php/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/fill-values b/t/recipes/checks/languages/php/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/--lzma b/t/recipes/checks/languages/php/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/dir b/t/recipes/checks/languages/php/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/languages/php/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/foo.5 b/t/recipes/checks/languages/php/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/languages/php/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/languages/php/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/languages/php/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/sudotest b/t/recipes/checks/languages/php/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/languages/php/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/languages/php/files-general/build-spec/orig/types b/t/recipes/checks/languages/php/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/languages/php/files-general/eval/desc b/t/recipes/checks/languages/php/files-general/eval/desc
new file mode 100644
index 0000000..08c0224
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: languages/php
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/languages/php/files-general/eval/hints b/t/recipes/checks/languages/php/files-general/eval/hints
new file mode 100644
index 0000000..ca5f75c
--- /dev/null
+++ b/t/recipes/checks/languages/php/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): obsolete-comments-style-in-php-ini [etc/php/7.0/mods-available/php-foo.ini]
diff --git a/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/fill-values b/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/fill-values
new file mode 100644
index 0000000..e887351
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: phppear-composer
+Description: Composer phppear tests
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/composer.json b/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/composer.json
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/composer.json
diff --git a/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/foo.php b/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/foo.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composer/build-spec/orig/foo.php
diff --git a/t/recipes/checks/languages/php/pear/phppear-composer/eval/desc b/t/recipes/checks/languages/php/pear/phppear-composer/eval/desc
new file mode 100644
index 0000000..bd290c8
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composer/eval/desc
@@ -0,0 +1,4 @@
+Testname: phppear-composer
+Test-Against:
+ missing-pkg-php-tools-addon
+Check: languages/php/pear
diff --git a/t/recipes/checks/languages/php/pear/phppear-composer/eval/hints b/t/recipes/checks/languages/php/pear/phppear-composer/eval/hints
new file mode 100644
index 0000000..053998c
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composer/eval/hints
@@ -0,0 +1 @@
+phppear-composer (source): composer-package-without-pkg-php-tools-builddep [composer.json]
diff --git a/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/debian/control.in b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/debian/control.in
new file mode 100644
index 0000000..d4d8130
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dh-sequence-phpcomposer, php-dev, dh-php
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${phppear:Debian-Depends}
+Recommends: ${phppear:Debian-Recommends}
+Breaks: ${phppear:Debian-Breaks}
+Description: ${phppear:summary}
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ ${phppear:description}
diff --git a/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/fill-values b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/fill-values
new file mode 100644
index 0000000..2999d86
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: phppear-composerok
+Description: Composer phppear tests with dh-sequence-phpcomposer
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/composer.json b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/composer.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/composer.json
@@ -0,0 +1 @@
+{}
diff --git a/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/foo.php b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/foo.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composerok/build-spec/orig/foo.php
diff --git a/t/recipes/checks/languages/php/pear/phppear-composerok/eval/desc b/t/recipes/checks/languages/php/pear/phppear-composerok/eval/desc
new file mode 100644
index 0000000..589e12b
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composerok/eval/desc
@@ -0,0 +1,4 @@
+Testname: phppear-composerok
+Test-Against:
+ missing-pkg-php-tools-addon
+Check: languages/php/pear
diff --git a/t/recipes/checks/languages/php/pear/phppear-composerok/eval/hints b/t/recipes/checks/languages/php/pear/phppear-composerok/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-composerok/eval/hints
diff --git a/t/recipes/checks/languages/php/pear/phppear-general/build-spec/fill-values b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/fill-values
new file mode 100644
index 0000000..9b8bcd0
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: phppear-general
+Description: General phppear tests
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/channel.xml b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/channel.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/channel.xml
diff --git a/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/foo.php b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/foo.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/foo.php
diff --git a/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/package.xml b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/package.xml
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-general/build-spec/orig/package.xml
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/languages/php/pear/phppear-general/eval/desc b/t/recipes/checks/languages/php/pear/phppear-general/eval/desc
new file mode 100644
index 0000000..af1274d
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: phppear-general
+Test-Against:
+ missing-pkg-php-tools-buildsystem
+Check: languages/php/pear
diff --git a/t/recipes/checks/languages/php/pear/phppear-general/eval/hints b/t/recipes/checks/languages/php/pear/phppear-general/eval/hints
new file mode 100644
index 0000000..25b02e1
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-general/eval/hints
@@ -0,0 +1,2 @@
+phppear-general (source): pear-package-without-pkg-php-tools-builddep
+phppear-general (source): pear-channel-without-pkg-php-tools-builddep [channel.xml]
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/debian/pkg-php-tools-overrides b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/debian/pkg-php-tools-overrides
new file mode 100644
index 0000000..1837cbe
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/debian/pkg-php-tools-overrides
@@ -0,0 +1 @@
+pear.example.org Any_Dummy php-test-dummy
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/fill-values b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/fill-values
new file mode 100644
index 0000000..fdf722e
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: phppear-pear
+Description: phppear tests for PEAR packages
+Extra-Build-Depends: pkg-php-tools
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/foo.php b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/foo.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/foo.php
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package.xml b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package.xml
new file mode 100644
index 0000000..1076ad7
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.8.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+ <name>MyProject_Packages</name>
+ <channel>pear.php.net</channel>
+ <summary>this is a wrapper package for installing dependencies for MyProject</summary>
+ <description>&lt;Some random notes&gt;</description>
+ <lead>
+ <name>fred</name>
+ <user>fred</user>
+ <email>fred@example.com</email>
+ <active>yes</active>
+ </lead>
+ <date>2009-05-08</date>
+ <time>00:58:09</time>
+ <version>
+ <release>0.0.1</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <license uri="http://www.gnu.org/licenses/lgpl.html">LGPL</license>
+ <notes>
+&lt;none&gt;
+ </notes>
+ <contents>
+ <dir baseinstalldir="/dev/null" name="/">
+ <file baseinstalldir="/dev/null" md5sum="d41d8cd98f00b204e9800998ecf8427e" name="empty.php" role="php"/>
+ </dir>
+ </contents>
+ <dependencies>
+ <required>
+ <php>
+ <min>5.2.1</min>
+ </php>
+ <pearinstaller>
+ <min>1.8.0</min>
+ </pearinstaller>
+ </required>
+ </dependencies>
+ <extsrcrelease/>
+ <changelog>
+ <release>
+ <version>
+ <release>0.0.1</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <date>2009-05-08</date>
+ <license uri="http://www.gnu.org/licenses/lgpl.html">LGPL</license>
+ <notes>
+&lt;none&gt;
+ </notes>
+ </release>
+ </changelog>
+</package>
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package2.xml b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package2.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/build-spec/orig/package2.xml
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/eval/desc b/t/recipes/checks/languages/php/pear/phppear-pear/eval/desc
new file mode 100644
index 0000000..9b8ffa9
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/eval/desc
@@ -0,0 +1,2 @@
+Testname: phppear-pear
+Check: languages/php/pear
diff --git a/t/recipes/checks/languages/php/pear/phppear-pear/eval/hints b/t/recipes/checks/languages/php/pear/phppear-pear/eval/hints
new file mode 100644
index 0000000..e6692ab
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pear/eval/hints
@@ -0,0 +1,10 @@
+phppear-pear (source): pecl-package-requires-build-dependency php-dev [package.xml]
+phppear-pear (source): pecl-package-requires-build-dependency dh-php [package.xml]
+phppear-pear (source): pear-package-not-using-substvar ${phppear:summary}
+phppear-pear (source): pear-package-not-using-substvar ${phppear:description}
+phppear-pear (source): pear-package-but-missing-dependency Recommends
+phppear-pear (source): pear-package-but-missing-dependency Depends
+phppear-pear (source): pear-package-but-missing-dependency Breaks
+phppear-pear (source): missing-pkg-php-tools-buildsystem phppear [debian/rules]
+phppear-pear (source): missing-pkg-php-tools-addon phppear [debian/rules]
+phppear-pear (source): missing-pkg-php-tools-addon php [debian/rules]
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/control.in b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/control.in
new file mode 100644
index 0000000..edf2cde
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], pkg-php-tools, php-dev, dh-php
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${phppear:Debian-Depends}
+Recommends: ${phppear:Debian-Recommends}
+Breaks: ${phppear:Debian-Breaks}
+Description: ${phppear:summary}
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ ${phppear:description}
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/rules b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/rules
new file mode 100755
index 0000000..02621c3
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/debian/rules
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+%:
+ dh $@ --with phppear --buildsystem phppear
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/fill-values b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/fill-values
new file mode 100644
index 0000000..2b7c209
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: phppear-pearok
+Description: phppear tests for PEAR packages
+Extra-Build-Depends: uglifyjs
+Skeleton: upload-non-native
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/MyProject_Packages-0.0.1/empty.php b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/MyProject_Packages-0.0.1/empty.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/MyProject_Packages-0.0.1/empty.php
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/foo.php b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/foo.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/foo.php
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/package.xml b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/package.xml
new file mode 100644
index 0000000..57af010
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/build-spec/orig/package.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.8.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+ <name>MyProject_Packages</name>
+ <channel>pear.php.net</channel>
+ <summary>this is a wrapper package for installing dependencies for MyProject</summary>
+ <description>&lt;Some random notes&gt;</description>
+ <lead>
+ <name>fred</name>
+ <user>fred</user>
+ <email>fred@example.com</email>
+ <active>yes</active>
+ </lead>
+ <date>2009-05-08</date>
+ <time>00:58:09</time>
+ <version>
+ <release>0.0.1</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <license uri="http://www.gnu.org/licenses/lgpl.html">LGPL</license>
+ <notes>
+&lt;none&gt;
+ </notes>
+ <contents>
+ <dir baseinstalldir="Test" name="/">
+ <file baseinstalldir="Test" md5sum="d41d8cd98f00b204e9800998ecf8427e" name="empty.php" role="php"/>
+ </dir>
+ </contents>
+ <dependencies>
+ <required>
+ <php>
+ <min>5.2.1</min>
+ </php>
+ <pearinstaller>
+ <min>1.8.0</min>
+ </pearinstaller>
+ </required>
+ </dependencies>
+ <phprelease/>
+ <changelog>
+ <release>
+ <version>
+ <release>0.0.1</release>
+ <api>0.0.1</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <date>2009-05-08</date>
+ <license uri="http://www.gnu.org/licenses/lgpl.html">LGPL</license>
+ <notes>
+&lt;none&gt;
+ </notes>
+ </release>
+ </changelog>
+</package>
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/eval/desc b/t/recipes/checks/languages/php/pear/phppear-pearok/eval/desc
new file mode 100644
index 0000000..ecae0c2
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/eval/desc
@@ -0,0 +1,8 @@
+Testname: phppear-pearok
+Test-Against:
+ missing-pkg-php-tools-addon
+ missing-pkg-php-tools-buildsystem
+ pear-package-but-missing-dependency
+ pear-package-not-using-substvar
+ pecl-package-requires-build-dependency
+Check: languages/php/pear
diff --git a/t/recipes/checks/languages/php/pear/phppear-pearok/eval/hints b/t/recipes/checks/languages/php/pear/phppear-pearok/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/php/pear/phppear-pearok/eval/hints
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/build-spec/fill-values b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/build-spec/fill-values
new file mode 100644
index 0000000..84051f4
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: what-is-python-build-depends
+Skeleton: source-native
+Extra-Build-Depends: python-dev-is-python3
+Descriptions: Build-Depends on python-is-python3-dev
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/desc b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/desc
new file mode 100644
index 0000000..e2cbf55
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/desc
@@ -0,0 +1,3 @@
+Testname: what-is-python-build-depends
+Check: languages/python/bogus-prerequisites
+See-Also: Debian Bug #973011
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/hints b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/hints
new file mode 100644
index 0000000..c331f2b
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-build-depends/eval/hints
@@ -0,0 +1 @@
+what-is-python-build-depends (source): bogus-python-prerequisite Build-Depends (satisfies python-dev-is-python3:any)
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/debian/control.in b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..30a24a9
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, python-is-python3
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/fill-values b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/fill-values
new file mode 100644
index 0000000..1b3816c
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: what-is-python-depends
+Skeleton: upload-native
+Descriptions: Depends on python-is-python3
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/desc b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/desc
new file mode 100644
index 0000000..34cd4e1
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/desc
@@ -0,0 +1,3 @@
+Testname: what-is-python-depends
+Check: languages/python/bogus-prerequisites
+See-Also: Debian Bug #973011
diff --git a/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/hints b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/hints
new file mode 100644
index 0000000..0425694
--- /dev/null
+++ b/t/recipes/checks/languages/python/bogus-prerequisites/what-is-python-depends/eval/hints
@@ -0,0 +1 @@
+what-is-python-depends (binary): bogus-python-prerequisite Depends (satisfies python-is-python3:any)
diff --git a/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/debian/py3dist-overrides b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/debian/py3dist-overrides
new file mode 100644
index 0000000..9e1c71d
--- /dev/null
+++ b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/debian/py3dist-overrides
@@ -0,0 +1,2 @@
+gi.repository.Gst gir1.2-gst-plugins-base-1.0
+gi.repository.Gst gir1.2-gstreamer-1.0
diff --git a/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/fill-values b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/fill-values
new file mode 100644
index 0000000..881cb56
--- /dev/null
+++ b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: duplicate-identifier
+Description: Duplicate identifier in d/py3dist-overrides
diff --git a/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/desc b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/desc
new file mode 100644
index 0000000..2c1e04d
--- /dev/null
+++ b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/desc
@@ -0,0 +1,2 @@
+Testname: duplicate-identifier
+Check: languages/python/dist-overrides
diff --git a/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/hints b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/hints
new file mode 100644
index 0000000..c90c63d
--- /dev/null
+++ b/t/recipes/checks/languages/python/dist-overrides/duplicate-identifier/eval/hints
@@ -0,0 +1 @@
+duplicate-identifier (source): duplicate-p3dist-override gi.repository.Gst
diff --git a/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/debian/control.in b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/debian/control.in
new file mode 100644
index 0000000..8d38d33
--- /dev/null
+++ b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/fill-values b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/fill-values
new file mode 100644
index 0000000..bc3d5c9
--- /dev/null
+++ b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-imports-distutils
+Description: Check packages that have python files importing distutils
diff --git a/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/from.py b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/from.py
new file mode 100644
index 0000000..2c545b0
--- /dev/null
+++ b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/from.py
@@ -0,0 +1,7 @@
+#!/usr/bin/python3
+
+import os
+import time
+import argparse
+
+from distutils.version import StrictVersion
diff --git a/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/import.py b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/import.py
new file mode 100644
index 0000000..52f9843
--- /dev/null
+++ b/t/recipes/checks/languages/python/distutils/python-imports-distutils/build-spec/orig/import.py
@@ -0,0 +1,3 @@
+#!/usr/bin/python3
+
+import distutils
diff --git a/t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/desc b/t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/desc
new file mode 100644
index 0000000..cf33da9
--- /dev/null
+++ b/t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-imports-distutils
+Check: languages/python/distutils
diff --git a/t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/hints b/t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/hints
new file mode 100644
index 0000000..92c2b6b
--- /dev/null
+++ b/t/recipes/checks/languages/python/distutils/python-imports-distutils/eval/hints
@@ -0,0 +1,2 @@
+python-imports-distutils (source): uses-python-distutils [import.py:3]
+python-imports-distutils (source): uses-python-distutils [from.py:7]
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/debian/install b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/debian/install
new file mode 100644
index 0000000..c18d2a0
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/debian/install
@@ -0,0 +1,11 @@
+jquery* usr/share/php
+mocha.* usr/share/javascript/mocha
+bootstrap-* usr/share/php
+bootstrap.js usr/share/xul-ext/lintian
+feedparser.py usr/share/php
+streams.php usr/share/php
+streams.php usr/share/php/pomo
+rss_parse.php usr/share/php
+tiny_mce_popup.js usr/share/php
+jquery.js usr/share/doxygen-test/
+doxygen.css usr/share/doxygen-test
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/fill-values b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/fill-values
new file mode 100644
index 0000000..8c48bea
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-embedded
+Description: Check for detection of embedded PEAR modules
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap-1.1.js b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap-1.1.js
new file mode 100644
index 0000000..d9c3762
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap-1.1.js
@@ -0,0 +1 @@
+This is an embedded javascript library from Twitter that uses "var Carousel";
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap.js b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap.js
new file mode 100644
index 0000000..896075b
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/bootstrap.js
@@ -0,0 +1 @@
+// https://developer.mozilla.org/en-US/docs/Extensions/bootstrap.js false positive
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/doxygen.css b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/doxygen.css
new file mode 100644
index 0000000..43dd760
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/doxygen.css
@@ -0,0 +1 @@
+Dummy CSS file so that we do not emit embedded-javascript-library in jQuery docs.
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/feedparser.py b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/feedparser.py
new file mode 100644
index 0000000..c6a4922
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/feedparser.py
@@ -0,0 +1 @@
+This is not the "Universal feed parser", but it will do for this test. :)
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.js b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.min.js b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.min.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/jquery.min.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.css b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.css
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.css
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.js b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/mocha.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/rss_parse.php b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/rss_parse.php
new file mode 100644
index 0000000..95afc6a
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/rss_parse.php
@@ -0,0 +1 @@
+This is not a php file.
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/streams.php b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/streams.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/streams.php
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/tiny_mce_popup.js b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/tiny_mce_popup.js
new file mode 100644
index 0000000..6d56007
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/build-spec/orig/tiny_mce_popup.js
@@ -0,0 +1 @@
+This is an embedded javascript library
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/eval/desc b/t/recipes/checks/languages/python/feedparser/files-embedded/eval/desc
new file mode 100644
index 0000000..ccb08e2
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-embedded
+See-Also: <g8t2fb$r9t$4@ger.gmane.org>
+Check: languages/python/feedparser
diff --git a/t/recipes/checks/languages/python/feedparser/files-embedded/eval/hints b/t/recipes/checks/languages/python/feedparser/files-embedded/eval/hints
new file mode 100644
index 0000000..47bca39
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/files-embedded/eval/hints
@@ -0,0 +1 @@
+files-embedded (binary): embedded-feedparser-library [usr/share/php/feedparser.py]
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/control b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/fill-values b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/feedparser.py b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/feedparser.py
new file mode 100644
index 0000000..c1c2c2e
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/build-spec/orig/data/feedparser.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+"""Universal feed parser
+
+Handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds
+
+Visit http://feedparser.org/ for the latest version
+Visit http://feedparser.org/docs/ for the latest documentation
+
+Required: Python 2.1 or later
+Recommended: Python 2.3 or later
+Recommended: CJKCodecs and iconv_codec <http://cjkpython.i18n.org/>
+"""
+
+__version__ = "4.1"# + "$Revision: 1.92 $"[11:15] + "-cvs"
+
+# (snip)
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/desc b/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/desc
new file mode 100644
index 0000000..a78a963
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: languages/python/feedparser
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/hints b/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/hints
new file mode 100644
index 0000000..0616e5f
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): embedded-feedparser-library [files/feedparser.py]
diff --git a/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/post-test b/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/languages/python/feedparser/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/eval/desc b/t/recipes/checks/languages/python/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..d76975b
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/eval/hints b/t/recipes/checks/languages/python/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..e8f7115
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/eval/hints
@@ -0,0 +1,3 @@
+files-foo-in-bar (binary): third-party-package-in-python-dir [usr/lib/python2.7/bar]
+files-foo-in-bar (binary): file-in-usr-lib-site-python [usr/lib/site-python/foo/bar]
+files-foo-in-bar (binary): file-in-usr-lib-site-python [usr/lib/site-python/foo/]
diff --git a/t/recipes/checks/languages/python/files-foo-in-bar/eval/post-test b/t/recipes/checks/languages/python/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/debian/compat.in b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/debian/control.in b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/control.in
new file mode 100644
index 0000000..cbad865
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/control.in
@@ -0,0 +1,53 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], dpkg-dev (>= 1.16.1~)
+Rules-Requires-Root: no
+
+Package: python-kinterbasdb
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python-kinterbasdb-dbg
+Architecture: any
+Section: debug
+Depends: ${misc:Depends}, python-kinterbasdb (= ${binary:Version}),
+ ${shlibs:Depends}
+Description: [% $description %] - debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a fake debug package.
+
+Package: python3-modulename
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %] (Python 3.x)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3.x version.
+
+Package: python3-modulename-dbg
+Architecture: any
+Section: debug
+Depends: ${misc:Depends}, python3-modulename (= ${binary:Version}),
+ ${shlibs:Depends}
+Description: [% $description %] - debug (Python 3.x) version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a fake Python 3.x debug package.
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/debian/python-kinterbasdb.install b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/python-kinterbasdb.install
new file mode 100644
index 0000000..ad14f96
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/python-kinterbasdb.install
@@ -0,0 +1,7 @@
+code.pyc usr/share/python-kinterbasdb/
+code.pyo usr/share/python-kinterbasdb/
+code.pyc usr/share/python-kinterbasdb/__pycache__/
+code.pyo usr/share/python-kinterbasdb/__pycache__/
+objects.inv usr/share/doc/python-kinterbasdb/docs/
+python.egg usr/share/python-kinterbasdb/
+python-module.so usr/lib/pyshared/python2.7
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/debian/rules b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/rules
new file mode 100644
index 0000000..1648ccd
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+DPKG_EXPORT_BUILDFLAGS:=1
+include /usr/share/dpkg/buildflags.mk
+
+DOCS:=debian/python-kinterbasdb/usr/share/doc/python-kinterbasdb/docs
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -ppython-kinterbasdb --dbg-package=python-kinterbasdb-dbg
+ dh_strip --remaining-packages
+
+override_dh_compress:
+ dh_compress
+ # Manually compress it, since debhelper will fix #608907
+ # in the "near" future.
+ [ -f "$(DOCS)/objects.inv.gz" ] || gzip -n --best "$(DOCS)/objects.inv"
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/fill-values b/t/recipes/checks/languages/python/files-python-general/build-spec/fill-values
new file mode 100644
index 0000000..4177acc
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: files-python-general
+Dh-Compat-Level: 7
+Description: Test general Python related tags
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/orig/Makefile b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..e246faf
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/Makefile
@@ -0,0 +1,7 @@
+all: lib.c
+ echo 'Hallo World' > code.pyc
+ echo 'Hallo World' > code.pyo
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -o python-module.so lib.c
+
+distclean:
+ rm -f code.pyc code.pyo python-module.so
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/orig/lib.c b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/lib.c
new file mode 100644
index 0000000..30d6ed5
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/lib.c
@@ -0,0 +1,4 @@
+int do_something(int (*a)(char *)){
+ char test[10];
+ return a(test);
+}
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/orig/objects.inv b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/objects.inv
new file mode 100644
index 0000000..2dcebcb
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/objects.inv
@@ -0,0 +1,199 @@
+# Sphinx inventory version 1
+# Project: KInterbasDB
+# Version: 3.3
+kinterbasdb.typeconv_23plus_lowmem mod beyond-python-db-api.html
+kinterbasdb mod index.html
+kinterbasdb.typeconv_naked mod beyond-python-db-api.html
+kinterbasdb.typeconv_fixed_fixedpoint mod beyond-python-db-api.html
+kinterbasdb.typeconv_23plus mod beyond-python-db-api.html
+kinterbasdb.typeconv_fixed_decimal mod beyond-python-db-api.html
+kinterbasdb.typeconv_fixed_stdlib mod beyond-python-db-api.html
+kinterbasdb.typeconv_datetime_stdlib mod beyond-python-db-api.html
+kinterbasdb.typeconv_text_unicode mod beyond-python-db-api.html
+kinterbasdb.typeconv_datetime_mx mod beyond-python-db-api.html
+kinterbasdb.typeconv_backcompat mod beyond-python-db-api.html
+kinterbasdb.services mod beyond-python-db-api.html
+kinterbasdb.typeconv_24plus mod beyond-python-db-api.html
+kinterbasdb.services.Connection.getArchitecture method beyond-python-db-api.html
+kinterbasdb.connect function python-db-api-compliance.html
+kinterbasdb.Cursor.transaction attribute beyond-python-db-api.html
+Cursor.executemany method Python-DB-API-2.0.html
+kinterbasdb.TableReservation.render method beyond-python-db-api.html
+Error exception Python-DB-API-2.0.html
+kinterbasdb.PreparedStatement.description attribute beyond-python-db-api.html
+kinterbasdb.DATETIME data python-db-api-compliance.html
+kinterbasdb.Connection.prepare method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.sql attribute beyond-python-db-api.html
+kinterbasdb.Transaction.cursors attribute beyond-python-db-api.html
+kinterbasdb.Connection.trans method beyond-python-db-api.html
+kinterbasdb.services.Conenction.setWriteMode method beyond-python-db-api.html
+kinterbasdb.Connection.event_conduit method beyond-python-db-api.html
+kinterbasdb.BlobReader.chunks method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.prepare method beyond-python-db-api.html
+kinterbasdb.TableReservation class beyond-python-db-api.html
+Cursor.close method Python-DB-API-2.0.html
+kinterbasdb.Transaction.n_physical attribute beyond-python-db-api.html
+TimestampFromTicks function Python-DB-API-2.0.html
+kinterbasdb.CT_NONTRANSPARENT data beyond-python-db-api.html
+kinterbasdb.TPB.isolation_level attribute beyond-python-db-api.html
+kinterbasdb.Transaction.close method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.n_output_params attribute beyond-python-db-api.html
+Cursor.nextset method Python-DB-API-2.0.html
+DATETIME data Python-DB-API-2.0.html
+kinterbasdb.Cursor.rowcount attribute python-db-api-compliance.html
+kinterbasdb.Connection.database_info method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.remove method beyond-python-db-api.html
+kinterbasdb.TPB.render method beyond-python-db-api.html
+kinterbasdb.services.Conenction.modifyUser method beyond-python-db-api.html
+kinterbasdb.services.Conenction.rollbackLimboTransaction method beyond-python-db-api.html
+kinterbasdb.Transaction.__init__ method beyond-python-db-api.html
+kinterbasdb.services.Connection.getHomeDir method beyond-python-db-api.html
+kinterbasdb.Cursor.setinputsizes method python-db-api-compliance.html
+paramstyle data Python-DB-API-2.0.html
+kinterbasdb.TPB.lock_timeout attribute beyond-python-db-api.html
+Connection.rollback method Python-DB-API-2.0.html
+kinterbasdb.EventConduit.close method beyond-python-db-api.html
+kinterbasdb.Cursor.arraysize attribute python-db-api-compliance.html
+DatabaseError exception Python-DB-API-2.0.html
+kinterbasdb.Cursor.description attribute python-db-api-compliance.html
+kinterbasdb.EventConduit.flush method beyond-python-db-api.html
+kinterbasdb.services.Connection.close method beyond-python-db-api.html
+kinterbasdb.services.Conenction.activateShadowFile method beyond-python-db-api.html
+kinterbasdb.Cursor.setoutputsize method python-db-api-compliance.html
+kinterbasdb.ConnectionGroup.commit method beyond-python-db-api.html
+kinterbasdb.services.Conenction.setSQLDialect method beyond-python-db-api.html
+connect function Python-DB-API-2.0.html
+Cursor.setinputsizes method Python-DB-API-2.0.html
+kinterbasdb.Connection.dialect attribute python-db-api-compliance.html
+kinterbasdb.Connection.execute_immediate method python-db-api-compliance.html
+kinterbasdb.create_database function beyond-python-db-api.html
+kinterbasdb.Connection.get_type_trans_in method beyond-python-db-api.html
+kinterbasdb.TPB class beyond-python-db-api.html
+kinterbasdb.services.connect function beyond-python-db-api.html
+kinterbasdb.Transaction.commit method beyond-python-db-api.html
+kinterbasdb.Connection.charset attribute python-db-api-compliance.html
+TimeFromTicks function Python-DB-API-2.0.html
+kinterbasdb.Connection.savepoint method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchallmap method python-db-api-compliance.html
+kinterbasdb.PreparedStatement.statement_type attribute beyond-python-db-api.html
+kinterbasdb.Cursor class beyond-python-db-api.html
+kinterbasdb.services.Conenction.setShouldReservePageSpace method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup class beyond-python-db-api.html
+Cursor.callproc method Python-DB-API-2.0.html
+kinterbasdb.services.Connection class beyond-python-db-api.html
+kinterbasdb.services.Connection.getServiceManagerVersion method beyond-python-db-api.html
+IntegrityError exception Python-DB-API-2.0.html
+kinterbasdb.Transaction class beyond-python-db-api.html
+Cursor class Python-DB-API-2.0.html
+kinterbasdb.Connection.drop_database method beyond-python-db-api.html
+Connection.commit method Python-DB-API-2.0.html
+kinterbasdb.services.Conenction.userExists method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchone method python-db-api-compliance.html
+kinterbasdb.Connection.transactions attribute beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.disband method beyond-python-db-api.html
+InterfaceError exception Python-DB-API-2.0.html
+kinterbasdb.Transaction.connection attribute beyond-python-db-api.html
+kinterbasdb.Connection.rollback method python-db-api-compliance.html
+kinterbasdb.services.Connection.getStatistics method beyond-python-db-api.html
+kinterbasdb.TPB.access_mode attribute beyond-python-db-api.html
+kinterbasdb.services.Connection.getCapabilityMask method beyond-python-db-api.html
+kinterbasdb.Connection.precision_mode attribute python-db-api-compliance.html
+kinterbasdb.Connection.transaction_info method beyond-python-db-api.html
+kinterbasdb.EventConduit class beyond-python-db-api.html
+BINARY data Python-DB-API-2.0.html
+kinterbasdb.Connection.db_info method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.add method beyond-python-db-api.html
+Binary function Python-DB-API-2.0.html
+kinterbasdb.init function beyond-python-db-api.html
+Cursor.setoutputsize method Python-DB-API-2.0.html
+kinterbasdb.CT_COMMIT data beyond-python-db-api.html
+kinterbasdb.services.Connection.getConnectionCount method beyond-python-db-api.html
+kinterbasdb.services.Connection.getLockFileDir method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.contains method beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.rollback method beyond-python-db-api.html
+kinterbasdb.Connection.set_type_trans_in method beyond-python-db-api.html
+kinterbasdb.Transaction.trans_info method beyond-python-db-api.html
+Cursor.rowcount attribute Python-DB-API-2.0.html
+threadsafety data Python-DB-API-2.0.html
+kinterbasdb.services.Connection.restore method beyond-python-db-api.html
+Warning exception Python-DB-API-2.0.html
+kinterbasdb.services.Connection.getSecurityDatabasePath method beyond-python-db-api.html
+Timestamp function Python-DB-API-2.0.html
+kinterbasdb.Cursor.fetchmanymap method python-db-api-compliance.html
+kinterbasdb.Transaction.closed attribute beyond-python-db-api.html
+kinterbasdb.Cursor.fetchonemap method python-db-api-compliance.html
+Date function Python-DB-API-2.0.html
+kinterbasdb.ConnectionGroup.count method beyond-python-db-api.html
+kinterbasdb.services.Connection.setSweepInterval method beyond-python-db-api.html
+ProgrammingError exception Python-DB-API-2.0.html
+kinterbasdb.Transaction.begin method beyond-python-db-api.html
+kinterbasdb.CT_ROLLBACK data beyond-python-db-api.html
+kinterbasdb.Cursor.set_type_trans_in method beyond-python-db-api.html
+kinterbasdb.services.Conenction.shutdown method beyond-python-db-api.html
+kinterbasdb.services.Connection.getAttachedDatabaseNames method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchall method python-db-api-compliance.html
+kinterbasdb.services.Connection.backup method beyond-python-db-api.html
+Connection class Python-DB-API-2.0.html
+kinterbasdb.ConnectionGroup.begin method beyond-python-db-api.html
+Time function Python-DB-API-2.0.html
+kinterbasdb.services.Connection.getMessageFileDir method beyond-python-db-api.html
+kinterbasdb.Transaction.resolution attribute beyond-python-db-api.html
+Connection.cursor method Python-DB-API-2.0.html
+kinterbasdb.ConnectionGroup.__init__ method beyond-python-db-api.html
+kinterbasdb.Cursor.itermap method python-db-api-compliance.html
+kinterbasdb.services.User class beyond-python-db-api.html
+DataError exception Python-DB-API-2.0.html
+kinterbasdb.CT_VETO data beyond-python-db-api.html
+kinterbasdb.services.Conenction.bringOnline method beyond-python-db-api.html
+apilevel data Python-DB-API-2.0.html
+kinterbasdb.Cursor.get_type_trans_in method beyond-python-db-api.html
+InternalError exception Python-DB-API-2.0.html
+NUMBER data Python-DB-API-2.0.html
+kinterbasdb.services.Conenction.repair method beyond-python-db-api.html
+Cursor.fetchall method Python-DB-API-2.0.html
+kinterbasdb.Transaction.prepare method beyond-python-db-api.html
+kinterbasdb.Transaction.rollback method beyond-python-db-api.html
+kinterbasdb.services.Conenction.setAccessMode method beyond-python-db-api.html
+Cursor.fetchmany method Python-DB-API-2.0.html
+kinterbasdb.services.Connection.getServerVersion method beyond-python-db-api.html
+kinterbasdb.Transaction.cursor method beyond-python-db-api.html
+kinterbasdb.services.Conenction.commitLimboTransaction method beyond-python-db-api.html
+kinterbasdb.Cursor.fetchmany method python-db-api-compliance.html
+Cursor.execute method Python-DB-API-2.0.html
+kinterbasdb.services.Conenction.removeUser method beyond-python-db-api.html
+kinterbasdb.Cursor.name attribute beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.clear method beyond-python-db-api.html
+kinterbasdb.Connection class beyond-python-db-api.html
+kinterbasdb.Connection.main_transaction attribute beyond-python-db-api.html
+kinterbasdb.Cursor.prep method beyond-python-db-api.html
+kinterbasdb.Cursor.nextset method python-db-api-compliance.html
+kinterbasdb.BlobReader class beyond-python-db-api.html
+kinterbasdb.TPB.lock_resolution attribute beyond-python-db-api.html
+kinterbasdb.services.Conenction.getLimboTransactionIDs method beyond-python-db-api.html
+STRING data Python-DB-API-2.0.html
+Cursor.description attribute Python-DB-API-2.0.html
+NotSupportedError exception Python-DB-API-2.0.html
+kinterbasdb.PreparedStatement class beyond-python-db-api.html
+kinterbasdb.ConnectionGroup.members method beyond-python-db-api.html
+kinterbasdb.services.Conenction.addUser method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.n_input_params attribute beyond-python-db-api.html
+kinterbasdb.services.Conenction.setDefaultPageBuffers method beyond-python-db-api.html
+kinterbasdb.Connection.server_version attribute python-db-api-compliance.html
+Connection.close method Python-DB-API-2.0.html
+kinterbasdb.Connection.trans_info method beyond-python-db-api.html
+kinterbasdb.Cursor.iter method python-db-api-compliance.html
+DateFromTicks function Python-DB-API-2.0.html
+kinterbasdb.EventConduit.wait method beyond-python-db-api.html
+kinterbasdb.EventConduit.__init__ method beyond-python-db-api.html
+Cursor.fetchone method Python-DB-API-2.0.html
+kinterbasdb.Transaction.savepoint method beyond-python-db-api.html
+kinterbasdb.services.Conenction.getUsers method beyond-python-db-api.html
+kinterbasdb.TPB.table_reservation attribute beyond-python-db-api.html
+kinterbasdb.Transaction.transaction_info method beyond-python-db-api.html
+kinterbasdb.PreparedStatement.plan attribute beyond-python-db-api.html
+kinterbasdb.services.Connection.getLog method beyond-python-db-api.html
+ROWID data Python-DB-API-2.0.html
+kinterbasdb.Connection.begin method beyond-python-db-api.html
+kinterbasdb.services.Connection.sweep method beyond-python-db-api.html
+kinterbasdb.Connection.commit method python-db-api-compliance.html
+OperationalError exception Python-DB-API-2.0.html
diff --git a/t/recipes/checks/languages/python/files-python-general/build-spec/orig/python.egg b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/python.egg
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/build-spec/orig/python.egg
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/languages/python/files-python-general/eval/desc b/t/recipes/checks/languages/python/files-python-general/eval/desc
new file mode 100644
index 0000000..ec10a93
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-python-general
+See-Also: Debian Bug#608810, Debian Bug#756005
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/files-python-general/eval/hints b/t/recipes/checks/languages/python/files-python-general/eval/hints
new file mode 100644
index 0000000..a9db459
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-general/eval/hints
@@ -0,0 +1,7 @@
+files-python-general (source): python-foo-but-no-python3-foo python-kinterbasdb-dbg
+files-python-general (source): python-foo-but-no-python3-foo python-kinterbasdb
+python-kinterbasdb-dbg (binary): python-debug-in-wrong-location better: usr/lib/debug/usr/lib/pymodules/python2.7/python-module.so [usr/lib/debug/usr/lib/pyshared/python2.7/python-module.so]
+python-kinterbasdb (binary): package-installs-python-pycache-dir [usr/share/python-kinterbasdb/__pycache__/]
+python-kinterbasdb (binary): package-installs-python-egg [usr/share/python-kinterbasdb/python.egg]
+python-kinterbasdb (binary): package-installs-python-bytecode [usr/share/python-kinterbasdb/code.pyo]
+python-kinterbasdb (binary): package-installs-python-bytecode [usr/share/python-kinterbasdb/code.pyc]
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/control.in b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/control.in
new file mode 100644
index 0000000..29bb9c6
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-foo
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/install b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/install
new file mode 100644
index 0000000..ddf8315
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/install
@@ -0,0 +1,9 @@
+site.py /usr/lib/python3/dist-packages
+tests.py /usr/lib/python3/dist-packages
+__init__.py /usr/lib/python3/dist-packages/doc/
+__init__.py /usr/lib/python3/dist-packages/docs/
+__init__.py /usr/lib/python3/dist-packages/test/
+__init__.py /usr/lib/python3/dist-packages/tests/
+__init__.py /usr/lib/python3/dist-packages/example/
+__init__.py /usr/lib/python3/dist-packages/examples/
+__init__.py /usr/lib/python3/dist-packages/false_positive/
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/rules b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/rules
new file mode 100644
index 0000000..abde6ef
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/fill-values b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/fill-values
new file mode 100644
index 0000000..57ceb09
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-python-module-has-overly-generic-name
+Description: Test tags for Python modules with overly generic names
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/__init__.py b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/__init__.py
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/site.py b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/site.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/site.py
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/tests.py b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/tests.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/build-spec/orig/tests.py
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/desc b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/desc
new file mode 100644
index 0000000..e2c469a
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/desc
@@ -0,0 +1,4 @@
+Testname: files-python-module-has-overly-generic-name
+Test-Against:
+ unknown-file-in-python-module-directory
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/hints b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/hints
new file mode 100644
index 0000000..b3b6ee6
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-module-has-overly-generic-name/eval/hints
@@ -0,0 +1,9 @@
+python3-foo (binary): python-package-missing-depends-on-python
+python3-foo (binary): python-module-has-overly-generic-name (tests) [usr/lib/python3/dist-packages/tests/__init__.py]
+python3-foo (binary): python-module-has-overly-generic-name (tests) [usr/lib/python3/dist-packages/tests.py]
+python3-foo (binary): python-module-has-overly-generic-name (test) [usr/lib/python3/dist-packages/test/__init__.py]
+python3-foo (binary): python-module-has-overly-generic-name (site) [usr/lib/python3/dist-packages/site.py]
+python3-foo (binary): python-module-has-overly-generic-name (examples) [usr/lib/python3/dist-packages/examples/__init__.py]
+python3-foo (binary): python-module-has-overly-generic-name (example) [usr/lib/python3/dist-packages/example/__init__.py]
+python3-foo (binary): python-module-has-overly-generic-name (docs) [usr/lib/python3/dist-packages/docs/__init__.py]
+python3-foo (binary): python-module-has-overly-generic-name (doc) [usr/lib/python3/dist-packages/doc/__init__.py]
diff --git a/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/control.in b/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/control.in
new file mode 100644
index 0000000..a4f2d34
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-foo
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends},
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/install b/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/install
new file mode 100644
index 0000000..165f0c2
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/install
@@ -0,0 +1,13 @@
+# GOOD
+python-foo /usr/lib/python2.5/site-packages/
+python-foo /usr/lib/python2.6/dist-packages/
+python-foo /usr/lib/python2.7/dist-packages/
+python-foo /usr/lib/python3/dist-packages/
+
+# BAD
+python-foo usr/lib/python2.5/dist-packages/
+python-foo usr/lib/python2.6/site-packages/
+python-foo usr/lib/python2.7/site-packages/
+python-foo usr/lib/python3.2/dist-packages/
+python-foo usr/lib/python3.2/site-packages/
+
diff --git a/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/rules b/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/rules
new file mode 100644
index 0000000..abde6ef
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
diff --git a/t/recipes/checks/languages/python/files-python-modules/build-spec/fill-values b/t/recipes/checks/languages/python/files-python-modules/build-spec/fill-values
new file mode 100644
index 0000000..a4afe04
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-python-modules
+Description: Test tags for misplaced Python modules
diff --git a/t/recipes/checks/languages/python/files-python-modules/build-spec/orig/python-foo b/t/recipes/checks/languages/python/files-python-modules/build-spec/orig/python-foo
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/build-spec/orig/python-foo
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/checks/languages/python/files-python-modules/eval/desc b/t/recipes/checks/languages/python/files-python-modules/eval/desc
new file mode 100644
index 0000000..25b7e1b
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-python-modules
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/files-python-modules/eval/hints b/t/recipes/checks/languages/python/files-python-modules/eval/hints
new file mode 100644
index 0000000..cfc6801
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-python-modules/eval/hints
@@ -0,0 +1,16 @@
+files-python-modules (source): python-foo-but-no-python3-foo python-foo
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python3/dist-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python3.2/site-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python3.2/dist-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python2.7/site-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python2.7/dist-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python2.6/site-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python2.6/dist-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python2.5/site-packages/python-foo]
+python-foo (binary): unknown-file-in-python-module-directory [usr/lib/python2.5/dist-packages/python-foo]
+python-foo (binary): python-package-missing-depends-on-python
+python-foo (binary): python-module-in-wrong-location usr/lib/python3.2/site-packages/python-foo -> usr/lib/python3/dist-packages/python-foo
+python-foo (binary): python-module-in-wrong-location usr/lib/python3.2/dist-packages/python-foo -> usr/lib/python3/dist-packages/python-foo
+python-foo (binary): python-module-in-wrong-location usr/lib/python2.7/site-packages/python-foo -> usr/lib/python2.7/dist-packages/python-foo
+python-foo (binary): python-module-in-wrong-location usr/lib/python2.6/site-packages/python-foo -> usr/lib/python2.6/dist-packages/python-foo
+python-foo (binary): python-module-in-wrong-location usr/lib/python2.5/dist-packages/python-foo -> usr/lib/python2.5/site-packages/python-foo
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/control.in b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/control.in
new file mode 100644
index 0000000..dce800f
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-foo
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, python3:any
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/install b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/install
new file mode 100644
index 0000000..a073f04
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/debian/install
@@ -0,0 +1,4 @@
+bad /usr/lib/python3/dist-packages
+good /usr/lib/python3/dist-packages/subdir
+good.py /usr/lib/python3/dist-packages
+good.py /usr/lib/python3/dist-packages/subdir
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/fill-values b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/fill-values
new file mode 100644
index 0000000..af35625
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-unknown-file-in-python-module-directory
+Description: Test for invalid files in Python module directory
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/bad b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/bad
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/bad
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good.py b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/build-spec/orig/good.py
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/desc b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/desc
new file mode 100644
index 0000000..3ef5d5c
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-unknown-file-in-python-module-directory
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/hints b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/hints
new file mode 100644
index 0000000..f6b2598
--- /dev/null
+++ b/t/recipes/checks/languages/python/files-unknown-file-in-python-module-directory/eval/hints
@@ -0,0 +1 @@
+python3-foo (binary): unknown-file-in-python-module-directory [usr/lib/python3/dist-packages/bad]
diff --git a/t/recipes/checks/languages/python/homepage/pypi/build-spec/fill-values b/t/recipes/checks/languages/python/homepage/pypi/build-spec/fill-values
new file mode 100644
index 0000000..215d964
--- /dev/null
+++ b/t/recipes/checks/languages/python/homepage/pypi/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: pypi
+Description: Homepage points to PyPI
+Homepage: https://pypi.org/project/some-name/
diff --git a/t/recipes/checks/languages/python/homepage/pypi/eval/desc b/t/recipes/checks/languages/python/homepage/pypi/eval/desc
new file mode 100644
index 0000000..87224e0
--- /dev/null
+++ b/t/recipes/checks/languages/python/homepage/pypi/eval/desc
@@ -0,0 +1,4 @@
+Testname: pypi
+Check: languages/python/homepage
+See-Also:
+ Bug#981932
diff --git a/t/recipes/checks/languages/python/homepage/pypi/eval/hints b/t/recipes/checks/languages/python/homepage/pypi/eval/hints
new file mode 100644
index 0000000..9dde452
--- /dev/null
+++ b/t/recipes/checks/languages/python/homepage/pypi/eval/hints
@@ -0,0 +1 @@
+pypi (source): pypi-homepage https://pypi.org/project/some-name/
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/missing-sources/fake.py b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/missing-sources/fake.py
new file mode 100644
index 0000000..6e883de
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/missing-sources/fake.py
@@ -0,0 +1 @@
+# a fake module source \ No newline at end of file
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pycompat b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pycompat
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pycompat
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pyversions b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/fill-values b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/fill-values
new file mode 100644
index 0000000..37c65d1
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cruft-python
+Description: Misc errors related to Python
+Extra-Build-Depends: python
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/pre-build b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/pre-build
new file mode 100755
index 0000000..a5ee0a0
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/build-spec/pre-build
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Create all the various junk that shouldn't exist in the diff so that we can
+# trigger all the tags.
+
+set -e
+dir="$1"
+fake="$dir/debian/missing-sources/fake.py"
+
+cp "$fake" "$dir"
+echo 'import fake' > "${dir}/main.py"
+unset PYTHONDONTWRITEBYTECODE
+PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null
+PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null
+# now remove source
+rm -f "${dir}"/main.py
+rm -f "${dir}"/fake.py
+
+cp "$fake" "$dir/fake2.py"
+echo 'import fake2' > "${dir}/main.py"
+unset PYTHONDONTWRITEBYTECODE
+PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null
+PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null
+# now remove source
+rm -f "${dir}"/main.py
+rm -f "${dir}"/fake2.py
+
+
+
+
+
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/eval/desc b/t/recipes/checks/languages/python/obsolete/cruft-python/eval/desc
new file mode 100644
index 0000000..19f9ef0
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/eval/desc
@@ -0,0 +1,2 @@
+Testname: cruft-python
+Check: languages/python/obsolete
diff --git a/t/recipes/checks/languages/python/obsolete/cruft-python/eval/hints b/t/recipes/checks/languages/python/obsolete/cruft-python/eval/hints
new file mode 100644
index 0000000..fc427e1
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/cruft-python/eval/hints
@@ -0,0 +1,2 @@
+cruft-python (source): debian-pyversions-is-obsolete
+cruft-python (source): debian-pycompat-is-obsolete
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/control b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/fill-values b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/desc b/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/desc
new file mode 100644
index 0000000..360e9fa
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: languages/python/obsolete
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/hints b/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/hints
new file mode 100644
index 0000000..b01d66c
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/hints
@@ -0,0 +1,2 @@
+debconf (source): debian-pyversions-is-obsolete [debian/pyversions]
+debconf (source): debian-pycompat-is-obsolete [debian/pycompat]
diff --git a/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/post-test b/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/languages/python/obsolete/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/control.in
new file mode 100644
index 0000000..92bcd84
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+X-Python3-Version: >= 3.4
+XS-Python-Version: >= 2.7
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: not-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/install b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/fill-values b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/fill-values
new file mode 100644
index 0000000..555004a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-ancient-python-version-field
+Description: Test for ancient python-version fields
diff --git a/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/orig/some-file b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-ancient-python-version-field/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/languages/python/python-ancient-python-version-field/eval/desc b/t/recipes/checks/languages/python/python-ancient-python-version-field/eval/desc
new file mode 100644
index 0000000..fd951d4
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-ancient-python-version-field/eval/desc
@@ -0,0 +1,4 @@
+Testname: python-ancient-python-version-field
+Test-Against:
+ old-python-version-field
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-ancient-python-version-field/eval/hints b/t/recipes/checks/languages/python/python-ancient-python-version-field/eval/hints
new file mode 100644
index 0000000..3170d17
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-ancient-python-version-field/eval/hints
@@ -0,0 +1,2 @@
+python-ancient-python-version-field (source): ancient-python-version-field XS-Python-Version 2.7
+python-ancient-python-version-field (source): ancient-python-version-field X-Python3-Version 3.4
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/debian/control.in
new file mode 100644
index 0000000..cdf3e6a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python-sphinx | python3-sphinx
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, python3
+Description: Test package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/fill-values b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/fill-values
new file mode 100644
index 0000000..9d30d65
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-build-depends-on-sphinx-alternative
+Description: Check packages that Build-Depend on python-sphinx | python3-sphinx
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/desc b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/desc
new file mode 100644
index 0000000..367bf9d
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-build-depends-on-sphinx-alternative
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/hints b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/hints
new file mode 100644
index 0000000..2ebac75
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-alternative/eval/hints
@@ -0,0 +1 @@
+python-build-depends-on-sphinx-alternative (source): alternatively-build-depends-on-python-sphinx-and-python3-sphinx
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..b32c5cc
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3-sphinx
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, ${python3::Depends}
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/fill-values b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/fill-values
new file mode 100644
index 0000000..6acca95
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-build-depends-on-sphinx-unrel
+Description: Check packages that Build-Depend on python-sphinx
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/desc b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/desc
new file mode 100644
index 0000000..60e2314
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/desc
@@ -0,0 +1,5 @@
+Testname: python-build-depends-on-sphinx-unrel
+Test-Against:
+ alternatively-build-depends-on-python-sphinx-and-python3-sphinx
+ build-depends-on-python-sphinx-only
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/hints b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx-unrel/eval/hints
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/debian/control.in
new file mode 100644
index 0000000..0e34e9f
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python-sphinx
+Rules-Requires-Root: no
+
+Package: python-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python2.7
+Description: Test package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/fill-values b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/fill-values
new file mode 100644
index 0000000..cbaf987
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-build-depends-on-sphinx
+Description: Check packages that Build-Depend on python-sphinx
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/desc b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/desc
new file mode 100644
index 0000000..c50652c
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/desc
@@ -0,0 +1,4 @@
+Testname: python-build-depends-on-sphinx
+Test-Against:
+ alternatively-build-depends-on-python-sphinx-and-python3-sphinx
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/hints b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/hints
new file mode 100644
index 0000000..100246a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-build-depends-on-sphinx/eval/hints
@@ -0,0 +1 @@
+python-build-depends-on-sphinx (source): build-depends-on-python-sphinx-only
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/fill-values
new file mode 100644
index 0000000..4d980c0
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-flit
+Description: Check for a package not built using pyproject flit, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..96d29cf
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/build-spec/orig/pyproject.toml
@@ -0,0 +1,7 @@
+[build-system]
+requires = ["flit_core"]
+build-backend = "flit_core.buildapi"
+
+[tool.flit.metadata]
+module = "foo"
+author = "Louis-Philippe Véronneau"
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/desc
new file mode 100644
index 0000000..7a67830
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-flit
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/hints
new file mode 100644
index 0000000..287ec5f
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-flit/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-flit (source): missing-prerequisite-for-pyproject-backend flit_core.buildapi (does not satisfy flit:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/fill-values
new file mode 100644
index 0000000..32b8599
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-hatchling
+Description: Check for a package not built using pyproject hatchling, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..99e23bc
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/desc
new file mode 100644
index 0000000..d041bcf
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-hatchling
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/hints
new file mode 100644
index 0000000..5fc6c8c
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-hatchling/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-hatchling (source): missing-prerequisite-for-pyproject-backend hatchling.build (does not satisfy python3-hatchling:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/fill-values
new file mode 100644
index 0000000..6c65bb6
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-mesonpy
+Description: Check for a package not built using pyproject meson, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..4c6d158
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ['meson-python']
+build-backend = 'mesonpy'
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/desc
new file mode 100644
index 0000000..e94e8b9
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-mesonpy
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/hints
new file mode 100644
index 0000000..9d0bcdb
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-mesonpy/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-mesonpy (source): missing-prerequisite-for-pyproject-backend mesonpy (does not satisfy python3-mesonpy:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/fill-values
new file mode 100644
index 0000000..ef4a012
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-pdm-pep517
+Description: Check for a package not built using pyproject pdm-pep517, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..161e831
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = []
+build-backend = "pdm.pep517.api"
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/desc
new file mode 100644
index 0000000..c6fbaba
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-pdm-pep517
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/hints
new file mode 100644
index 0000000..aef0fb0
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-pdm-pep517/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-pdm-pep517 (source): missing-prerequisite-for-pyproject-backend pdm.pep517.api (does not satisfy python3-pdm-pep517:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/fill-values
new file mode 100644
index 0000000..06efd81
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-poetry
+Description: Check for a package not built using pyproject poetry, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..cb6ebaa
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/build-spec/orig/pyproject.toml
@@ -0,0 +1,17 @@
+[build-system]
+requires = ["poetry>=0.12"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry]
+name = "foo"
+description = "an example module"
+version = "0.1"
+authors = ["Stefano Rivera <stefanor@debian.org>"]
+license = "Expat"
+
+[tool.poetry.dependencies]
+tomli = "^1.0.0"
+importlib-metadata = { version="*", python = "<3.5" }
+
+[tool.poetry.scripts]
+foo = 'foo:main'
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/desc
new file mode 100644
index 0000000..c1b69de
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-poetry
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/hints
new file mode 100644
index 0000000..3fd8894
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-poetry/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-poetry (source): missing-prerequisite-for-pyproject-backend poetry.core.masonry.api (does not satisfy python3-poetry-core:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/fill-values
new file mode 100644
index 0000000..e63a7eb
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-setuptools
+Description: Check for a package not built using pyproject setuptools, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..e0f6edc
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools", "wheel", "sphinx"]
+build-backend = "setuptools.build_meta"
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/desc
new file mode 100644
index 0000000..15f5c76
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-setuptools
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/hints
new file mode 100644
index 0000000..ab706cd
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-setuptools/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-setuptools (source): missing-prerequisite-for-pyproject-backend setuptools.build_meta (does not satisfy python3-setuptools:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/debian/control.in
new file mode 100644
index 0000000..18cc016
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/fill-values b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/fill-values
new file mode 100644
index 0000000..abb7502
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-could-use-pyproject-sipbuild
+Description: Check for a package not built using pyproject sipbuild, but that could.
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..dcd9dba
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["sip >=5, <6"]
+build-backend = "sipbuild.api"
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/desc b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/desc
new file mode 100644
index 0000000..76fb8d3
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-could-use-pyproject-sipbuild
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/hints b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/hints
new file mode 100644
index 0000000..11629dd
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-could-use-pyproject-sipbuild/eval/hints
@@ -0,0 +1 @@
+python-could-use-pyproject-sipbuild (source): missing-prerequisite-for-pyproject-backend sipbuild.api (does not satisfy python3-sipbuild:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/debian/control.in
new file mode 100644
index 0000000..2017443
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, python:any, python3:any, python2.7
+Description: Depends on both Python 2.x and Python 3.x
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/fill-values b/t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/fill-values
new file mode 100644
index 0000000..d1ade98
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-depends-python2-and-python3/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-depends-python2-and-python3
+Description: Check for packages that depend on Python 2.x and Python 3.x
diff --git a/t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/desc b/t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/desc
new file mode 100644
index 0000000..a2ba88e
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-depends-python2-and-python3
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/hints b/t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/hints
new file mode 100644
index 0000000..618976a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-depends-python2-and-python3/eval/hints
@@ -0,0 +1 @@
+python3-python-depends-python2-and-python3 (binary): depends-on-python2-and-python3 Depends (satisfies python2.7:any, python3:any)
diff --git a/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/debian/control.in
new file mode 100644
index 0000000..81556b8
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/debian/control.in
@@ -0,0 +1,61 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-django-positive
+Architecture: all
+Depends: ${misc:Depends}, python2.7
+Description: Python 2 package without corresponding python-django dependency
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python2-django-positive
+Architecture: all
+Depends: ${misc:Depends}, python2.7
+Description: Python 2 package without corresponding python-django dependency (explicit)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Explicit Python 2 variant.
+
+Package: python3-django-positive
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Python 3 package without corresponding python3-django dependency
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
+
+Package: python-django-false-positive
+Architecture: all
+Depends: ${misc:Depends}, python2.7, python-django
+Description: Python 2 package with corresponding python3-django dependency
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a false positive.
+
+Package: python3-django-false-positive
+Architecture: all
+Pre-Depends: python3-django
+Depends: ${misc:Depends}, python3
+Description: Python 3 package with corresponding python3-django dependency
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant of the false positive.
diff --git a/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/fill-values b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/fill-values
new file mode 100644
index 0000000..3c28985
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-django-package-does-not-depend-on-django
+Description: Check for Django packages that do not specify a Django Depends
diff --git a/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/desc b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/desc
new file mode 100644
index 0000000..09cdb4a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-django-package-does-not-depend-on-django
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/hints b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/hints
new file mode 100644
index 0000000..5041e0b
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-django-package-does-not-depend-on-django/eval/hints
@@ -0,0 +1,3 @@
+python3-django-positive (binary): django-package-does-not-depend-on-django python3-django
+python2-django-positive (binary): django-package-does-not-depend-on-django python-django
+python-django-positive (binary): django-package-does-not-depend-on-django python-django
diff --git a/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/control.in
new file mode 100644
index 0000000..96ba835
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: java
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+XS-Python-Version: current 2.7
+X-Python3-Version: invalid
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: not-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/install b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/fill-values b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/fill-values
new file mode 100644
index 0000000..92f69c4
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-malformed-py-version
+Description: Test for malformed python-version field
diff --git a/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/orig/some-file b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-malformed-py-version/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/languages/python/python-malformed-py-version/eval/desc b/t/recipes/checks/languages/python/python-malformed-py-version/eval/desc
new file mode 100644
index 0000000..a7d43a8
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-malformed-py-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-malformed-py-version
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-malformed-py-version/eval/hints b/t/recipes/checks/languages/python/python-malformed-py-version/eval/hints
new file mode 100644
index 0000000..0d9b010
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-malformed-py-version/eval/hints
@@ -0,0 +1,4 @@
+python-malformed-py-version (source): python-version-current-is-deprecated XS-Python-Version
+python-malformed-py-version (source): malformed-python-version XS-Python-Version current 2.7
+python-malformed-py-version (source): malformed-python-version X-Python3-Version invalid
+python-malformed-py-version (source): ancient-python-version-field XS-Python-Version 2.7
diff --git a/t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/debian/control.in
new file mode 100644
index 0000000..0c0f9db
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/debian/control.in
@@ -0,0 +1,67 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-[% $source %]
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends}
+Description: Mismatched substvar for Python 2.X
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ For Python 2.X.
+
+Package: python3-[% $source %]
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}
+Description: Mismatched substvar for Python 3.X
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ For Python 3.X.
+
+Package: python-[% $source %]-nonrel
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}
+Description: False positive for Python 2.X
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ False positive package For Python 2.X.
+
+Package: python3-[% $source %]-nonrel
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends}
+Description: False positive Python 3.X
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ False positive package for Python 3.X.
+
+Package: python-[% $source %]-tools
+Section: python
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends}
+Description: Generic tools package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Generic -tools packages are allowed.
diff --git a/t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/fill-values b/t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/fill-values
new file mode 100644
index 0000000..1132b5e
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-mismatched-python-substvar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-mismatched-python-substvar
+Description: Check for Python packages with mismatched substvars.
diff --git a/t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/desc b/t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/desc
new file mode 100644
index 0000000..f0867d1
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-mismatched-python-substvar
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/hints b/t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/hints
new file mode 100644
index 0000000..f6cc507
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-mismatched-python-substvar/eval/hints
@@ -0,0 +1,2 @@
+python-mismatched-python-substvar (source): mismatched-python-substvar python3-python-mismatched-python-substvar ${python:Depends}
+python-mismatched-python-substvar (source): mismatched-python-substvar python-python-mismatched-python-substvar ${python3:Depends}
diff --git a/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/changelog.in b/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/changelog.in
new file mode 100644
index 0000000..0da0986
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+ * python-[% $source %] is packaged because...
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
diff --git a/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..9cb5bbc
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python2.7
+Description: Python 2 package with no corresponding Python 3 package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Python 2 package with corresponding Python 3 package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/fill-values b/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/fill-values
new file mode 100644
index 0000000..fee0239
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-new-python2-package-unrel
+Description: Check various Python 2 issues (false positives)
diff --git a/t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/desc b/t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/desc
new file mode 100644
index 0000000..4625837
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: python-new-python2-package-unrel
+Test-Against:
+ new-package-should-not-package-python2-module
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/hints b/t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package-unrel/eval/hints
diff --git a/t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/changelog.in b/t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7cab2cb
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
diff --git a/t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/control.in
new file mode 100644
index 0000000..9cb5bbc
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python2.7
+Description: Python 2 package with no corresponding Python 3 package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Python 2 package with corresponding Python 3 package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-new-python2-package/build-spec/fill-values b/t/recipes/checks/languages/python/python-new-python2-package/build-spec/fill-values
new file mode 100644
index 0000000..6442cdb
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-new-python2-package
+Description: Check various Python 2 issues
diff --git a/t/recipes/checks/languages/python/python-new-python2-package/eval/desc b/t/recipes/checks/languages/python/python-new-python2-package/eval/desc
new file mode 100644
index 0000000..c97d25b
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-new-python2-package
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-new-python2-package/eval/hints b/t/recipes/checks/languages/python/python-new-python2-package/eval/hints
new file mode 100644
index 0000000..185e930
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-new-python2-package/eval/hints
@@ -0,0 +1 @@
+python-python-new-python2-package (binary): new-package-should-not-package-python2-module python-python-new-python2-package
diff --git a/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/control.in
new file mode 100644
index 0000000..4727f6c
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+X-Python3-Version: >= 3.5
+XS-Python-Version: >= 2.7
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: not-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/install b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/install
new file mode 100644
index 0000000..6c37889
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/debian/install
@@ -0,0 +1 @@
+some-file usr/share/lintian
diff --git a/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/fill-values b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/fill-values
new file mode 100644
index 0000000..022bd12
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-old-python-version-field
+Description: Test for old python-version fields
diff --git a/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/orig/some-file b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/orig/some-file
new file mode 100644
index 0000000..7bf08f7
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-old-python-version-field/build-spec/orig/some-file
@@ -0,0 +1,2 @@
+This file is installed into /usr/share/lintian just to ensure that this
+package doesn't look like a metapackage for the dependency checks.
diff --git a/t/recipes/checks/languages/python/python-old-python-version-field/eval/desc b/t/recipes/checks/languages/python/python-old-python-version-field/eval/desc
new file mode 100644
index 0000000..014cb1f
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-old-python-version-field/eval/desc
@@ -0,0 +1,4 @@
+Testname: python-old-python-version-field
+Test-Against:
+ old-python-version-field
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-old-python-version-field/eval/hints b/t/recipes/checks/languages/python/python-old-python-version-field/eval/hints
new file mode 100644
index 0000000..29a5676
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-old-python-version-field/eval/hints
@@ -0,0 +1,2 @@
+python-old-python-version-field (source): ancient-python-version-field XS-Python-Version 2.7
+python-old-python-version-field (source): ancient-python-version-field X-Python3-Version 3.5
diff --git a/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/debian/control.in
new file mode 100644
index 0000000..624d38c
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/debian/control.in
@@ -0,0 +1,38 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-foo
+Architecture: all
+Depends: ${misc:Depends}, python2.7, python3-foo, python3-foo, python3-bar, python-falsepositive
+Description: Python 2 package depending on python3-foo
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python2-foo
+Architecture: all
+Depends: ${misc:Depends}, python2.7, python3-foo, python2-bar, python2-falsepositive
+Description: Python 2 package depending on python3-foo (explicit)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Explicit Python 2.x variant.
+
+Package: python3-foo
+Architecture: all
+Depends: ${misc:Depends}, python3, python-foo, python2-foo, python2-bar, python3-falsepositive, python-foo-doc, python-foo-common
+Description: Python 3 package depending on python-foo and python2-foo
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/fill-values b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/fill-values
new file mode 100644
index 0000000..f7b42f8
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-package-depends-on-package-from-other-python-variant
+Description: Check for Python packages that depend on variants of themselves
diff --git a/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/desc b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/desc
new file mode 100644
index 0000000..54a6284
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-package-depends-on-package-from-other-python-variant
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/hints b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/hints
new file mode 100644
index 0000000..b424c11
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-depends-on-package-from-other-python-variant/eval/hints
@@ -0,0 +1,6 @@
+python3-foo (binary): python-package-depends-on-package-from-other-python-variant Depends: python2-foo
+python3-foo (binary): python-package-depends-on-package-from-other-python-variant Depends: python2-bar
+python3-foo (binary): python-package-depends-on-package-from-other-python-variant Depends: python-foo
+python2-foo (binary): python-package-depends-on-package-from-other-python-variant Depends: python3-foo
+python-foo (binary): python-package-depends-on-package-from-other-python-variant Depends: python3-foo
+python-foo (binary): python-package-depends-on-package-from-other-python-variant Depends: python3-bar
diff --git a/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/control.in
new file mode 100644
index 0000000..3f3616f
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: Python package with no Python dependencies
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/rules b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/rules
new file mode 100755
index 0000000..ffbb59d
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+TARGET = debian/$(shell dh_listpackages)/usr/lib/python3/dist-packages
+
+%:
+ dh $@
+
+override_dh_auto_install:
+ mkdir -p $(TARGET)
+ touch $(TARGET)/lintian.py
diff --git a/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/fill-values b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/fill-values
new file mode 100644
index 0000000..5898494
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-package-missing-depends-on-python
+Description: Check for packages missing depends on Python
diff --git a/t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/desc b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/desc
new file mode 100644
index 0000000..04a6f12
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-package-missing-depends-on-python
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/hints b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/hints
new file mode 100644
index 0000000..be51dd6
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-package-missing-depends-on-python/eval/hints
@@ -0,0 +1 @@
+python3-python-package-missing-depends-on-python (binary): python-package-missing-depends-on-python
diff --git a/t/recipes/checks/languages/python/python-python2-apps/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-python2-apps/build-spec/debian/control.in
new file mode 100644
index 0000000..9fa4e88
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-apps/build-spec/debian/control.in
@@ -0,0 +1,87 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Build-Depends: [% $build_depends %]
+Standards-Version: [% $standards_version %]
+Rules-Requires-Root: no
+
+Package: pkg-depends
+Architecture: all
+Depends: ${misc:Depends}, python2
+Description: Test package with Python 2.x in Depends
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Description: Test package with Python 2.x in Depends.
+
+Package: pkg-pre-depends
+Architecture: all
+Depends: ${misc:Depends}
+Pre-Depends: python2.7
+Description: Test package with Python 2.x in Pre-Suggests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Description: Test package with Python 2.x in Pre-Depends.
+
+Package: pkg-recommends
+Architecture: all
+Depends: ${misc:Depends}
+Recommends: python2-dev
+Description: Test package with Python 2.x in Recommends
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Description: Test package with Python 2.x in Recommends.
+
+Package: pkg-suggests
+Architecture: all
+Depends: ${misc:Depends}
+Suggests: python2, python2.7
+Description: Test package with Python 2.x in Suggests
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Description: Test package with Python 2.x in Suggests.
+
+Package: python-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python2
+Description: Python 3 module with Python 3.x in Depends
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python module with Python 2.x in Depends.
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 module with Python 3.x in Depends.
+
+Package: pkg-depends-any
+Architecture: all
+Depends: ${misc:Depends}, python2:any
+Description: Test package with Python 2.x with :any suffix in Depends
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Description: Test package with Python 2.x with :any suffix in Depends.
diff --git a/t/recipes/checks/languages/python/python-python2-apps/build-spec/fill-values b/t/recipes/checks/languages/python/python-python2-apps/build-spec/fill-values
new file mode 100644
index 0000000..eb6243a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-apps/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-python2-apps
+Description: Check packages that Depend/Suggest etc. on Python 2.x
diff --git a/t/recipes/checks/languages/python/python-python2-apps/eval/desc b/t/recipes/checks/languages/python/python-python2-apps/eval/desc
new file mode 100644
index 0000000..0172879
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-apps/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-python2-apps
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-python2-apps/eval/hints b/t/recipes/checks/languages/python/python-python2-apps/eval/hints
new file mode 100644
index 0000000..b10f957
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-apps/eval/hints
@@ -0,0 +1,6 @@
+pkg-suggests (binary): dependency-on-python-version-marked-for-end-of-life Suggests (satisfies python2:any)
+pkg-suggests (binary): dependency-on-python-version-marked-for-end-of-life Suggests (satisfies python2.7:any)
+pkg-recommends (binary): dependency-on-python-version-marked-for-end-of-life Recommends (satisfies python2-dev:any)
+pkg-pre-depends (binary): dependency-on-python-version-marked-for-end-of-life Pre-Depends (satisfies python2.7:any)
+pkg-depends-any (binary): dependency-on-python-version-marked-for-end-of-life Depends (satisfies python2:any)
+pkg-depends (binary): dependency-on-python-version-marked-for-end-of-life Depends (satisfies python2:any)
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..1b8d6e5
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/debian/control.in
@@ -0,0 +1,84 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python2.7
+Description: Python 2 package with corresponding Python 3 package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Python 2 package with corresponding Python 3 package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 package.
+
+Package: python-[% $source %]-doc
+Section: doc
+Architecture: all
+Depends: ${misc:Depends}
+Description: Python 2 package with corresponding Python 3 package (documentation)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains documentation.
+
+Package: python-[% $source %]-common
+Architecture: all
+Depends: ${misc:Depends}
+Description: Python 2 package with corresponding Python 3 package (common files)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains files common to both packages.
+
+Package: python-[% $source %]-tools
+Architecture: all
+Depends: ${misc:Depends}
+Description: Python 2 package with corresponding Python 3 package (tools)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package contains tools.
+
+Package: python-[% $source %]-2
+Architecture: all
+Depends: ${misc:Depends}
+Description: Python 2 package with corresponding Python 3 package (2)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package is another module.
+
+Package: entirely-unrelated-name
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends}
+Description: Python 3 version of python-[% $source %]-2
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package is the Python 3 variant of the previous package but with a
+ different name.
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/fill-values b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/fill-values
new file mode 100644
index 0000000..78e15f0
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-python2-no-python3-unrel
+Description: Check for Python packages that only ship a Python 2.x module
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/desc b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/desc
new file mode 100644
index 0000000..fab43d0
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/desc
@@ -0,0 +1,3 @@
+Testname: python-python2-no-python3-unrel
+Test-Against: python-foo-but-no-python3-foo
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/hints b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3-unrel/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-python2-no-python3/build-spec/debian/control.in
new file mode 100644
index 0000000..11ed24c
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: python-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, python2.7
+Description: Python 2 package with no corresponding Python 3 package
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3/build-spec/fill-values b/t/recipes/checks/languages/python/python-python2-no-python3/build-spec/fill-values
new file mode 100644
index 0000000..e48cc1a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-python2-no-python3
+Description: Check for Python packages that only ship a Python 2.x module
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3/eval/desc b/t/recipes/checks/languages/python/python-python2-no-python3/eval/desc
new file mode 100644
index 0000000..89d3f7a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-python2-no-python3
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-python2-no-python3/eval/hints b/t/recipes/checks/languages/python/python-python2-no-python3/eval/hints
new file mode 100644
index 0000000..03ff5b7
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-python2-no-python3/eval/hints
@@ -0,0 +1 @@
+python-python2-no-python3 (source): python-foo-but-no-python3-foo python-python-python2-no-python3
diff --git a/t/recipes/checks/languages/python/python-source-package-encodes-python-version/build-spec/fill-values b/t/recipes/checks/languages/python/python-source-package-encodes-python-version/build-spec/fill-values
new file mode 100644
index 0000000..7cb70a2
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-source-package-encodes-python-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: python-source-package-encodes-python-version
+Source: python3-foo
+Description: Check packages that encode their Python version in their name
diff --git a/t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/desc b/t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/desc
new file mode 100644
index 0000000..4d45222
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-source-package-encodes-python-version
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/hints b/t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/hints
new file mode 100644
index 0000000..1fa0850
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-source-package-encodes-python-version/eval/hints
@@ -0,0 +1 @@
+python3-foo (source): source-package-encodes-python-version
diff --git a/t/recipes/checks/languages/python/python-valid-pdm/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-valid-pdm/build-spec/debian/control.in
new file mode 100644
index 0000000..049363e
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-pdm/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3-pdm-pep517
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-valid-pdm/build-spec/fill-values b/t/recipes/checks/languages/python/python-valid-pdm/build-spec/fill-values
new file mode 100644
index 0000000..732f422
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-pdm/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-valid-pdm
+Description: Check packages that build-depend on python3-pdm-pep517.
diff --git a/t/recipes/checks/languages/python/python-valid-pdm/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-valid-pdm/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..161e831
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-pdm/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = []
+build-backend = "pdm.pep517.api"
diff --git a/t/recipes/checks/languages/python/python-valid-pdm/eval/desc b/t/recipes/checks/languages/python/python-valid-pdm/eval/desc
new file mode 100644
index 0000000..a50cb40
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-pdm/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-valid-pdm
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-valid-pdm/eval/hints b/t/recipes/checks/languages/python/python-valid-pdm/eval/hints
new file mode 100644
index 0000000..2c5e8cb
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-pdm/eval/hints
@@ -0,0 +1 @@
+python-valid-pdm (source): missing-prerequisite-for-pyproject-backend pdm.pep517.api (does not satisfy python3-pdm-pep517:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-valid-poetry/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-valid-poetry/build-spec/debian/control.in
new file mode 100644
index 0000000..cc955c3
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-poetry/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3-poetry-core
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-valid-poetry/build-spec/fill-values b/t/recipes/checks/languages/python/python-valid-poetry/build-spec/fill-values
new file mode 100644
index 0000000..0cfca42
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-poetry/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-valid-poetry
+Description: Check packages that build-depend on python3-poetry-core.
diff --git a/t/recipes/checks/languages/python/python-valid-poetry/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-valid-poetry/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..cb6ebaa
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-poetry/build-spec/orig/pyproject.toml
@@ -0,0 +1,17 @@
+[build-system]
+requires = ["poetry>=0.12"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry]
+name = "foo"
+description = "an example module"
+version = "0.1"
+authors = ["Stefano Rivera <stefanor@debian.org>"]
+license = "Expat"
+
+[tool.poetry.dependencies]
+tomli = "^1.0.0"
+importlib-metadata = { version="*", python = "<3.5" }
+
+[tool.poetry.scripts]
+foo = 'foo:main'
diff --git a/t/recipes/checks/languages/python/python-valid-poetry/eval/desc b/t/recipes/checks/languages/python/python-valid-poetry/eval/desc
new file mode 100644
index 0000000..5160485
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-poetry/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-valid-poetry
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-valid-poetry/eval/hints b/t/recipes/checks/languages/python/python-valid-poetry/eval/hints
new file mode 100644
index 0000000..1c82652
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-valid-poetry/eval/hints
@@ -0,0 +1 @@
+python-valid-poetry (source): missing-prerequisite-for-pyproject-backend poetry.core.masonry.api (does not satisfy python3-poetry-core:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/debian/control.in
new file mode 100644
index 0000000..1e5863c
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3-pdm
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/fill-values b/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/fill-values
new file mode 100644
index 0000000..cc29107
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: python-wrong-pdm
+Description: Check packages that build-depend on python3-pdm.
diff --git a/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..161e831
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-pdm/build-spec/orig/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = []
+build-backend = "pdm.pep517.api"
diff --git a/t/recipes/checks/languages/python/python-wrong-pdm/eval/desc b/t/recipes/checks/languages/python/python-wrong-pdm/eval/desc
new file mode 100644
index 0000000..3f142dc
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-pdm/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-wrong-pdm
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-wrong-pdm/eval/hints b/t/recipes/checks/languages/python/python-wrong-pdm/eval/hints
new file mode 100644
index 0000000..0c09107
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-pdm/eval/hints
@@ -0,0 +1,2 @@
+python-wrong-pdm (source): uses-pdm-cli [pyproject.toml:3]
+python-wrong-pdm (source): missing-prerequisite-for-pyproject-backend pdm.pep517.api (does not satisfy python3-pdm-pep517:any, pybuild-plugin-pyproject:any) [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/debian/control.in b/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/debian/control.in
new file mode 100644
index 0000000..3084d99
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: python
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %], python3-poetry, pybuild-plugin-pyproject
+Build-Depends-Indep: python3-poetry-core
+Rules-Requires-Root: no
+
+Package: python3-[% $source %]
+Architecture: all
+Depends: ${misc:Depends}, python3
+Description: Test package (Python 3)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Python 3 variant.
diff --git a/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/fill-values b/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/fill-values
new file mode 100644
index 0000000..135776b
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: python-wrong-poetry
+Description: Check packages that build-depend on python3-poetry. Also acts as a
+ test for packages that have the pyproject dependencies in Build-Depends-Indep.
diff --git a/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/orig/pyproject.toml b/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/orig/pyproject.toml
new file mode 100644
index 0000000..cb6ebaa
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-poetry/build-spec/orig/pyproject.toml
@@ -0,0 +1,17 @@
+[build-system]
+requires = ["poetry>=0.12"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry]
+name = "foo"
+description = "an example module"
+version = "0.1"
+authors = ["Stefano Rivera <stefanor@debian.org>"]
+license = "Expat"
+
+[tool.poetry.dependencies]
+tomli = "^1.0.0"
+importlib-metadata = { version="*", python = "<3.5" }
+
+[tool.poetry.scripts]
+foo = 'foo:main'
diff --git a/t/recipes/checks/languages/python/python-wrong-poetry/eval/desc b/t/recipes/checks/languages/python/python-wrong-poetry/eval/desc
new file mode 100644
index 0000000..f0b7ac1
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-poetry/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-wrong-poetry
+Check: languages/python
diff --git a/t/recipes/checks/languages/python/python-wrong-poetry/eval/hints b/t/recipes/checks/languages/python/python-wrong-poetry/eval/hints
new file mode 100644
index 0000000..235932a
--- /dev/null
+++ b/t/recipes/checks/languages/python/python-wrong-poetry/eval/hints
@@ -0,0 +1 @@
+python-wrong-poetry (source): uses-poetry-cli [pyproject.toml:3]
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/control.in b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/control.in
new file mode 100644
index 0000000..8c005aa
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: mail
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: prog-[% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${python3:Depends}
+Description: Package with Python script with bad shebang
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/install b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/install
new file mode 100644
index 0000000..05e2b78
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/install
@@ -0,0 +1 @@
+debian/script-* /usr/bin
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/rules b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/rules
new file mode 100755
index 0000000..2d33f6a
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad1 b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad1
new file mode 100644
index 0000000..013e4b7
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad1
@@ -0,0 +1 @@
+#!/usr/bin/python
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad2 b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad2
new file mode 100644
index 0000000..ee3ecd2
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-bad2
@@ -0,0 +1 @@
+#! /usr/bin/env python
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good1 b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good1
new file mode 100644
index 0000000..e5a0d9b
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good1
@@ -0,0 +1 @@
+#!/usr/bin/env python3
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good2 b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good2
new file mode 100644
index 0000000..a93a4bf
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/debian/script-good2
@@ -0,0 +1 @@
+#!/usr/bin/python3
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/fill-values b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/fill-values
new file mode 100644
index 0000000..20ac55b
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: python-script-uses-unversioned-python-in-shebang
+Description: Check for unversioned python in shebang
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/desc b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/desc
new file mode 100644
index 0000000..e2c3be3
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/desc
@@ -0,0 +1,2 @@
+Testname: python-script-uses-unversioned-python-in-shebang
+Check: languages/python/scripts
diff --git a/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/hints b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/hints
new file mode 100644
index 0000000..15ce9d3
--- /dev/null
+++ b/t/recipes/checks/languages/python/scripts/python-script-uses-unversioned-python-in-shebang/eval/hints
@@ -0,0 +1,2 @@
+prog-python-script-uses-unversioned-python-in-shebang (binary): script-uses-unversioned-python-in-shebang [usr/bin/script-bad2]
+prog-python-script-uses-unversioned-python-in-shebang (binary): script-uses-unversioned-python-in-shebang [usr/bin/script-bad1]
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/control.in b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/control.in
new file mode 100644
index 0000000..6b125db
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/control.in
@@ -0,0 +1,29 @@
+Source: [% $source %]
+Priority: optional
+Section: gnu-r
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: r-cran-positive
+Architecture: any
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %] (wrong)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has an incorrect Architecture field.
+
+Package: r-cran-false-positive
+Architecture: all
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %] (right)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has the correct Architecture field.
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-false-positive.install b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-false-positive.install
new file mode 100644
index 0000000..613f993
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-false-positive.install
@@ -0,0 +1 @@
+DESCRIPTION usr/lib/R/site-library/false-positive
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-positive.install b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-positive.install
new file mode 100644
index 0000000..9464141
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/debian/r-cran-positive.install
@@ -0,0 +1 @@
+DESCRIPTION usr/lib/R/site-library/positive
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/fill-values b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/fill-values
new file mode 100644
index 0000000..276affc
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: fields-r-package-not-arch-all
+Skeleton: upload-non-native
+Description: Tests for Architecture of an R package
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/orig/DESCRIPTION b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/orig/DESCRIPTION
new file mode 100644
index 0000000..48a7223
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/build-spec/orig/DESCRIPTION
@@ -0,0 +1,19 @@
+Package: urca
+Version: 1.3-0
+Date: 2016-09-06
+Title: Unit Root and Cointegration Tests for Time Series Data
+Authors@R: c(person("Bernhard", "Pfaff", email = "bernhard@pfaffikus.de", role = c("aut", "cre")), person("Eric", "Zivot",email = "ezivot@u.washington.edu", role = "ctb"), person("Matthieu", "Stigler", role = "ctb"))
+Depends: R (>= 2.0.0), methods
+Imports: nlme, graphics, stats
+LazyLoad: yes
+Description: Unit root and cointegration tests encountered in applied
+ econometric analysis are implemented.
+License: GPL (>= 2)
+NeedsCompilation: no
+Packaged: 2016-09-06 20:57:19 UTC; bp
+Author: Bernhard Pfaff [aut, cre],
+ Eric Zivot [ctb],
+ Matthieu Stigler [ctb]
+Maintainer: Bernhard Pfaff <bernhard@pfaffikus.de>
+Repository: CRAN
+Date/Publication: 2016-09-06 23:26:02
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/desc b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/desc
new file mode 100644
index 0000000..ec766f6
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-r-package-not-arch-all
+Check: languages/r/architecture
diff --git a/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/hints b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/hints
new file mode 100644
index 0000000..89c7803
--- /dev/null
+++ b/t/recipes/checks/languages/r/architecture/fields-r-package-not-arch-all/eval/hints
@@ -0,0 +1 @@
+r-cran-positive (binary): r-package-not-arch-all
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/debian/install b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/debian/install
new file mode 100644
index 0000000..7cd27d5
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/debian/install
@@ -0,0 +1 @@
+src/* usr/lib/R/site-library/files-r-data
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/fill-values b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/fill-values
new file mode 100644
index 0000000..fb4d856
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-r-data-unrel
+Description: Checks for R statistical data files (false positives)
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rda b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rda
new file mode 100644
index 0000000..ac654ef
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rda
@@ -0,0 +1 @@
+Not an R file.
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rdata b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rdata
new file mode 100644
index 0000000..ac654ef
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.Rdata
@@ -0,0 +1 @@
+Not an R file.
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rda b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rda
new file mode 100644
index 0000000..ac654ef
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rda
@@ -0,0 +1 @@
+Not an R file.
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rdata b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rdata
new file mode 100644
index 0000000..ac654ef
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/build-spec/orig/src/test.rdata
@@ -0,0 +1 @@
+Not an R file.
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/eval/desc b/t/recipes/checks/languages/r/files-r-data-unrel/eval/desc
new file mode 100644
index 0000000..91993ea
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: files-r-data-unrel
+Test-Against:
+ r-data-without-readme-source
+Check: languages/r
diff --git a/t/recipes/checks/languages/r/files-r-data-unrel/eval/hints b/t/recipes/checks/languages/r/files-r-data-unrel/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data-unrel/eval/hints
diff --git a/t/recipes/checks/languages/r/files-r-data/build-spec/debian/install b/t/recipes/checks/languages/r/files-r-data/build-spec/debian/install
new file mode 100644
index 0000000..7cd27d5
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/build-spec/debian/install
@@ -0,0 +1 @@
+src/* usr/lib/R/site-library/files-r-data
diff --git a/t/recipes/checks/languages/r/files-r-data/build-spec/fill-values b/t/recipes/checks/languages/r/files-r-data/build-spec/fill-values
new file mode 100644
index 0000000..d93508c
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-r-data
+Description: Checks for R statistical data files
diff --git a/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rda b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rda
new file mode 100644
index 0000000..6c6b186
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rda
Binary files differ
diff --git a/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rdata b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rdata
new file mode 100644
index 0000000..6c6b186
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.Rdata
Binary files differ
diff --git a/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rda b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rda
new file mode 100644
index 0000000..6c6b186
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rda
Binary files differ
diff --git a/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rdata b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rdata
new file mode 100644
index 0000000..6c6b186
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/build-spec/orig/src/test.rdata
Binary files differ
diff --git a/t/recipes/checks/languages/r/files-r-data/eval/desc b/t/recipes/checks/languages/r/files-r-data/eval/desc
new file mode 100644
index 0000000..f2c1209
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-r-data
+Check: languages/r
diff --git a/t/recipes/checks/languages/r/files-r-data/eval/hints b/t/recipes/checks/languages/r/files-r-data/eval/hints
new file mode 100644
index 0000000..f836553
--- /dev/null
+++ b/t/recipes/checks/languages/r/files-r-data/eval/hints
@@ -0,0 +1,4 @@
+files-r-data (source): r-data-without-readme-source [src/test.rdata]
+files-r-data (source): r-data-without-readme-source [src/test.rda]
+files-r-data (source): r-data-without-readme-source [src/test.Rdata]
+files-r-data (source): r-data-without-readme-source [src/test.Rda]
diff --git a/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/control.in b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/control.in
new file mode 100644
index 0000000..c73927f
--- /dev/null
+++ b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: gnu-r
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: r-cran-isospecr
+Architecture: all
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has an incorrect Depends field.
diff --git a/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/rules b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/rules
new file mode 100644
index 0000000..68d9a36
--- /dev/null
+++ b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --buildsystem R
diff --git a/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/fill-values b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/fill-values
new file mode 100644
index 0000000..569ce10
--- /dev/null
+++ b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: lacks-depends-on-r-api
+Description: Ships R site library but lacks Depends on r-api-N
+Package-Architecture: all
+Extra-Build-Depends: dh-r
diff --git a/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/orig/DESCRIPTION b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/orig/DESCRIPTION
new file mode 100644
index 0000000..62f6ec8
--- /dev/null
+++ b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/build-spec/orig/DESCRIPTION
@@ -0,0 +1,21 @@
+Encoding: UTF-8
+Package: IsoSpecR
+Type: Package
+Title: The IsoSpec Algorithm
+Version: 2.0.1
+Date: 2019-05-21
+Author: Mateusz Krzysztof Lacki and Michal Startek
+Maintainer: Matteo Lacki <matteo.lacki@gmail.com>
+Description: IsoSpec is a fine structure calculator used for obtaining the most
+ probable masses of a chemical compound given the frequencies of the composing
+ isotopes and their masses. It finds the smallest set of isotopologues with
+ a given probability. The probability is assumed to be that of the product of
+ multinomial distributions, each corresponding to one particular element and
+ parametrized by the frequencies of finding these elements in nature. These
+ numbers are supplied by IUPAC - the International Union of Pure and Applied
+ Chemistry.
+License: BSD_2_clause + file LICENCE
+URL: http://matteolacki.github.io/IsoSpec/
+Depends:
+ R (>= 3.0.0)
+NeedsCompilation: no
diff --git a/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/desc b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/desc
new file mode 100644
index 0000000..8999e6a
--- /dev/null
+++ b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/desc
@@ -0,0 +1,4 @@
+Testname: lacks-depends-on-r-api
+Check: languages/r/site-library
+See-Also:
+ https://wiki.debian.org/Teams/r-pkg-team
diff --git a/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/hints b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/hints
new file mode 100644
index 0000000..473fb96
--- /dev/null
+++ b/t/recipes/checks/languages/r/site-library/lacks-depends-on-r-api/eval/hints
@@ -0,0 +1,2 @@
+r-cran-isospecr (binary): ships-r-site-library IsoSpecR
+r-cran-isospecr (binary): requires-r-api
diff --git a/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/debian/control.in b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/debian/control.in
new file mode 100644
index 0000000..3314890
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ ruby-interpreter
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/fill-values b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/fill-values
new file mode 100644
index 0000000..c5145db
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: depends-on-ruby-interpreter
+Description: Depends on ruby-interpreter
diff --git a/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/desc b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/desc
new file mode 100644
index 0000000..d93d1cc
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/desc
@@ -0,0 +1,2 @@
+Testname: depends-on-ruby-interpreter
+Check: languages/ruby
diff --git a/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/hints b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/hints
new file mode 100644
index 0000000..205367a
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/depends-on-ruby-interpreter/eval/hints
@@ -0,0 +1 @@
+depends-on-ruby-interpreter (binary): ruby-interpreter-is-deprecated ruby-interpreter
diff --git a/t/recipes/checks/languages/ruby/gem-homepage/build-spec/fill-values b/t/recipes/checks/languages/ruby/gem-homepage/build-spec/fill-values
new file mode 100644
index 0000000..068c444
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/gem-homepage/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: gem-homepage
+Description: Homepage points to a Rubygem
+Homepage: https://rubygems.org/gems/some-gem/
diff --git a/t/recipes/checks/languages/ruby/gem-homepage/eval/desc b/t/recipes/checks/languages/ruby/gem-homepage/eval/desc
new file mode 100644
index 0000000..724a15d
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/gem-homepage/eval/desc
@@ -0,0 +1,4 @@
+Testname: gem-homepage
+Check: languages/ruby
+See-Also:
+ Bug#981935
diff --git a/t/recipes/checks/languages/ruby/gem-homepage/eval/hints b/t/recipes/checks/languages/ruby/gem-homepage/eval/hints
new file mode 100644
index 0000000..cc499af
--- /dev/null
+++ b/t/recipes/checks/languages/ruby/gem-homepage/eval/hints
@@ -0,0 +1 @@
+gem-homepage (source): rubygem-homepage https://rubygems.org/gems/some-gem/
diff --git a/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/debian/control.in b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/debian/control.in
new file mode 100644
index 0000000..7a39883
--- /dev/null
+++ b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: librust-path-abs+serde-derive-dev
+Architecture: [% $package_architecture %]
+Depends: librust-path-abs-dev (= 0.5.0-1), librust-serde-derive-1+default-dev
+Provides: librust-path-abs-0+serde-derive-dev (= 0.5.0-1),
+ librust-path-abs-0.5+serde-derive-dev (= 0.5.0-1),
+ librust-path-abs-0.5.0+serde-derive-dev (= 0.5.0-1)
+Description: Ergonomic paths and files in rust - feature "serde_derive"
+ This metapackage enables feature "serde_derive" for the Rust path_abs crate, by
+ pulling in any additional dependencies needed by that feature.
diff --git a/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/fill-values b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/fill-values
new file mode 100644
index 0000000..08ab6a4
--- /dev/null
+++ b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: empty-rust-library-declares-provides
+Description: Empty Rust library that declares a Provides field
diff --git a/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/desc b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/desc
new file mode 100644
index 0000000..72665ea
--- /dev/null
+++ b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/desc
@@ -0,0 +1,4 @@
+Testname: empty-rust-library-declares-provides
+Check: languages/rust
+See-Also:
+ Bug#942898, Bug#945542
diff --git a/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/hints b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/hints
new file mode 100644
index 0000000..6362d7f
--- /dev/null
+++ b/t/recipes/checks/languages/rust/empty-rust-library-declares-provides/eval/hints
@@ -0,0 +1 @@
+librust-path-abs+serde-derive-dev (binary): empty-rust-library-declares-provides
diff --git a/t/recipes/checks/languages/rust/template-description/build-spec/fill-values b/t/recipes/checks/languages/rust/template-description/build-spec/fill-values
new file mode 100644
index 0000000..041a769
--- /dev/null
+++ b/t/recipes/checks/languages/rust/template-description/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: source-native
+Testname: template-description
+Description: Debcargo's default description for Rust installables
+ This package contains the following binaries built from the Rust crate
+ "hyperfine":
+ - hyperfine
diff --git a/t/recipes/checks/languages/rust/template-description/eval/desc b/t/recipes/checks/languages/rust/template-description/eval/desc
new file mode 100644
index 0000000..db7c7fd
--- /dev/null
+++ b/t/recipes/checks/languages/rust/template-description/eval/desc
@@ -0,0 +1,2 @@
+Testname: template-description
+Check: languages/rust
diff --git a/t/recipes/checks/languages/rust/template-description/eval/hints b/t/recipes/checks/languages/rust/template-description/eval/hints
new file mode 100644
index 0000000..65561d7
--- /dev/null
+++ b/t/recipes/checks/languages/rust/template-description/eval/hints
@@ -0,0 +1 @@
+template-description (source): rust-boilerplate template-description
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/debian/rules b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/debian/rules
new file mode 100644
index 0000000..3ea7a63
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip -X usr/lib/debug -X unstripped -X ocaml
+
+override_dh_dwz:
+ # Can error with "deadbeefdeadbeef.debug: Found compressed .debug_info section, not attempting dwz compression"
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/fill-values b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/fill-values
new file mode 100644
index 0000000..a24247d
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-general
+Description: Misc errors related to binaries
+Package-Architecture: any
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/Makefile b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..cf0f211
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/Makefile
@@ -0,0 +1,64 @@
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+COMPILE_NOPIE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+# extract from readelf
+GETBUILDID:=./getbuildid
+
+all:
+ # rpath not matching any of the exceptions to the rpath checks
+ # - with profiling enabled.
+ $(COMPILE_NOPIE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib
+ # rpath shipped in the package, but one of {/usr}?/lib
+ $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib
+ # non-special rpath shipped in the package
+ $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo
+ # special rpath shipped in the package, multiple paths
+ $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar
+ # static version of basic for debugging checks
+ $(COMPILE_NOPIE) -static -o basic.static basic.c
+ # static executable to trigger ocaml check
+ $(COMPILE_NOPIE) -o ocaml-exec ocaml.c
+ # version with debug
+ $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c
+
+install:
+ # according to local debian rules /usr/lib/debug is unstripped
+ install -d $(DESTDIR)/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -d $(DESTDIR)/usr/bin
+
+ install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic
+ install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath
+ install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath
+ install -m 755 -c ocaml-exec $(DESTDIR)/usr/lib/foo/ocaml-exec
+ install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore
+ objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug
+ # force fake buildid in order to have tag matching ok (deadbeefdeadbeef)
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/de"
+ objcopy --compress-debug-sections basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug"
+ install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`
+ objcopy --compress-debug-sections --only-keep-debug basicdebug \
+ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug
+ install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/
+ # according to local debian rules unstripped in name avoid dh_strip to do the work
+ install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped
+ install -m 755 basic.static $(DESTDIR)/usr/bin/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/basic.c b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/basic.c
new file mode 100644
index 0000000..3618004
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* forces a stack protector */
+ (void) strcpy(t,argv[0]);
+ return (int) t[0];
+}
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/getbuildid b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/getbuildid
new file mode 100755
index 0000000..0060d2b
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/getbuildid
@@ -0,0 +1,30 @@
+#!/bin/sh
+# get build-id of binary
+
+set -e
+
+usage() {
+ echo "Usage: getbuildid [flag] file";
+ echo " print build-id of an object file"
+ echo "flags:"
+ echo " -f : full build-id (default)."
+ echo " -s : short build-id aka the first two characters."
+}
+
+if test $# -lt 1; then usage; exit 77; fi
+if test $# -gt 3; then usage; exit 77; fi
+
+if test $# -eq 1; then
+ LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g'
+else
+ case "x$1" in
+ 'x-f')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;;
+ 'x-s')
+ LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;;
+ *)
+ exit 2;
+ esac
+fi
+
+exit 0;
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/ocaml.c b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/ocaml.c
new file mode 100644
index 0000000..370d17d
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/build-spec/orig/ocaml.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 2) {
+ puts("Caml1999X000");
+ }
+ puts("\n");
+ return 0;
+}
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/desc b/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/desc
new file mode 100644
index 0000000..e8419a4
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-general
+Check: libraries/debug-symbols
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/hints b/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/hints
new file mode 100644
index 0000000..0bc6db2
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/hints
@@ -0,0 +1 @@
+binaries-general (binary): stripped-library [usr/lib/debug/usr/share/foo/basic]
diff --git a/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/post-test b/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/libraries/debug-symbols/binaries-general/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/fill-values b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/fill-values
new file mode 100644
index 0000000..ffb07bb
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: binaries-embedded-libs
+Package-Architecture: any
+Description: Package with binary with library-unique strings
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/Makefile b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/Makefile
new file mode 100644
index 0000000..cffe7c4
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/Makefile
@@ -0,0 +1,26 @@
+BINARIES := zlib libpng libjpeg libopenjpeg libtiff libpcre3 libbz2 libxml2 \
+ libmagic libexpat libsqlite libm gmp mpfr \
+ ieee-data1 ieee-data2 ieee-data3
+
+MANPAGES := $(patsubst %,%.1,$(BINARIES))
+
+all: $(BINARIES) $(MANPAGES)
+
+%: %.c
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $* $*.c
+
+%.1: template.1
+ sed 's/#BIN#/$*/g' < $< > $@
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -d $(DESTDIR)/usr/share/man/man1
+ for b in $(BINARIES); do \
+ install -m 755 -c $$b $(DESTDIR)/usr/bin/$$b; \
+ install -m 644 -c $$b.1 $(DESTDIR)/usr/share/man/man1/$$b.1; \
+ done
+
+clean distclean:
+ rm -f $(BINARIES) $(MANPAGES)
+
+check test:
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/gmp.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/gmp.c
new file mode 100644
index 0000000..1c13690
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/gmp.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * There's not much you can do with GMP without having the allocation
+ * code ...
+ */
+static const char alloc_failure[]
+ = "GNU MP: Cannot allocate memory";
+
+int
+main(void)
+{
+ printf("%s\n", alloc_failure);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h
new file mode 100644
index 0000000..0bfe592
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h
@@ -0,0 +1,6 @@
+void e(char *p, int i, void (*f)(char *)){
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data1.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data1.c
new file mode 100644
index 0000000..68922cc
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data1.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+static const char ieee_data_url[]
+ = "http://standards.ieee.org/develop/regauth/oui/oui.txt";
+
+int
+main(void)
+{
+ printf("%s\n", ieee_data_url);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data2.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data2.c
new file mode 100644
index 0000000..37ecf4d
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data2.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+static const char ieee_data_url[]
+ = "http://standards-oui.ieee.org/oui.txt";
+
+int
+main(void)
+{
+ printf("%s\n", ieee_data_url);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data3.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data3.c
new file mode 100644
index 0000000..615e312
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/ieee-data3.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+
+struct ieee_data {
+ char a1;
+ char a2;
+ char a3;
+ const char * name;
+};
+
+static const struct ieee_data ieee_data_array[]
+ = { 0x00, 0x00, 0x56, "DR. B. STRUCK"};
+
+int
+main(void)
+{
+ printf("%s\n", ieee_data_array[0].name);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libbz2.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libbz2.c
new file mode 100644
index 0000000..9fc9d92
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libbz2.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+static const char bzip2_bug[]
+ = "This is a bug in bzip2";
+
+int
+main(void)
+{
+ printf("%s\n", bzip2_bug);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libexpat.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libexpat.c
new file mode 100644
index 0000000..1df8c01
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libexpat.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * The XML_DTD warning string is always present, even if expat was
+ * built with XML_DTD
+ */
+static const char xml_dtd[]
+ = "requested feature requires XML_DTD support in Expat";
+
+int
+main(void)
+{
+ printf("%s\n", xml_dtd);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libjpeg.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libjpeg.c
new file mode 100644
index 0000000..6f76a7d
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libjpeg.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * The quantization tables warning message is unique enough to be used to
+ * detect embedded or statically-linked copies of libjpeg.
+ */
+static const char quantization_tables_warning[]
+ = "Caution: quantization tables are too coarse for baseline JPEG";
+
+int
+main(void)
+{
+ printf("%s\n", quantization_tables_warning);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libm.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libm.c
new file mode 100644
index 0000000..b69548d
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libm.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+static const char domain_error[]
+ = "neg**non-integral: DOMAIN error";
+
+int
+main(void)
+{
+ printf("%s\n", domain_error);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libmagic.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libmagic.c
new file mode 100644
index 0000000..d8a7d4c
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libmagic.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+static const char no_magic_files[]
+ = "could not find any magic files!";
+
+int
+main(void)
+{
+ printf("%s\n", no_magic_files);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libopenjpeg.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libopenjpeg.c
new file mode 100644
index 0000000..b232b21
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libopenjpeg.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * The tcd_decode error message appears to be unique enough to be used to
+ * detect embedded or statically-linked copies of libopenjpeg.
+ */
+static const char tcd_error[]
+ = "tcd_decode: incomplete bistream";
+
+int
+main(void)
+{
+ printf("%s\n", tcd_error);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpcre3.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpcre3.c
new file mode 100644
index 0000000..5eca82e
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpcre3.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * The PCRE_UTF8 message is unique enough to be used to
+ * detect embedded or statically-linked copies of pcre.
+ */
+static const char pcre_utf8[]
+ = "this version of PCRE is not compiled with PCRE_UTF8 support";
+
+int
+main(void)
+{
+ printf("%s\n", pcre_utf8);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpng.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpng.c
new file mode 100644
index 0000000..3de5e57
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libpng.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * The png_zalloc overflow error message is unique enough to be used to
+ * detect embedded or statically-linked copies of libpng.
+ */
+static const char zalloc_error[]
+ = "Potential overflow in png_zalloc()";
+
+int
+main(void)
+{
+ printf("%s\n", zalloc_error);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libsqlite.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libsqlite.c
new file mode 100644
index 0000000..9bc97d0
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libsqlite.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * the sqlite_master table is used by sqlite 2 and 3
+ */
+static const char sqlite_create[]
+ = "CREATE TABLE sqlite_master( foo bar moo)";
+
+int
+main(void)
+{
+ printf("%s\n", sqlite_create);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libtiff.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libtiff.c
new file mode 100644
index 0000000..ec36402
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libtiff.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * The PixarLog error message is unique enough to be used to
+ * detect embedded or statically-linked copies of libtiff.
+ */
+static const char pixarlog_error[]
+ = "No space for PixarLog state block";
+
+int
+main(void)
+{
+ printf("%s\n", pixarlog_error);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libxml2.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libxml2.c
new file mode 100644
index 0000000..5c151d2
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/libxml2.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+static const char root_dtd_mismatch[]
+ = "root and DTD name do not match '%s' and '%s'";
+
+int
+main(void)
+{
+ printf("%s\n", root_dtd_mismatch);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/mpfr.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/mpfr.c
new file mode 100644
index 0000000..a23b9dc
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/mpfr.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * There's not much you can do with MPFR without having the allocation
+ * code ...
+ */
+static const char alloc_failure[]
+ = "MPFR: Can't allocate memory";
+
+int
+main(void)
+{
+ printf("%s\n", alloc_failure);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/template.1 b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/template.1
new file mode 100644
index 0000000..e193a57
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/template.1
@@ -0,0 +1,24 @@
+.\" Copyright (C) 2010 Raphael Geissert <atomo64@gmail.com>
+.\"
+.\" This is free software; you may redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2,
+.\" or (at your option) any later version.
+.\"
+.\" This is distributed in the hope that it will be useful, but
+.\" WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with the Debian GNU/Linux system; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+.\" 02111-1307 USA
+.TH #BIN# "1"
+.SH NAME
+#BIN# \- dummy binary simulating embedding the #BIN# library
+.SH SYNOPSIS
+#BIN#
+.SH DESCRIPTION
+.B #BIN#
+is a dummy binary used internally by lintian as a part of its testsuite.
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/zlib.c b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/zlib.c
new file mode 100644
index 0000000..eb43c79
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/zlib.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include "hardening-trigger.h"
+
+/*
+ * zlib asks derivative works to include this string, so it's the signature
+ * that we use to detect embedded copies.
+ */
+static const char deflate_copyright[]
+ = "deflate 1.2.3.3 Copyright 1995-2006 Jean-loup Gailly";
+
+int
+main(void)
+{
+ printf("%s\n", deflate_copyright);
+}
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/desc b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/desc
new file mode 100644
index 0000000..fd20867
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-embedded-libs
+Check: libraries/embedded
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/hints b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/hints
new file mode 100644
index 0000000..542340d
--- /dev/null
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/eval/hints
@@ -0,0 +1,17 @@
+binaries-embedded-libs (binary): embedded-library zlib [usr/bin/zlib]
+binaries-embedded-libs (binary): embedded-library tiff [usr/bin/libtiff]
+binaries-embedded-libs (binary): embedded-library sqlite [usr/bin/libsqlite]
+binaries-embedded-libs (binary): embedded-library pcre3 [usr/bin/libpcre3]
+binaries-embedded-libs (binary): embedded-library openjpeg [usr/bin/libopenjpeg]
+binaries-embedded-libs (binary): embedded-library mpfr [usr/bin/mpfr]
+binaries-embedded-libs (binary): embedded-library libxml2 [usr/bin/libxml2]
+binaries-embedded-libs (binary): embedded-library libpng [usr/bin/libpng]
+binaries-embedded-libs (binary): embedded-library libm [usr/bin/libm]
+binaries-embedded-libs (binary): embedded-library libjpeg [usr/bin/libjpeg]
+binaries-embedded-libs (binary): embedded-library ieee-data [usr/bin/ieee-data3]
+binaries-embedded-libs (binary): embedded-library ieee-data [usr/bin/ieee-data2]
+binaries-embedded-libs (binary): embedded-library ieee-data [usr/bin/ieee-data1]
+binaries-embedded-libs (binary): embedded-library gmp [usr/bin/gmp]
+binaries-embedded-libs (binary): embedded-library file [usr/bin/libmagic]
+binaries-embedded-libs (binary): embedded-library expat [usr/bin/libexpat]
+binaries-embedded-libs (binary): embedded-library bzip2 [usr/bin/libbz2]
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..0b26833
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,2 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/fill-values b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/fill-values
new file mode 100644
index 0000000..8c30582
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exit-fork
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs invoking both exit(3) and fork(2)
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/Makefile
new file mode 100644
index 0000000..68d5863
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/code.c
new file mode 100644
index 0000000..df63394
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/build-spec/orig/code.c
@@ -0,0 +1,12 @@
+#include <stdlib.h>
+#include <unistd.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ if (fork() != 0)
+ exit(1);
+ return x;
+}
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/desc b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/desc
new file mode 100644
index 0000000..f983298
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/desc
@@ -0,0 +1,4 @@
+Testname: shared-libs-exit-fork
+Test-Against:
+ exit-in-shared-library
+Check: libraries/shared/exit
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/hints b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit-fork/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..0b26833
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,2 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/fill-values b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/fill-values
new file mode 100644
index 0000000..99c4585
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exit
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs invoking exit(3)
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/Makefile
new file mode 100644
index 0000000..68d5863
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/code.c
new file mode 100644
index 0000000..297a4e8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ if (x < 0.0) {
+ exit(1);
+ } else {
+ return x;
+ }
+}
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/desc b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/desc
new file mode 100644
index 0000000..58e693f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-exit
+Check: libraries/shared/exit
diff --git a/t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/hints b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/hints
new file mode 100644
index 0000000..ac335c0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/exit/shared-libs-exit/eval/hints
@@ -0,0 +1 @@
+libexecbit1 (binary): exit-in-shared-library [usr/lib/libexecbit.so.1.0.1]
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/desc b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..df5e0bd
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: libraries/shared/file-permissions
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/hints b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..a789499
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz1 (binary): shared-library-is-executable 0755 [usr/lib/libfoo2.so.1.0.3b]
diff --git a/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/post-test b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..d8226ca
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,3 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/rules b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/rules
new file mode 100644
index 0000000..9082f3f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_fixperms:
+ # Do nothing, TYIA
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/fill-values b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/fill-values
new file mode 100644
index 0000000..0f19b1b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exec-bit
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs with exec bit
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/Makefile
new file mode 100644
index 0000000..0997289
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1 libbadperm.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *execbit*.so* $(DESTDIR)/usr/lib
+ install -m 0600 *badperm*.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/desc b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/desc
new file mode 100644
index 0000000..3243044
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-exec-bit
+Check: libraries/shared/file-permissions
diff --git a/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/hints b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/hints
new file mode 100644
index 0000000..5e5d17a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/file-permissions/shared-libs-exec-bit/eval/hints
@@ -0,0 +1,2 @@
+libexecbit1 (binary): shared-library-is-executable 0755 [usr/lib/libexecbit.so.1.0.1]
+libexecbit1 (binary): odd-permissions-on-shared-library 0600 [usr/lib/libbadperm.so.1.0.1]
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/desc b/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..7a688ab
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/hints b/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..86a3574
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/hints
@@ -0,0 +1,5 @@
+libbaz1 (binary): lacks-versioned-link-to-shared-library usr/lib/libbaz3.so.1 [usr/lib/libbaz3.so.1.0.3b]
+libbaz1 (binary): lacks-versioned-link-to-shared-library usr/lib/libbaz2.so.1.0 [usr/lib/libfoo2.so.1.0.3b]
+libbaz1 (binary): lacks-unversioned-link-to-shared-library example: usr/lib/libbaz3.so [usr/lib/libbaz3.so.1.0.3b]
+libbaz1 (binary): lacks-unversioned-link-to-shared-library example: usr/lib/libbaz2.so [usr/lib/libfoo2.so.1.0.3b]
+libbaz1 (binary): lacks-unversioned-link-to-shared-library example: usr/lib/libbaz.so [usr/lib/libbaz.so]
diff --git a/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/post-test b/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/control.in
new file mode 100644
index 0000000..9ca1147
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libfoo-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libfoo-1 (= ${binary:Version})
+Description: [% $description %] - dev
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Dev package.
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install
new file mode 100644
index 0000000..cb060ec
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.install
@@ -0,0 +1,2 @@
+lib/libbar-1.so
+usr/lib/libfoo-1.so
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols
new file mode 100644
index 0000000..910a1e5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-1.symbols
@@ -0,0 +1,7 @@
+libfoo-1.so libfoo-1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
+
+libbar-1.so libfoo-1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install
new file mode 100644
index 0000000..ed7b146
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/debian/libfoo-dev.install
@@ -0,0 +1,3 @@
+usr/include
+usr/lib/libbar.so
+usr/lib/libfoo.so
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/fill-values
new file mode 100644
index 0000000..5240e59
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: shared-libs-dev-symlink-fp
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test against dev symlink fp
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/Makefile
new file mode 100644
index 0000000..decdff1
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/Makefile
@@ -0,0 +1,27 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAME:= libfoo-1.so
+LSONAME:= libbar-1.so
+devsymlink=$(shell echo $(1) | perl -pe 's:-[\d\.]*\.so$$:\.so:')
+LIBFILES:=$(SONAME) $(LSONAME)
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$@ $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/lib
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 -d $(DESTDIR)/usr/include
+ install -m 0644 $(LSONAME) $(DESTDIR)/lib
+ install -m 0644 $(SONAME) $(DESTDIR)/usr/lib
+ ln -s /lib/$(LSONAME) $(DESTDIR)/usr/lib/$(call devsymlink,$(LSONAME))
+ ln -s $(SONAME) $(DESTDIR)/usr/lib/$(call devsymlink,$(SONAME))
+ install -m 0644 code.h $(DESTDIR)/usr/include
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.c
new file mode 100644
index 0000000..9a88735
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.c
@@ -0,0 +1,16 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.h b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/desc b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/desc
new file mode 100644
index 0000000..4cc6818
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/desc
@@ -0,0 +1,4 @@
+Testname: shared-libs-dev-symlink-fp
+Test-Against:
+ lacks-unversioned-link-to-shared-library
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/hints b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink-fp/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..dfba657
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libfoo-dev
+Architecture: any
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ libfoo1 (= ${binary:Version})
+Description: [% $description %] - dev
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Dev package.
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install
new file mode 100644
index 0000000..e43b95c
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo-dev.install
@@ -0,0 +1 @@
+usr/include
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.install b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..08fa063
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+usr/lib/libfoo.so.*
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/fill-values
new file mode 100644
index 0000000..9c44aa5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: shared-libs-dev-symlink
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to dev symlink
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..a7a50b9
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/Makefile
@@ -0,0 +1,24 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 -d $(DESTDIR)/usr/include
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+ install -m 0644 code.h $(DESTDIR)/usr/include
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..9a88735
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.c
@@ -0,0 +1,16 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.h b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/desc b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/desc
new file mode 100644
index 0000000..5498340
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-dev-symlink
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/hints b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/hints
new file mode 100644
index 0000000..f612e92
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-dev-symlink/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): lacks-unversioned-link-to-shared-library example: usr/lib/libfoo.so [usr/lib/libfoo.so.1.0.1]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/fill-values
new file mode 100644
index 0000000..b000a7b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: shared-libs-ldconfig-not-symlink
+Package-Architecture: any
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test ldconfig symlink not being a symlink
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..2e3306e
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/Makefile
@@ -0,0 +1,20 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ install -T -m 0644 *.so* $(DESTDIR)/usr/lib/libfoo.so.1
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/desc b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/desc
new file mode 100644
index 0000000..c73712e
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-not-symlink
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/hints b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/hints
new file mode 100644
index 0000000..c78dccd
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-not-symlink/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): ldconfig-symlink-is-not-a-symlink should point to usr/lib/libfoo.so.1.0.1 [usr/lib/libfoo.so.1]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/fill-values
new file mode 100644
index 0000000..74b1f2a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: shared-libs-ldconfig-wrong-file
+Package-Architecture: any
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test ldconfig symlink with wrong target
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile
new file mode 100644
index 0000000..373cbd2
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ echo "Strauss: Also Sprach Zarathustra" > \
+ $(DESTDIR)/usr/lib/some-other-file
+ ln -s some-other-file $(DESTDIR)/usr/lib/libfoo.so.1
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/desc b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/desc
new file mode 100644
index 0000000..5b8f458
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-wrong-file
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/hints b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/hints
new file mode 100644
index 0000000..9dce51a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-ldconfig-wrong-file/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): ldconfig-symlink-referencing-wrong-file should point to some-other-file instead of libfoo.so.1.0.1 [usr/lib/libfoo.so.1]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..86a2064
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecbit1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols
new file mode 100644
index 0000000..0b26833
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/debian/libexecbit1.symbols
@@ -0,0 +1,2 @@
+libexecbit.so.1 libexecbit1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/fill-values
new file mode 100644
index 0000000..50aa473
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-missing-ldconfig-symlink
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for missing ldconfig symlink for shared libs
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..6de6868
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/Makefile
@@ -0,0 +1,19 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecbit.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/desc b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/desc
new file mode 100644
index 0000000..c5f12a5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-missing-ldconfig-symlink
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/hints b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/hints
new file mode 100644
index 0000000..7e665b8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-missing-ldconfig-symlink/eval/hints
@@ -0,0 +1 @@
+libexecbit1 (binary): lacks-versioned-link-to-shared-library usr/lib/libexecbit.so.1 [usr/lib/libexecbit.so.1.0.1]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/control.in
new file mode 100644
index 0000000..c20a449
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/fill-values b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/fill-values
new file mode 100644
index 0000000..cec22d9
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: shared-libs-non-dev-symlink
+Package-Architecture: any
+Skeleton: upload-non-native
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to dev symlink
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/Makefile
new file mode 100644
index 0000000..b62fa17
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/Makefile
@@ -0,0 +1,21 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ ln -s libfoo.so.1.0.1 $(DESTDIR)/usr/lib/libfoo.so.1
+ ln -s libfoo.so.1.0.1 $(DESTDIR)/usr/lib/libfoo.so
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/desc b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/desc
new file mode 100644
index 0000000..818d698
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-non-dev-symlink
+Check: libraries/shared/links
diff --git a/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/hints b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/hints
new file mode 100644
index 0000000..5fde620
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/links/shared-libs-non-dev-symlink/eval/hints
@@ -0,0 +1 @@
+libfoo1 (binary): link-to-shared-library-in-wrong-package usr/lib/libfoo.so.1.0.1 [usr/lib/libfoo.so]
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/control.in
new file mode 100644
index 0000000..29d4c58
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libhallo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: foreign
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols
new file mode 100644
index 0000000..4c27e3f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/debian/libhallo1.symbols
@@ -0,0 +1,2 @@
+libhallo.so.1 libhallo1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/fill-values b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/fill-values
new file mode 100644
index 0000000..de5d6cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-multi-arch-foreign
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for shared libs in m-a foreign pkgs
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/Makefile
new file mode 100644
index 0000000..ac55af7
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libhallo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -fPIC -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/desc b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/desc
new file mode 100644
index 0000000..002fcf0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-multi-arch-foreign
+Check: libraries/shared/multi-arch
diff --git a/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/hints b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/hints
new file mode 100644
index 0000000..28706b2
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/multi-arch/shared-libs-multi-arch-foreign/eval/hints
@@ -0,0 +1 @@
+libhallo1 (binary): shared-library-is-multi-arch-foreign usr/lib/libhallo.so.1.0.1
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/debian/rules b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/debian/rules
new file mode 100644
index 0000000..1511626
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# errors out with: objcopy: '.../binaries-missing-depends-on-xapi.debug': No such file
+override_dh_dwz:
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/fill-values b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/fill-values
new file mode 100644
index 0000000..f369a07
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: cblas
+Description: Compiled executable that uses libcblas.so.
+Package-Architecture: any
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/Makefile
new file mode 100644
index 0000000..24efbc8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+TRIPLET := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libcblas.so.1 -o libcblas.so libcblas.c
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o consumer consumer.c -L. -lcblas
+
+install:
+ install -d $(DESTDIR)/usr/lib/$(TRIPLET)
+ install -m 644 -c -s libcblas.so $(DESTDIR)/usr/lib/$(TRIPLET)/libcblas.so.1
+ install -d $(DESTDIR)/usr/bin
+ install -m 644 -c consumer $(DESTDIR)/usr/bin/
+
+clean distclean:
+ rm -f consumer
+ rm -f libcblas.so
+
+check test:
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/cblas.h b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/cblas.h
new file mode 100644
index 0000000..5ee765f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/cblas.h
@@ -0,0 +1 @@
+float sasum(int n, float* x, int incx);
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/consumer.c b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/consumer.c
new file mode 100644
index 0000000..baab985
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/consumer.c
@@ -0,0 +1,11 @@
+#include <assert.h>
+
+#include "cblas.h"
+
+int main(void)
+{
+ float array[] = {1.,-1.,1.,-1.};
+ assert(4 == sasum(4, array, 1));
+
+ return 0;
+}
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/libcblas.c b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/libcblas.c
new file mode 100644
index 0000000..02ab68d
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/build-spec/orig/libcblas.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include <math.h>
+
+float sasum(int n, float* x, int incx) {
+ float s = 0;
+ for (int i = 0; i < n; i++)
+ s += abs(*(x+i));
+ return s;
+}
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/eval/desc b/t/recipes/checks/libraries/shared/obsolete/cblas/eval/desc
new file mode 100644
index 0000000..ca03b68
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/eval/desc
@@ -0,0 +1,2 @@
+Testname: cblas
+Check: libraries/shared/obsolete
diff --git a/t/recipes/checks/libraries/shared/obsolete/cblas/eval/hints b/t/recipes/checks/libraries/shared/obsolete/cblas/eval/hints
new file mode 100644
index 0000000..105efad
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/obsolete/cblas/eval/hints
@@ -0,0 +1 @@
+cblas (binary): linked-with-obsolete-library libcblas.so.1 [usr/bin/consumer]
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/Makefile.in b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/Makefile.in
new file mode 100644
index 0000000..372897d
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/Makefile.in
@@ -0,0 +1,110 @@
+# this makefile was adapted from the standard template to do just one thing:
+# to ensure that no building takes place on architectures other than i386.
+#
+# dpkg-buildpackage croaks not only on build errors but also if there simply
+# is nothing to do. source packages are nowadays permitted to create
+# undeclared build artifacts. there is no way to tell when a build should
+# or should not proceed (although the buildds use a heuristic based on the
+# dsc).
+#
+# this makefile also touches the build product to make sure it exists. for
+# historical reasons, the test runner check that (although perhaps it should
+# not).
+#
+# more information may be available at Bug#949066.
+
+ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+package = [% $source %]
+upstream_version = [% $upstream_version %]
+type = [% $type %]
+
+packagedir = $(package)-$(upstream_version)
+
+origdata = $(ROOT_DIR)/orig
+origtargz = $(package)_$(upstream_version).orig.tar.gz
+
+debiandata = $(ROOT_DIR)/debian
+formatfile = $(debiandata)/source/format
+
+diffdata = $(ROOT_DIR)/diff
+
+private_key = $(ROOT_DIR)/upstream/private-key.asc
+
+pre_build = $(ROOT_DIR)/pre-build
+post_build = $(ROOT_DIR)/post-build
+pre_upstream = $(ROOT_DIR)/pre-upstream
+
+product = [% $build_product %]
+upload_type = [% $upload_type %]
+
+ifeq ($(upload_type),source)
+extraflags = -S
+else
+extraflags =
+endif
+
+.DEFAULT_GOAL := $(product)
+
+ifeq ($(shell dpkg-architecture -qDEB_HOST_ARCH),i386)
+$(product): $(origtargz)
+ if [ -r $(origtargz) -a -r $(private_key) ] ; then \
+ tmpdir=$(shell mktemp -d) ; \
+ gpg --homedir "$$tmpdir" --import $(private_key) ; \
+ gpg --homedir "$$tmpdir" --batch --yes --armor --output $(origtargz).asc \
+ --detach-sign $(origtargz) ; \
+ gpg-connect-agent --homedir "$$tmpdir" KILLAGENT /bye ; \
+ rm -rf "$$tmpdir" ; \
+ fi
+ if [ -d $(diffdata)/. ] ; then \
+ cp -rp $(diffdata)/. $(packagedir) ; \
+ fi
+ if [ -d $(debiandata)/. ] ; then \
+ cp -rp $(debiandata)/. $(packagedir)/debian ; \
+ fi
+
+ if [ -x $(pre_build) ] ; then \
+ $(pre_build) $(shell realpath $(packagedir)) ; \
+ fi
+
+ cd $(packagedir) && dpkg-buildpackage -rfakeroot $(extraflags) -us -uc -d \
+ -iNEVER_MATCH_ANYTHING -INEVER_MATCH_ANYTHING --source-option=--auto-commit
+
+ if [ -x $(post_build) ] ; then \
+ $(post_build) $(shell realpath $(packagedir)) ; \
+ fi
+else
+$(product):
+ touch $(product)
+endif
+
+ifeq ($(type),native)
+$(origtargz):
+ -mkdir $(packagedir)
+ if [ -d $(origdata)/. ] ; then \
+ cp -rp $(origdata)/. $(packagedir) ; \
+ fi
+else
+$(origtargz):
+ -mkdir $(packagedir)
+ if [ -d $(origdata)/. ] ; then \
+ cp -rp $(origdata)/. $(packagedir) ; \
+ fi
+
+ if [ -x $(pre_upstream) ] ; then \
+ $(pre_upstream) $(shell realpath $(packagedir)) ; \
+ fi
+
+ tar czf $(origtargz) $(packagedir)
+
+ if [ -f $(formatfile) ] && grep --quiet "^3\.. (quilt)$$" $(formatfile) ; then \
+ rm -rf $(packagedir)/debian ; \
+ fi
+endif
+
+.PHONY: clean
+clean:
+ rm -rf $(packagedir)
+ if [ "$(type)" = "native" ] ; then \
+ rm -f $(origtargz) ; \
+ fi
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/control.in
new file mode 100644
index 0000000..47c51c7
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbaz3-1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/symbols b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/symbols
new file mode 100644
index 0000000..63ba04d
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/debian/symbols
@@ -0,0 +1,3 @@
+libbaz3.so libbaz3-1 #MINVER#
+ pw@Base 1.0
+ stackprotfix@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/fill-values b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/fill-values
new file mode 100644
index 0000000..cb0b316
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-non-pic-i386
+Package-Architecture: i386
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to non-pic code
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/Makefile
new file mode 100644
index 0000000..c5ec48c
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/Makefile
@@ -0,0 +1,26 @@
+CC=gcc
+
+NOPICOBJS=non-pic.o
+SONAME:=libbaz3.so.1
+
+NOPIC_CFLAGS = $(CFLAGS) -fno-PIE
+NOPIC_LDFLAGS = $(LDFLAGS) -fno-PIE -fno-pie
+
+all: libbaz3.so.1.0.3b
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(NOPIC_LDFLAGS) -o $@ -shared -Wl,-soname,$(SONAME) $^ -lc
+
+%.o: %.c
+ $(CC) $(NOPIC_CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+clean:
+ rm -f *.a *.o *.so* *.sho
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ ln -s libbaz3.so.1.0.3b $(DESTDIR)/usr/lib/$(SONAME)
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/non-pic.c b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/non-pic.c
new file mode 100644
index 0000000..f0fa719
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/build-spec/orig/non-pic.c
@@ -0,0 +1,11 @@
+#include <math.h>
+#include <string.h>
+
+double pw(double p){
+ return exp(p);
+}
+
+void stackprotfix(void (*f)(char *, size_t)) {
+ char buffer[10];
+ f(buffer, sizeof(buffer));
+}
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/desc b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/desc
new file mode 100644
index 0000000..a84565c
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/desc
@@ -0,0 +1,3 @@
+Testname: shared-libs-non-pic-i386
+Test-Architectures: i386
+Check: libraries/shared/relocation
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/hints b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/hints
new file mode 100644
index 0000000..dbd4fe7
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/hints
@@ -0,0 +1 @@
+libbaz3-1 (binary): specific-address-in-shared-library [usr/lib/libbaz3.so.1.0.3b]
diff --git a/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/post-test b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/post-test
new file mode 100755
index 0000000..11ad2c8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/relocation/shared-libs-non-pic-i386/eval/post-test
@@ -0,0 +1 @@
+/: hardening-.*/ d
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/control.in
new file mode 100644
index 0000000..1109beb
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/control.in
@@ -0,0 +1,48 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: mylibany
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+
+Package: libany6gcc1v6
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] with gcc 6 version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ It test if v6 string are correctly escaped
+
+Package: libany5gcc1v5
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] with gcc 5 version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ It test if v5 string are correctly escaped
+
+Package: libanyq16-6
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] with Q16 version
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ It test if string are correctly escaped like for imagemagick.
+ .
+ library name is not libanyQ166 \ No newline at end of file
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install
new file mode 100644
index 0000000..283bc61
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.install
@@ -0,0 +1 @@
+/usr/lib/libany5gcc.* \ No newline at end of file
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols
new file mode 100644
index 0000000..a394502
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany5gcc1v5.symbols
@@ -0,0 +1,2 @@
+libany5gcc.so.1 libany5gcc1v5 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install
new file mode 100644
index 0000000..9485e87
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.install
@@ -0,0 +1 @@
+/usr/lib/libany6gcc.* \ No newline at end of file
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols
new file mode 100644
index 0000000..aee5f00
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libany6gcc1v6.symbols
@@ -0,0 +1,2 @@
+libany6gcc.so.1v6 libany6gcc1v6 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install
new file mode 100644
index 0000000..b4ecaea
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.install
@@ -0,0 +1 @@
+/usr/lib/libanyQ16* \ No newline at end of file
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols
new file mode 100644
index 0000000..0f32f79
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/libanyq16-6.symbols
@@ -0,0 +1,2 @@
+libanyQ16.so.1v6 libanyQ16-6 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install
new file mode 100644
index 0000000..5c86ce1
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.install
@@ -0,0 +1 @@
+/usr/lib/libany.* \ No newline at end of file
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols
new file mode 100644
index 0000000..9b6f454
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/debian/mylibany.symbols
@@ -0,0 +1,2 @@
+libany.so.1 mylibany #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/fill-values b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/fill-values
new file mode 100644
index 0000000..523eb0b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: binaries-doesnt-match-sonames
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for library package that does not match SONAME
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/Makefile
new file mode 100644
index 0000000..21a67b5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+MYCFLAGS=-Wall -Winline -O2 -fPIC
+CFLAGS:=$(MYCFLAGS) $(CPPFLAGS) $(CFLAGS)
+
+SONAMES:= libany.so.1 libany6gcc.so.1v6 libany5gcc.so.1 libanyQ16.so.6
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/code.c
new file mode 100644
index 0000000..0c4f917
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/build-spec/orig/code.c
@@ -0,0 +1,9 @@
+#include <string.h>
+#include <stdio.h>
+
+void e(char *p, int i, void (*f)(char *)){
+ char test[10];
+ memcpy(test, p, i);
+ f(test);
+ printf("%s", test);
+}
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/desc b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/desc
new file mode 100644
index 0000000..f56f7dc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-doesnt-match-sonames
+Check: libraries/shared/soname
diff --git a/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/hints b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/hints
new file mode 100644
index 0000000..3bf2fcf
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/binaries-doesnt-match-sonames/eval/hints
@@ -0,0 +1 @@
+mylibany (binary): package-name-doesnt-match-sonames libany1
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/desc b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..0a028e1
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: libraries/shared/soname
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/hints b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..17a0bab
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz2 (binary): package-name-doesnt-match-sonames libbaz2-1.0
+libbaz1 (binary): package-name-doesnt-match-sonames libbaz libbaz2-1.0 libbaz3-1
diff --git a/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/post-test b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/_symbols b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/_symbols
new file mode 100644
index 0000000..46e6af1
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/_symbols
@@ -0,0 +1,23 @@
+ This line should flag a syntax error
+# but this one shouldn't
+| although this one should, but for a different reason
+ and so should this
+
+libhello.so.0 libhello0 #MINVER#
+| libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3)
+| hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2
+| hello-dbg
+ hello@Base 1.0
+* Build-Dep-Foo: bar
+ hello2@Base 2.0 4
+ hello3@Base 2.0 1
+ hello3@Base 2.0 A
+ dummy
+
+libhello.so.2 libhello2 #MINVER#
+* Build-Depends-Package: libbar
+| libhello2 (>= 1:2.3)
+ hello@Base 2.0
+
+libhello.so.0 libhello0 #MINVER#
+ duplicate@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/changelog.in b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/changelog.in
new file mode 100644
index 0000000..02da925
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+debug ([% $version %]) [% $distribution %]; urgency=low
+
+ * NMU.
+ (uploaded by the maintainer and with repeated version number)
+
+ -- Russ Allbery <rra@debian.org> Tue, 4 Apr 2006 20:27:22 +0000
+
+debug (1.0) unstable; urgency=low
+
+ * Initial version.
+
+ -- Russ Allbery <rra@debian.org> Sat, 4 Mar 2006 21:31:06 -0800
+
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/control b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/control
new file mode 100644
index 0000000..fcb2b86
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/control
@@ -0,0 +1,85 @@
+Source: debug
+Section: utils
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 5.0.0)
+Build-Depends-Indep: not-debhelper (>= 0.4.3)
+Standards-Version: 3.7.0
+
+Package: hello
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information
+ Lintian regression test for external debugging file handling. This test
+ contains the binary.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hello-dbg
+Priority: optional
+Section: debug
+Architecture: any
+Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the binary symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library)
+ Lintian regression test for external debugging file handling. This test
+ contains a library.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libhello0-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Test for external debugging information (library symbols)
+ Lintian regression test for external debugging file handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: hi-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0
+Description: Test for external debugging symbols
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: hello-hello-dbg
+Section: debug
+Priority: optional
+Architecture: any
+Depends: foo-pkg, not-libhello0, hello
+Description: Test for external debugging symbols - another try
+ Lintian regression test for external debugging files handling. This test
+ contains the library symbols. This package actually tests a combination of
+ the above.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/copyright b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/copyright
new file mode 100644
index 0000000..5d4f6c2
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/copyright
@@ -0,0 +1,4 @@
+Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery <rra@debian.org>.
+
+Test for copyright in capital letters. (#464992)
+COPYRIGHT RUSS ALLBERY 2006
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/rules b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/rules
new file mode 100755
index 0000000..b659895
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# This file is public domain software, originally written by Joey Hess.
+
+# turn off PIE in CC in case we have a PIEful toolchain:
+ifneq ($(findstring -no-pie,$(shell gcc -no-pie 2>&1)),)
+ CC := gcc
+else
+ CC := gcc -fno-pie -no-pie
+endif
+
+build-indep:
+
+build-arch: build-stamp
+
+build-stamp:
+ dh_testdir
+ $(CC) -D_REENTRANT -fPIC -c libhello.c
+ $(CC) -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o
+ ln -s libhello.so.0.0 libhello.so
+ $(CC) -o hello hello.c -L. -lhello
+ touch build-stamp
+
+build: build-arch build-indep
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp *.o libhello.so.0.0 libhello.so
+ dh_clean
+
+install: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ install -D hello $(CURDIR)/debian/hello/usr/bin/hello
+ install -D libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0
+ ln -s libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0
+
+# Build architecture-dependent files here.
+export DH_OPTIONS
+binary-arch: DH_OPTIONS=-a
+binary-arch: build-stamp install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -N hello-dbg
+ dh_installdocs
+ DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg
+ DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg
+
+ # Now break a few things. Copy the debugging data into places it
+ # shouldn't be.
+ cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \
+ $(CURDIR)/debian/hello/usr/bin/hello.dbg
+ cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg
+
+ # Put a full copy of the library in libhello0-dbg in /usr/lib/debug,
+ # which is okay.
+ install -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0
+
+ # Also put it in /usr/lib/debug/lib, which isn't.
+ install -D -m 644 libhello.so.0.0 \
+ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0
+
+ # Requires a versioned dependency.
+ dh_icons
+
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs -X debug
+ dh_installdeb
+ dh_shlibdeps -X debug
+
+ # We do this by hand as otherwise dpkg-gensymbols
+ # will error due to the broken symbols file
+ # and abort the build; similarly the file in
+ # the source tree is _symbols so that dpkg
+ # doesn't attempt to sanity check it
+ install -d $(CURDIR)/debian/libhello0/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/libhello0/DEBIAN/symbols
+ # hello doesn't contain any shlibs, but we
+ # make it contain a symbols file
+ install -d $(CURDIR)/debian/hello/DEBIAN
+ install -m 644 $(CURDIR)/debian/_symbols \
+ $(CURDIR)/debian/hello/DEBIAN/symbols
+
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary-indep:
+binary: binary-indep binary-arch
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/fill-values b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/fill-values
new file mode 100644
index 0000000..79eebf1
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debug
+Source: debug
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 7
+Description: Legacy test "debug"
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/hello.c b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/hello.c
new file mode 100644
index 0000000..76f8337
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/hello.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+#include "libhello.h"
+
+int
+main(void)
+{
+ hello();
+ exit(0);
+}
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.c b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.c
new file mode 100644
index 0000000..e2f8409
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void
+hello(void)
+{
+ printf("Hello, World!\n");
+}
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.h b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.h
new file mode 100644
index 0000000..ef77476
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/build-spec/orig/libhello.h
@@ -0,0 +1 @@
+void hello(void);
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/desc b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/desc
new file mode 100644
index 0000000..c44e37c
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debug
+Check: libraries/shared/soname/missing
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/hints b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/hints
new file mode 100644
index 0000000..67b1bb6
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/hints
@@ -0,0 +1 @@
+libhello0-dbg (binary): sharedobject-in-library-directory-missing-soname [usr/lib/libhello.so.dbg]
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/post-test b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/post-test
new file mode 100644
index 0000000..fc97c5f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-debug/eval/post-test
@@ -0,0 +1,2 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/desc b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..ae6536b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: libraries/shared/soname/missing
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/hints b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..28d3482
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz1 (binary): sharedobject-in-library-directory-missing-soname [usr/lib/libbaz1.so.1.0.3b]
diff --git a/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/post-test b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/control.in
new file mode 100644
index 0000000..c749732
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libhallo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/fill-values b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/fill-values
new file mode 100644
index 0000000..94741cf
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-missing-soname
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for shlib without SONAME
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/Makefile
new file mode 100644
index 0000000..2c8bd5e
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/Makefile
@@ -0,0 +1,19 @@
+CFLAGS += -fPIC
+
+all: libhallo.so hallohelper
+
+libhallo.so: code.o
+ $(LINK.c) -o $@ -shared $^ -lc
+
+hallohelper: main.o
+ $(LINK.c) -o $@ -pie $^ -lc
+
+clean:
+ rm -f *.a *.o *.so *helper
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so $(DESTDIR)/usr/lib
+ install -m 0755 *helper $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/main.c b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/main.c
new file mode 100644
index 0000000..832667c
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/build-spec/orig/main.c
@@ -0,0 +1,4 @@
+int main(int argc, char **argv)
+{
+ return 42;
+}
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/desc b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/desc
new file mode 100644
index 0000000..64729bb
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-missing-soname
+Check: libraries/shared/soname/missing
diff --git a/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/hints b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/hints
new file mode 100644
index 0000000..cd76dc7
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/soname/missing/shared-libs-missing-soname/eval/hints
@@ -0,0 +1 @@
+libhallo1 (binary): sharedobject-in-library-directory-missing-soname [usr/lib/libhallo.so]
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/control.in
new file mode 100644
index 0000000..bd81464
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libexecstack1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols
new file mode 100644
index 0000000..1cc72ae
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/debian/libexecstack1.symbols
@@ -0,0 +1,3 @@
+libexecstack.so.1 libexecstack1 #MINVER#
+ foo@Base 1.0
+ get@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/fill-values b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/fill-values
new file mode 100644
index 0000000..7ca10e3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-exec-stack
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to libs with exec stack
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/Makefile
new file mode 100644
index 0000000..1754891
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libexecstack.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): foo.o get.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/foo.c b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/foo.c
new file mode 100644
index 0000000..7f41799
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/foo.c
@@ -0,0 +1,9 @@
+extern int get(int, int (*)(int));
+
+int foo(int a) {
+ int b = a;
+ int bar(int a) {
+ return a + b;
+ }
+ return get(a, bar);
+}
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/get.c b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/get.c
new file mode 100644
index 0000000..8207637
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/build-spec/orig/get.c
@@ -0,0 +1,6 @@
+int get(int a, int (*f)(int)) {
+ return f(a);
+}
+
+extern int foo(int);
+
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/desc b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/desc
new file mode 100644
index 0000000..d4a1cf4
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/desc
@@ -0,0 +1,3 @@
+Testname: shared-libs-exec-stack
+Check: libraries/shared/stack
+Test-Architectures: any-amd64 any-i386 arm64 armel armhf ppc64el s390x alpha arc hppa ia64 m68k powerpc ppc64 riscv64 sh4 sparc64 x32
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/hints b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/hints
new file mode 100644
index 0000000..577d912
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/hints
@@ -0,0 +1 @@
+libexecstack1 (binary): executable-stack-in-shared-library [usr/lib/libexecstack.so.1.0.1]
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/control.in
new file mode 100644
index 0000000..c749732
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libhallo1
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols
new file mode 100644
index 0000000..4c27e3f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/debian/libhallo1.symbols
@@ -0,0 +1,2 @@
+libhallo.so.1 libhallo1 #MINVER#
+ e@Base 1.0
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/fill-values b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/fill-values
new file mode 100644
index 0000000..c238ab1
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: shared-libs-no-gnu-stack
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test for shared libs without PT_GNU_STACK
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/Makefile
new file mode 100644
index 0000000..8d357a8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/Makefile
@@ -0,0 +1,23 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libhallo.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -fPIC -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc
+ ./erase-pt-gnu-stack $@
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/code.c
new file mode 100644
index 0000000..65887f3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/code.c
@@ -0,0 +1,10 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack
new file mode 100755
index 0000000..d3b7e59
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/build-spec/orig/erase-pt-gnu-stack
@@ -0,0 +1,9 @@
+#!/usr/bin/perl -pi
+
+use strict;
+use warnings;
+
+my $PT_GNU_STACK = 0x6474e551;
+my $be = pack('L>', $PT_GNU_STACK);
+my $le = pack('L<', $PT_GNU_STACK);
+s/\Q$be\E|\Q$le\E/\0\0\0\0/g;
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/desc b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/desc
new file mode 100644
index 0000000..8986371
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-no-gnu-stack
+Check: libraries/shared/stack
diff --git a/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/hints b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/hints
new file mode 100644
index 0000000..cd6d473
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/stack/shared-libs-no-gnu-stack/eval/hints
@@ -0,0 +1 @@
+libhallo1 (binary): shared-library-lacks-stack-section [usr/lib/libhallo.so.1.0.1]
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/desc b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..201d68d
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: libraries/shared/trigger/ldconfig
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/hints b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..2e33583
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz1 (binary): lacks-ldconfig-trigger usr/lib/libbaz.so usr/lib/libbaz3.so.1.0.3b usr/lib/libfoo2.so.1.0.3b
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/post-test b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install
new file mode 100644
index 0000000..fe6951d
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install
@@ -0,0 +1,2 @@
+app usr/lib/app
+
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm
new file mode 100755
index 0000000..eaeb28d
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = remove ] ; then ldconfig ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers
new file mode 100644
index 0000000..dd86603
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..9960ee9
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in
@@ -0,0 +1,47 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (missing ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for missing ldconfig in scripts.
+
+Package: libfish1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (preinst/rm ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for ldconfig in preinst/prerm scripts.
+
+Package: libuns1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (unsafe ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for unsafe ldconfig usage scripts.
+
+Package: app
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (useless ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for useless ldconfig usage in scripts.
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install
new file mode 100644
index 0000000..b1c4ec9
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install
@@ -0,0 +1 @@
+usr/lib/libfish*
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols
new file mode 100644
index 0000000..2c5a075
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols
@@ -0,0 +1,3 @@
+libfish.so.1 libfish1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..f3a3a05
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+usr/lib/libfoo*
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst
new file mode 100755
index 0000000..2615bf9
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+# No ldconfig
+if false ; then true ; fi
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm
new file mode 100755
index 0000000..9b2f636
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+if false ; then true ; fi
+
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install
new file mode 100644
index 0000000..b91d5ff
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install
@@ -0,0 +1 @@
+usr/lib/libuns*
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm
new file mode 100755
index 0000000..acc5d15
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols
new file mode 100644
index 0000000..d91149f
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols
@@ -0,0 +1,3 @@
+libuns.so.1 libuns1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..b1c71a9
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules
@@ -0,0 +1,21 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ for P in $$(dh_listpackages) ; do \
+ for S in postinst postrm preinst prerm ; do \
+ if [ -f debian/$${P}.$${S} ] ; then \
+ cp -af debian/$${P}.$${S} debian/$${P}/DEBIAN/$${S} ; \
+ chmod 0755 debian/$${P}/DEBIAN/$${S} ; \
+ sed -i '/#DEBHELPER#/ d' debian/$${P}/DEBIAN/$${S} ; \
+ fi ; \
+ done ; \
+ done
+ # Work around debhelper adding triggers instead of explicit
+ # ldconfig calls
+ rm -f debian/libfoo1/DEBIAN/triggers
+ dh_builddeb
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values
new file mode 100644
index 0000000..2159596
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: shared-libs-ldconfig-scripts
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to ldconfig in scripts
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile
new file mode 100644
index 0000000..4d3c286
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1 libfish.so.1 libuns.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lm
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app
new file mode 100755
index 0000000..04f1961
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo Hello World
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/desc b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/desc
new file mode 100644
index 0000000..a55b281
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-scripts
+Check: libraries/shared/trigger/ldconfig
diff --git a/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/hints b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/hints
new file mode 100644
index 0000000..92986ce
--- /dev/null
+++ b/t/recipes/checks/libraries/shared/trigger/ldconfig/shared-libs-ldconfig-scripts/eval/hints
@@ -0,0 +1,2 @@
+libfoo1 (binary): lacks-ldconfig-trigger usr/lib/libfoo.so.1.0.1
+app (binary): package-has-unnecessary-activation-of-ldconfig-trigger
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/control.in b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/control.in
new file mode 100644
index 0000000..b4e0958
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-dev
+Architecture: [% $package_architecture %]
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/rules b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/rules
new file mode 100644
index 0000000..3a30bc0
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_strip:
+ # Don't strip :)
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/fill-values b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/fill-values
new file mode 100644
index 0000000..0968380
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: binaries-static-lib
+Package-Architecture: any
+Skeleton: upload-non-native
+Description: Test checks related to static libs
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/Makefile b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/Makefile
new file mode 100644
index 0000000..c6d2401
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/Makefile
@@ -0,0 +1,31 @@
+CC=gcc
+CFLAGS+= -g
+LIBFILES:= libfoo.a libbar.a
+
+all: $(LIBFILES)
+
+libfoo.a: code.o other.o
+ ar rcs -o $@ $^
+
+pstripped.o: other.o
+ cp other.o pstripped.o
+ strip --strip-unneeded pstripped.o
+
+fstripped.o: other.o
+ cp other.o fstripped.o
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=.note fstripped.o
+
+libbar.a: fstripped.o pstripped.o
+ ar rcs -o $@ $^
+
+clean:
+ rm -f *.a *.o
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0755 -d $(DESTDIR)/usr/include
+ install -m 0644 *.a $(DESTDIR)/usr/lib
+ install -m 0644 code.h $(DESTDIR)/usr/include
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.c b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.c
new file mode 100644
index 0000000..7bba112
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.h b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/other.c b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/other.c
new file mode 100644
index 0000000..153aace
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/build-spec/orig/other.c
@@ -0,0 +1,6 @@
+#include "code.h"
+#include <math.h>
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/eval/desc b/t/recipes/checks/libraries/static/binaries-static-lib/eval/desc
new file mode 100644
index 0000000..4fa1456
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/eval/desc
@@ -0,0 +1,2 @@
+Testname: binaries-static-lib
+Check: libraries/static
diff --git a/t/recipes/checks/libraries/static/binaries-static-lib/eval/hints b/t/recipes/checks/libraries/static/binaries-static-lib/eval/hints
new file mode 100644
index 0000000..62dfcf3
--- /dev/null
+++ b/t/recipes/checks/libraries/static/binaries-static-lib/eval/hints
@@ -0,0 +1,2 @@
+libfoo-dev (binary): unstripped-static-library (code.o other.o) [usr/lib/libfoo.a]
+libfoo-dev (binary): static-library-has-unneeded-sections (pstripped.o) .comment [usr/lib/libbar.a]
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/control.in b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/control.in
new file mode 100644
index 0000000..b4e0958
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-dev
+Architecture: [% $package_architecture %]
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/rules b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/rules
new file mode 100644
index 0000000..3a30bc0
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_strip:
+ # Don't strip :)
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/fill-values b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/fill-values
new file mode 100644
index 0000000..7dad5a8
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: with-fat-lto-objects
+Package-Architecture: any
+Skeleton: upload-non-native
+Description: Static library built with -flto=auto and with -ffat-lto-objects
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/Makefile b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/Makefile
new file mode 100644
index 0000000..61335ab
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+CC=gcc
+CFLAGS+= -g -flto=auto -ffat-lto-objects
+LIBFILES:= libcodeless.a
+
+all: $(LIBFILES)
+
+libcodeless.a: code.o
+ ar rcs -o $@ $^
+
+clean:
+ rm -f *.a *.o
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.a $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.c b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.c
new file mode 100644
index 0000000..7bba112
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.h b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/desc b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/desc
new file mode 100644
index 0000000..5a20d7f
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/desc
@@ -0,0 +1,4 @@
+Testname: with-fat-lto-objects
+Check: libraries/static/link-time-optimization
+See-Also:
+ Bug#963057
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/hints b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/hints
new file mode 100644
index 0000000..33c3dd9
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/with-fat-lto-objects/eval/hints
@@ -0,0 +1 @@
+libfoo-dev (binary): static-link-time-optimization code.o [usr/lib/libcodeless.a]
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/control.in b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/control.in
new file mode 100644
index 0000000..b4e0958
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-dev
+Architecture: [% $package_architecture %]
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/rules b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/rules
new file mode 100644
index 0000000..3a30bc0
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_strip:
+ # Don't strip :)
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/fill-values b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/fill-values
new file mode 100644
index 0000000..ff04e62
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: without-fat-lto-objects
+Package-Architecture: any
+Skeleton: upload-non-native
+Description: Static library built with -flto=auto, but without -ffat-lto-objects
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/Makefile b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/Makefile
new file mode 100644
index 0000000..6b1fa78
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+CC=gcc
+CFLAGS+= -g -flto=auto
+LIBFILES:= libcodeless.a
+
+all: $(LIBFILES)
+
+libcodeless.a: code.o
+ ar rcs -o $@ $^
+
+clean:
+ rm -f *.a *.o
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.a $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.c b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.c
new file mode 100644
index 0000000..7bba112
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.h b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/desc b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/desc
new file mode 100644
index 0000000..a71a4f2
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/desc
@@ -0,0 +1,4 @@
+Testname: without-fat-lto-objects
+Check: libraries/static/link-time-optimization
+See-Also:
+ Bug#963057
diff --git a/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/hints b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/hints
new file mode 100644
index 0000000..33c3dd9
--- /dev/null
+++ b/t/recipes/checks/libraries/static/link-time-optimization/without-fat-lto-objects/eval/hints
@@ -0,0 +1 @@
+libfoo-dev (binary): static-link-time-optimization code.o [usr/lib/libcodeless.a]
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/fill-values b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/fill-values
new file mode 100644
index 0000000..0284acb
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: underscore-s-suffix
+Package-Architecture: any
+Skeleton: upload-non-native
+Description: Static library installed with _s.a suffix
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/Makefile b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/Makefile
new file mode 100644
index 0000000..6545dde
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+CC=gcc
+CFLAGS+= -g
+LIBFILES:= librealname_s.a
+
+all: $(LIBFILES)
+
+librealname_s.a: code.o
+ ar rcs -o $@ $^
+
+clean:
+ rm -f *.a *.o
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.a $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.c b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.c
new file mode 100644
index 0000000..7bba112
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.h b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/other.c b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/other.c
new file mode 100644
index 0000000..153aace
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/build-spec/orig/other.c
@@ -0,0 +1,6 @@
+#include "code.h"
+#include <math.h>
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/desc b/t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/desc
new file mode 100644
index 0000000..8bb948f
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/desc
@@ -0,0 +1,4 @@
+Testname: underscore-s-suffix
+Check: libraries/static/name
+See-Also:
+ Debian Bug#698398
diff --git a/t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/hints b/t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/hints
new file mode 100644
index 0000000..61ad390
--- /dev/null
+++ b/t/recipes/checks/libraries/static/name/underscore-s-suffix/eval/hints
@@ -0,0 +1 @@
+underscore-s-suffix (binary): odd-static-library-name [usr/lib/librealname_s.a]
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/control.in b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/control.in
new file mode 100644
index 0000000..b4e0958
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-dev
+Architecture: [% $package_architecture %]
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/rules b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/rules
new file mode 100644
index 0000000..3a30bc0
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_strip:
+ # Don't strip :)
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/fill-values b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/fill-values
new file mode 100644
index 0000000..7dad5a8
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: with-fat-lto-objects
+Package-Architecture: any
+Skeleton: upload-non-native
+Description: Static library built with -flto=auto and with -ffat-lto-objects
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/Makefile b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/Makefile
new file mode 100644
index 0000000..61335ab
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+CC=gcc
+CFLAGS+= -g -flto=auto -ffat-lto-objects
+LIBFILES:= libcodeless.a
+
+all: $(LIBFILES)
+
+libcodeless.a: code.o
+ ar rcs -o $@ $^
+
+clean:
+ rm -f *.a *.o
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.a $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.c b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.c
new file mode 100644
index 0000000..7bba112
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.h b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/desc b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/desc
new file mode 100644
index 0000000..23eef5e
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/desc
@@ -0,0 +1,6 @@
+Testname: with-fat-lto-objects
+Check: libraries/static/no-code
+Test-Against:
+ no-code-sections
+See-Also:
+ Bug#977596
diff --git a/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/hints b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/with-fat-lto-objects/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/control.in b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/control.in
new file mode 100644
index 0000000..b4e0958
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo-dev
+Architecture: [% $package_architecture %]
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/rules b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/rules
new file mode 100644
index 0000000..3a30bc0
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/debian/rules
@@ -0,0 +1,7 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_strip:
+ # Don't strip :)
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/fill-values b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/fill-values
new file mode 100644
index 0000000..ff04e62
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: without-fat-lto-objects
+Package-Architecture: any
+Skeleton: upload-non-native
+Description: Static library built with -flto=auto, but without -ffat-lto-objects
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/Makefile b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/Makefile
new file mode 100644
index 0000000..6b1fa78
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/Makefile
@@ -0,0 +1,17 @@
+CC=gcc
+CFLAGS+= -g -flto=auto
+LIBFILES:= libcodeless.a
+
+all: $(LIBFILES)
+
+libcodeless.a: code.o
+ ar rcs -o $@ $^
+
+clean:
+ rm -f *.a *.o
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.a $(DESTDIR)/usr/lib
+
+.PHONY: install clean
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.c b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.c
new file mode 100644
index 0000000..7bba112
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <math.h>
+#include "code.h"
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.h b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.h
new file mode 100644
index 0000000..570beae
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/build-spec/orig/code.h
@@ -0,0 +1,8 @@
+#ifndef CODE_H_
+#define CODE_H_
+
+double e(void (*f)(char *));
+
+double energy(double mass);
+
+#endif
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/desc b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/desc
new file mode 100644
index 0000000..3bc8ecb
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/desc
@@ -0,0 +1,4 @@
+Testname: without-fat-lto-objects
+Check: libraries/static/no-code
+See-Also:
+ Bug#977596
diff --git a/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/hints b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/hints
new file mode 100644
index 0000000..19a13e1
--- /dev/null
+++ b/t/recipes/checks/libraries/static/no-code/without-fat-lto-objects/eval/hints
@@ -0,0 +1 @@
+libfoo-dev (binary): no-code-sections [usr/lib/libcodeless.a]
diff --git a/t/recipes/checks/linda/files-package-contains-foo/build-spec/debian/rules b/t/recipes/checks/linda/files-package-contains-foo/build-spec/debian/rules
new file mode 100644
index 0000000..506639f
--- /dev/null
+++ b/t/recipes/checks/linda/files-package-contains-foo/build-spec/debian/rules
@@ -0,0 +1,73 @@
+#!/usr/bin/make -f
+
+PKG :=$(shell dh_listpackages)
+SHARE:= debian/$(PKG)/usr/share
+DATA := $(SHARE)/$(PKG)
+DOC := $(SHARE)/doc/$(PKG)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ mkdir -p $(DOC) $(DATA)
+
+ # Vcs stuff
+ mkdir $(DATA)/.svn $(DATA)/.git
+ touch $(DATA)/.svn/file
+ touch $(DATA)/.git/file
+ touch $(DATA)/.gitignore
+ touch $(DATA)/.git_ignore
+ mkdir $(DATA)/sub-git1/
+ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz
+ touch $(DATA)/sub-git1/.gitattributes
+ touch $(DATA)/sub-git1/.gitmodules
+
+ touch $(DATA)/svn-commit-yeehaa.tmp
+ touch $(DATA)/svk-commit-yeehaa.tmp
+
+ # bts control dir
+ mkdir $(DATA)/.be
+ touch $(DATA)/.be/file
+
+ # macos stuff
+ touch $(DATA)/.DS_Store
+ touch $(DATA)/._stuff
+
+ # windows
+ touch $(DATA)/Thumbs.db
+
+ # Foreign READMEs
+ echo "Hallo World Mac" > $(DOC)/README.mac
+ echo "Hallo World Win" > $(DOC)/README.windows
+
+ # Linda override
+ mkdir -p $(SHARE)/linda/overrides
+ touch $(SHARE)/linda/overrides/$(PKG)
+
+ # CMake private files
+ mkdir -p $(SHARE)/cmake-3.1/Modules
+ touch $(SHARE)/cmake-3.1/FindFoo.cmake
+ touch $(SHARE)/cmake-3.1/Modules/FindVar.cmake
+
+ # Ignored Cargo sources
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/.gitignore
+ touch $(SHARE)/cargo/registry/crate-1.0.0/LICENSE
+ touch $(SHARE)/cargo/registry/crate-1.0.0/templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/foo_templates
+ touch $(SHARE)/cargo/registry/crate-1.0.0/foo_templates/readme.tmpl
+ mkdir -p $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d
+ touch $(SHARE)/cargo/registry/crate-1.0.0/my-templates.d/readme.tmpl
+ echo '#!/bin/sh' > $(SHARE)/cargo/registry/crate-1.0.0/test.sh
+ echo '#!/usr/bin/python' > $(SHARE)/cargo/registry/crate-1.0.0/test.py
+ chmod a+x $(SHARE)/cargo/registry/crate-1.0.0/test.py
+
+ # Documentation outside /usr/share/doc
+ touch $(DATA)/readme.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme1.1.txt
+ touch $(DATA)/readme_1.1.txt
+ touch $(DATA)/readme-1.1.txt
+ touch $(DATA)/readmefirst.txt
+ touch $(DATA)/readMesh_off.m # False-positive from #914500
diff --git a/t/recipes/checks/linda/files-package-contains-foo/build-spec/fill-values b/t/recipes/checks/linda/files-package-contains-foo/build-spec/fill-values
new file mode 100644
index 0000000..b55ed53
--- /dev/null
+++ b/t/recipes/checks/linda/files-package-contains-foo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-package-contains-foo
+Description: Test tags about cruft in binary packages
diff --git a/t/recipes/checks/linda/files-package-contains-foo/eval/desc b/t/recipes/checks/linda/files-package-contains-foo/eval/desc
new file mode 100644
index 0000000..e7e8bd9
--- /dev/null
+++ b/t/recipes/checks/linda/files-package-contains-foo/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-package-contains-foo
+Check: linda
diff --git a/t/recipes/checks/linda/files-package-contains-foo/eval/hints b/t/recipes/checks/linda/files-package-contains-foo/eval/hints
new file mode 100644
index 0000000..7acfb74
--- /dev/null
+++ b/t/recipes/checks/linda/files-package-contains-foo/eval/hints
@@ -0,0 +1 @@
+files-package-contains-foo (binary): package-contains-linda-override [usr/share/linda/overrides/files-package-contains-foo]
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/debian/control b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/fill-values b/t/recipes/checks/linda/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/linda/legacy-filenames/eval/desc b/t/recipes/checks/linda/legacy-filenames/eval/desc
new file mode 100644
index 0000000..3cb2806
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: linda
diff --git a/t/recipes/checks/linda/legacy-filenames/eval/hints b/t/recipes/checks/linda/legacy-filenames/eval/hints
new file mode 100644
index 0000000..18d4ef5
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/eval/hints
@@ -0,0 +1 @@
+filenames (binary): package-contains-linda-override [usr/share/linda/overrides/filenames]
diff --git a/t/recipes/checks/linda/legacy-filenames/eval/post-test b/t/recipes/checks/linda/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/linda/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/control.in b/t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/control.in
new file mode 100644
index 0000000..6c59016
--- /dev/null
+++ b/t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+HoMePaGe: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package probably has no meaningful contents.
diff --git a/t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/source/lintian-overrides b/t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/source/lintian-overrides
new file mode 100644
index 0000000..3018525
--- /dev/null
+++ b/t/recipes/checks/lintian/override-context-mismatch/build-spec/debian/source/lintian-overrides
@@ -0,0 +1 @@
+cute-field homepage
diff --git a/t/recipes/checks/lintian/override-context-mismatch/build-spec/fill-values b/t/recipes/checks/lintian/override-context-mismatch/build-spec/fill-values
new file mode 100644
index 0000000..870095b
--- /dev/null
+++ b/t/recipes/checks/lintian/override-context-mismatch/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: override-context-mismatch
+Skeleton: source-native
+Description: Override not applied because of context mismatch
diff --git a/t/recipes/checks/lintian/override-context-mismatch/eval/desc b/t/recipes/checks/lintian/override-context-mismatch/eval/desc
new file mode 100644
index 0000000..061121a
--- /dev/null
+++ b/t/recipes/checks/lintian/override-context-mismatch/eval/desc
@@ -0,0 +1,3 @@
+Testname: override-context-mismatch
+Check: lintian
+Default-Lintian-Options: --pedantic --display-info --display-experimental --display-level +classification --show-overrides --check-part fields/style,lintian
diff --git a/t/recipes/checks/lintian/override-context-mismatch/eval/hints b/t/recipes/checks/lintian/override-context-mismatch/eval/hints
new file mode 100644
index 0000000..d1884d3
--- /dev/null
+++ b/t/recipes/checks/lintian/override-context-mismatch/eval/hints
@@ -0,0 +1,2 @@
+override-context-mismatch (source): mismatched-override cute-field homepage [debian/source/lintian-overrides:1]
+override-context-mismatch (source): cute-field HoMePaGe vs Homepage [debian/control:8]
diff --git a/t/recipes/checks/lintian/override-not-used/build-spec/debian/source/lintian-overrides b/t/recipes/checks/lintian/override-not-used/build-spec/debian/source/lintian-overrides
new file mode 100644
index 0000000..ca2bed6
--- /dev/null
+++ b/t/recipes/checks/lintian/override-not-used/build-spec/debian/source/lintian-overrides
@@ -0,0 +1 @@
+cute-field Architecture
diff --git a/t/recipes/checks/lintian/override-not-used/build-spec/fill-values b/t/recipes/checks/lintian/override-not-used/build-spec/fill-values
new file mode 100644
index 0000000..c5f06cc
--- /dev/null
+++ b/t/recipes/checks/lintian/override-not-used/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: override-not-used
+Skeleton: source-native
+Description: Unused override
diff --git a/t/recipes/checks/lintian/override-not-used/eval/desc b/t/recipes/checks/lintian/override-not-used/eval/desc
new file mode 100644
index 0000000..ea81d9a
--- /dev/null
+++ b/t/recipes/checks/lintian/override-not-used/eval/desc
@@ -0,0 +1,3 @@
+Testname: override-not-used
+Check: lintian
+Default-Lintian-Options: --pedantic --display-info --display-experimental --display-level +classification --show-overrides --check-part fields/style,lintian
diff --git a/t/recipes/checks/lintian/override-not-used/eval/hints b/t/recipes/checks/lintian/override-not-used/eval/hints
new file mode 100644
index 0000000..58c58fb
--- /dev/null
+++ b/t/recipes/checks/lintian/override-not-used/eval/hints
@@ -0,0 +1 @@
+override-not-used (source): unused-override cute-field Architecture [debian/source/lintian-overrides:1]
diff --git a/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/debian/install b/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/debian/install
new file mode 100644
index 0000000..1bc8a8b
--- /dev/null
+++ b/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/debian/install
@@ -0,0 +1 @@
+mailcap/* usr/lib/mime/packages/
diff --git a/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/fill-values b/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/fill-values
new file mode 100644
index 0000000..2d66612
--- /dev/null
+++ b/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: placeholder-in-quoted-string
+Description: Placeholder in mailcap file inside single quotes.
diff --git a/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/orig/mailcap/imagemagick-6.q16 b/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/orig/mailcap/imagemagick-6.q16
new file mode 100644
index 0000000..666dbdf
--- /dev/null
+++ b/t/recipes/checks/mailcap/placeholder-in-quoted-string/build-spec/orig/mailcap/imagemagick-6.q16
@@ -0,0 +1 @@
+image/png; display-im6.q16 'png:%s'; test=test -n "$DISPLAY"; priority=2
diff --git a/t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/desc b/t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/desc
new file mode 100644
index 0000000..01206d7
--- /dev/null
+++ b/t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/desc
@@ -0,0 +1,2 @@
+Testname: placeholder-in-quoted-string
+Check: mailcap
diff --git a/t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/hints b/t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/hints
new file mode 100644
index 0000000..63de776
--- /dev/null
+++ b/t/recipes/checks/mailcap/placeholder-in-quoted-string/eval/hints
@@ -0,0 +1 @@
+placeholder-in-quoted-string (binary): quoted-placeholder-in-mailcap-entry 'png:%s' [usr/lib/mime/packages/imagemagick-6.q16:1]
diff --git a/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/debian/install b/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/debian/install
new file mode 100644
index 0000000..1bc8a8b
--- /dev/null
+++ b/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/debian/install
@@ -0,0 +1 @@
+mailcap/* usr/lib/mime/packages/
diff --git a/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/fill-values b/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/fill-values
new file mode 100644
index 0000000..cfa0a54
--- /dev/null
+++ b/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: single-quoted-placeholder
+Description: Placeholder in mailcap file inside single quotes.
diff --git a/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/orig/mailcap/less b/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/orig/mailcap/less
new file mode 100644
index 0000000..77f7410
--- /dev/null
+++ b/t/recipes/checks/mailcap/single-quoted-placeholder/build-spec/orig/mailcap/less
@@ -0,0 +1 @@
+text/plain; less '%s'; needsterminal; priority=8
diff --git a/t/recipes/checks/mailcap/single-quoted-placeholder/eval/desc b/t/recipes/checks/mailcap/single-quoted-placeholder/eval/desc
new file mode 100644
index 0000000..b2d6339
--- /dev/null
+++ b/t/recipes/checks/mailcap/single-quoted-placeholder/eval/desc
@@ -0,0 +1,2 @@
+Testname: single-quoted-placeholder
+Check: mailcap
diff --git a/t/recipes/checks/mailcap/single-quoted-placeholder/eval/hints b/t/recipes/checks/mailcap/single-quoted-placeholder/eval/hints
new file mode 100644
index 0000000..eaa8743
--- /dev/null
+++ b/t/recipes/checks/mailcap/single-quoted-placeholder/eval/hints
@@ -0,0 +1 @@
+single-quoted-placeholder (binary): quoted-placeholder-in-mailcap-entry '%s' [usr/lib/mime/packages/less:1]
diff --git a/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/debian/install b/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/debian/install
new file mode 100644
index 0000000..1bc8a8b
--- /dev/null
+++ b/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/debian/install
@@ -0,0 +1 @@
+mailcap/* usr/lib/mime/packages/
diff --git a/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/fill-values b/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/fill-values
new file mode 100644
index 0000000..7c987f3
--- /dev/null
+++ b/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: unquoted-placeholder
+Description: Placeholder in mailcap file inside single quotes.
diff --git a/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/orig/mailcap/lynx-common b/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/orig/mailcap/lynx-common
new file mode 100644
index 0000000..228ce9c
--- /dev/null
+++ b/t/recipes/checks/mailcap/unquoted-placeholder/build-spec/orig/mailcap/lynx-common
@@ -0,0 +1 @@
+text/html; /usr/bin/lynx -force_html %s; needsterminal; description=HTML Text; nametemplate=%s.html; priority=3
diff --git a/t/recipes/checks/mailcap/unquoted-placeholder/eval/desc b/t/recipes/checks/mailcap/unquoted-placeholder/eval/desc
new file mode 100644
index 0000000..d50e3b2
--- /dev/null
+++ b/t/recipes/checks/mailcap/unquoted-placeholder/eval/desc
@@ -0,0 +1,4 @@
+Testname: unquoted-placeholder
+Check: mailcap
+Test-Against:
+ quoted-placeholder-in-mailcap-entry
diff --git a/t/recipes/checks/mailcap/unquoted-placeholder/eval/hints b/t/recipes/checks/mailcap/unquoted-placeholder/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/mailcap/unquoted-placeholder/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/debian/postinst
new file mode 100755
index 0000000..51a4df4
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#! /bin/sh
+# excerpt from postinst script for pulseaudio
+
+case "$1" in
+ configure)
+ if ! getent passwd pulse >/dev/null; then
+ adduser --disabled-password --quiet --system \
+ --home /var/run/pulse --no-create-home\
+ --gecos "PulseAudio daemon" --group pulse
+ fi
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/fill-values
new file mode 100644
index 0000000..b2fefca
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: home-in-var-run
+Description: Test for {pre,post}inst script which calls adduser --home /var/run
diff --git a/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/desc b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/desc
new file mode 100644
index 0000000..075b41a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/desc
@@ -0,0 +1,2 @@
+Testname: home-in-var-run
+Check: maintainer-scripts/adduser
diff --git a/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/hints b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/hints
new file mode 100644
index 0000000..ed262f1
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/adduser/home-in-var-run/eval/hints
@@ -0,0 +1 @@
+home-in-var-run (binary): adduser-with-home-var-run [postinst:9]
diff --git a/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/changelog.in b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..d25031a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/changelog.in
@@ -0,0 +1,20 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Version reused, new source package name.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.5) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
+
+[% $source %] (0) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Should be ignored.
+ * Test: [% $testname %]
+
+ -- [% $author %] Fri, 06 Feb 2008 22:22:37 -0800
diff --git a/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/postinst
new file mode 100644
index 0000000..9a9a79c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/debian/postinst
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+# Bad
+dpkg --compare-versions "$2" lt "0.5"
+dpkg --compare-versions "$2" lt 0.5~
+dpkg --compare-versions "$2" lt 0.5-1~
+dpkg --compare-versions "$2" lt '0.5-1~'
+dpkg --compare-versions '0.5-1~' gt "$2"
+if dpkg --compare-versions '0.5-1~' gt "$2"; then :; fi
+
+# Good
+dpkg --compare-versions "$2" lt "0"
+dpkg --compare-versions "$2" lt "0~"
+dpkg --compare-versions "$2" lt 0.50.5
+# This is a false-positive for 0.5
+# dpkg --compare-versions "$2" lt 0.5~
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/fill-values
new file mode 100644
index 0000000..6036e51
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: scripts-supports-ancient-package-version
+Skeleton: upload-non-native
+Description: Check for maintainer scripts supporting old versions
diff --git a/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/desc b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/desc
new file mode 100644
index 0000000..d58a9e1
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-supports-ancient-package-version
+Check: maintainer-scripts/ancient-version
diff --git a/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/hints b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/hints
new file mode 100644
index 0000000..0af90ca
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ancient-version/scripts-supports-ancient-package-version/eval/hints
@@ -0,0 +1,6 @@
+scripts-supports-ancient-package-version (binary): maintainer-script-supports-ancient-package-version 0.5 (2009-02-07 < 2021-08-14) [postinst:9]
+scripts-supports-ancient-package-version (binary): maintainer-script-supports-ancient-package-version 0.5 (2009-02-07 < 2021-08-14) [postinst:8]
+scripts-supports-ancient-package-version (binary): maintainer-script-supports-ancient-package-version 0.5 (2009-02-07 < 2021-08-14) [postinst:7]
+scripts-supports-ancient-package-version (binary): maintainer-script-supports-ancient-package-version 0.5 (2009-02-07 < 2021-08-14) [postinst:6]
+scripts-supports-ancient-package-version (binary): maintainer-script-supports-ancient-package-version 0.5 (2009-02-07 < 2021-08-14) [postinst:11]
+scripts-supports-ancient-package-version (binary): maintainer-script-supports-ancient-package-version 0.5 (2009-02-07 < 2021-08-14) [postinst:10]
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/install b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/install
new file mode 100644
index 0000000..c29cc54
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/install
@@ -0,0 +1,4 @@
+orphan usr/share/scripts/t1
+some-file usr/share/scripts/t1
+orphan usr/share/scripts/t2/foo
+some-file usr/share/scripts/t2/foo
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/postrm
new file mode 100644
index 0000000..73b8ee9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/postrm
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+if [ remove = "$1" ]; then
+ # Clean up the correct diversion from preinst.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ --divert /usr/share/scripts/t2/foo/some-file.real \
+ "/usr/share/scripts/t2/foo/some-file"
+
+ d=scripts
+ # Clean up some other diversion that we didn't create.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/lib/$d/old-file; echo hi
+
+ # Clean up a diversion we did not create for a non-existent file.
+ dpkg-divert --remove --package scripts-diversions --rename \
+ --divert /usr/share/scripts/$v/no-such-file.real \
+ /usr/share/scripts/$v/no-such-file && echo hello
+
+ # Clean up a diversion we did create for a non-existent file.
+ (dpkg-divert --package foo --remove /etc/scripts/orphan)
+ # another one:
+ { dpkg-divert --package foo --remove /usr/share/foo/$(echo bar); }
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/preinst
new file mode 100644
index 0000000..c311563
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/debian/preinst
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -e
+
+if [ install = "$1" ]; then
+ # This is a correct diversion.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/t2/foo/some-file.real \
+ /usr/share/scripts/t2/foo/some-file
+
+ # This is broken -- can't use local.
+ dpkg-divert --local \
+ --add \
+ --divert \
+ /usr/share/scripts/other-file.real \
+ /usr/share/scripts/other-file
+
+ f=orphan
+ # This is also correct, but we're not going to clean it up.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/t1/$f.real \
+ /usr/share/scripts/t1/"$f"
+
+ # Try to divert a file we don't ship
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /etc/scripts/$f.real \
+ /etc/scripts/$f|| true
+ # Another one
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/foo/$f.real \
+ /usr/share/foo/${f#f}
+
+ # This is correct too.
+ dpkg-divert $SOMETHING --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/t2/foo/some-file.real \
+ /usr/share/scripts/t2/foo/some-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/fill-values
new file mode 100644
index 0000000..a2852bf
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-diversions-variables
+Description: Tests of dpkg-divert checks with variables
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/orphan b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/orphan
new file mode 100644
index 0000000..934fd74
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/orphan
@@ -0,0 +1 @@
+Some file that we're going to divert and not clean up.
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/some-file b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/some-file
new file mode 100644
index 0000000..649e369
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/build-spec/orig/some-file
@@ -0,0 +1 @@
+Some random file that we're going to install after diverting.
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/desc b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/desc
new file mode 100644
index 0000000..8e33766
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-diversions-variables
+Check: maintainer-scripts/diversion
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/hints b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/hints
new file mode 100644
index 0000000..d32d2c6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions-variables/eval/hints
@@ -0,0 +1,8 @@
+scripts-diversions-variables (binary): remove-of-unknown-diversion usr/share/scripts/*/no-such-file [postrm:18]
+scripts-diversions-variables (binary): remove-of-unknown-diversion usr/lib/*/old-file [postrm:13]
+scripts-diversions-variables (binary): package-uses-local-diversion [preinst:15]
+scripts-diversions-variables (binary): orphaned-diversion usr/share/scripts/t1/* [preinst:21]
+scripts-diversions-variables (binary): orphaned-diversion usr/share/scripts/other-file [preinst:15]
+scripts-diversions-variables (binary): diversion-for-unknown-file usr/share/scripts/other-file [preinst:15]
+scripts-diversions-variables (binary): diversion-for-unknown-file usr/share/foo/* [preinst:30]
+scripts-diversions-variables (binary): diversion-for-unknown-file etc/scripts/* [preinst:26]
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/install b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/install
new file mode 100644
index 0000000..bf6447b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/install
@@ -0,0 +1,5 @@
+orphan usr/share/scripts
+some-file usr/share/scripts
+file.1 usr/share/scripts
+foo usr/bin
+foo.1p usr/share/man/man1
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postinst
new file mode 100644
index 0000000..f397e7d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+# This isn't a diversion we create anywhere, but we're allowed to do this in
+# postinst in case we're cleaning up after a previous version.
+if [ configure = "$1" ] && dpkg-divert --list '*old-file' >/dev/null ; then
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/share/scripts/old-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postrm
new file mode 100644
index 0000000..26128e9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/postrm
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+if [ remove = "$1" ]; then
+ # Clean up the correct diversion from preinst.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ --divert /usr/share/scripts/some-file.real \
+ /usr/share/scripts/some-file
+
+ # Clean up some other diversion that we didn't create.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/share/scripts/old-file
+
+ # Clean up a diversion we did create for a non-existent file.
+ dpkg-divert --remove --package scripts-diversions --rename \
+ --divert /usr/share/scripts/no-such-file.real \
+ /usr/share/scripts/no-such-file
+
+ # Regression test for diversions ending in numbers (Bug#534942)
+ dpkg-divert --remove --package scripts-diversions \
+ --divert /usr/share/scripts/file.1.real \
+ /usr/share/scripts/file.1 > /dev/null
+
+ # Clean up the diversion for a binary man page.
+ dpkg-divert --remove --package scripts-diversions \
+ --divert /usr/share/man/man1/foo.real.1.gz \
+ /usr/share/man/man1/foo.1.gz
+
+ # Clean up a local diversion.
+ dpkg-divert --local --remove --divert /usr/share/scripts/other-file.real \
+ /usr/share/scripts/other-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/preinst
new file mode 100644
index 0000000..b590f9d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/debian/preinst
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+
+if [ install = "$1" ]; then
+ # This is a correct diversion.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/some-file.real \
+ /usr/share/scripts/some-file
+
+ # This is broken -- can't use local.
+ dpkg-divert --local --add --divert /usr/share/scripts/other-file.real \
+ /usr/share/scripts/other-file
+
+ # This was broken until dpkg 1.16.0 (Wheezy), see #679132
+ dpkg-divert --add --divert /usr/share/scripts/another-file.real \
+ /usr/share/scripts/another-file
+
+ # This is also correct, but we're not going to clean it up. While we're
+ # at it, make sure we strip trailing redirections.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/orphan.real \
+ /usr/share/scripts/orphan > /dev/null
+
+ # The same one again, but with a different redirection.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/orphan.real \
+ /usr/share/scripts/orphan 2> /dev/null
+
+ # This is broken because the file doesn't exist.
+ dpkg-divert --add --package scripts-diversions --rename \
+ --divert /usr/share/scripts/no-such-file.real \
+ /usr/share/scripts/no-such-file
+
+ # Regression test for diversions ending in numbers (Bug#534942)
+ dpkg-divert --add --rename --package scripts-diversions \
+ --divert /usr/share/scripts/file.1.real \
+ /usr/share/scripts/file.1 > /dev/null
+
+ # We're allowed to divert a man page to install another man page in a
+ # different section but the same numeric section. (Bug#543781)
+ dpkg-divert --add --rename --package scripts-diversions \
+ --divert /usr/share/man/man1/foo.real.1.gz \
+ /usr/share/man/man1/foo.1.gz
+fi
+
+# This isn't a diversion we create anywhere, but we're allowed to do this in
+# preinst in case we're cleaning up after a previous version.
+if [ upgrade = "$1" ] && dpkg-divert --list '*old-file' >/dev/null ; then
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/share/scripts/old-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/fill-values
new file mode 100644
index 0000000..df30405
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-diversions
+Description: Tests of dpkg-divert checks
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/file.1 b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/file.1
new file mode 100644
index 0000000..a58ae6c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/file.1
@@ -0,0 +1 @@
+Some file ending in a number.
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo
new file mode 100755
index 0000000..adff45d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'Fake foo binary'
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo.1p b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo.1p
new file mode 100644
index 0000000..c3088fd
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/foo.1p
@@ -0,0 +1,3 @@
+.TH foo 1p
+.SH NAME
+foo \- a fake man page for a foo
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/orphan b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/orphan
new file mode 100644
index 0000000..934fd74
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/orphan
@@ -0,0 +1 @@
+Some file that we're going to divert and not clean up.
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/some-file b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/some-file
new file mode 100644
index 0000000..649e369
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/build-spec/orig/some-file
@@ -0,0 +1 @@
+Some random file that we're going to install after diverting.
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/desc b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/desc
new file mode 100644
index 0000000..bf8f64f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-diversions
+Check: maintainer-scripts/diversion
diff --git a/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/hints b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/hints
new file mode 100644
index 0000000..d8d2444
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/diversion/scripts-diversions/eval/hints
@@ -0,0 +1,8 @@
+scripts-diversions (binary): remove-of-unknown-diversion usr/share/scripts/old-file [postrm:12]
+scripts-diversions (binary): package-uses-local-diversion [preinst:12]
+scripts-diversions (binary): package-uses-local-diversion [postrm:31]
+scripts-diversions (binary): orphaned-diversion usr/share/scripts/orphan [preinst:27]
+scripts-diversions (binary): orphaned-diversion usr/share/scripts/another-file [preinst:16]
+scripts-diversions (binary): diversion-for-unknown-file usr/share/scripts/other-file [preinst:12]
+scripts-diversions (binary): diversion-for-unknown-file usr/share/scripts/no-such-file [preinst:32]
+scripts-diversions (binary): diversion-for-unknown-file usr/share/scripts/another-file [preinst:16]
diff --git a/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst
new file mode 100644
index 0000000..0c2e31c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+# Unconditional use of dpkg-statoverride --add
+dpkg-statoverride --update --add root crontab 2755 /usr/bin/crontab
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst
new file mode 100644
index 0000000..7c00d9c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+# Conditional use of dpkg-statoverride --add
+if ! dpkg-statoverride --list /usr/bin/crontab >/dev/null 2>&1
+then
+ dpkg-statoverride --update --add root crontab 2755 /usr/bin/crontab
+fi
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values
new file mode 100644
index 0000000..a2c2e15
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-unconditional-use-of-dpkg-statoverride
+Description: Test for maintscripts that call dpkg-statoverride without calling --list
diff --git a/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/desc b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/desc
new file mode 100644
index 0000000..2294d32
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-unconditional-use-of-dpkg-statoverride
+Check: maintainer-scripts/dpkg-statoverride
diff --git a/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/hints b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/hints
new file mode 100644
index 0000000..277f9c2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/dpkg-statoverride/scripts-unconditional-use-of-dpkg-statoverride/eval/hints
@@ -0,0 +1 @@
+scripts-unconditional-use-of-dpkg-statoverride (binary): unconditional-use-of-dpkg-statoverride [postinst:8]
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/config
new file mode 100644
index 0000000..29abeba
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/config
@@ -0,0 +1,3 @@
+#!/usr/bin/python
+
+# I use python, but that's not what I'm supposed to be allowed to use
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..de4161e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/config debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..1aed5d1
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: maintainer-scripts/empty
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..e7789b1
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1 @@
+maintainer-scripts (binary): maintainer-script-empty [config]
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..ef39375
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: python3 (>= 3.1), python3 (<< 3.2), dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..dc6b7d5
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,111 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 py3.Xfoo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3.Xfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 py3foo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3foo $(tmp)/usr/share/doc/scripts/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3.Xfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3.Xfoo
new file mode 100755
index 0000000..7f105e6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3.Xfoo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3.7
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3foo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3foo
new file mode 100755
index 0000000..02b0444
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/py3foo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/pre-build b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/desc b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/desc
new file mode 100644
index 0000000..b65a18e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: maintainer-scripts/empty
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/hints b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/hints
new file mode 100644
index 0000000..66ad6ff
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): maintainer-script-empty [preinst]
diff --git a/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/post-test b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postinst
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postinst
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postrm
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/postrm
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/preinst
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/preinst
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/prerm
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/debian/prerm
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/fill-values
new file mode 100644
index 0000000..bcdea9d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-script-empty
+Description: Test for empty maintainer scripts
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/desc b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/desc
new file mode 100644
index 0000000..c4bfcc2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-maintainer-script-empty
+Check: maintainer-scripts/empty
diff --git a/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/hints b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/hints
new file mode 100644
index 0000000..30b3a5f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/empty/scripts-maintainer-script-empty/eval/hints
@@ -0,0 +1,4 @@
+scripts-maintainer-script-empty (binary): maintainer-script-empty [prerm]
+scripts-maintainer-script-empty (binary): maintainer-script-empty [preinst]
+scripts-maintainer-script-empty (binary): maintainer-script-empty [postrm]
+scripts-maintainer-script-empty (binary): maintainer-script-empty [postinst]
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/control.in b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/control.in
new file mode 100644
index 0000000..55acbe7
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/control.in
@@ -0,0 +1,63 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-paths
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (paths)
+ Interpreters with bad paths.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-forbidden
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (forbidden)
+ Forbidden control interpreters.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-unknown
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (unknown)
+ Unknown control interpreters.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-python
+Architecture: [% $package_architecture %]
+Depends: python, ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Python)
+ Python control interpreters with depends.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-prepython
+Architecture: [% $package_architecture %]
+Pre-Depends: python
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Python preinst)
+ Python control interpreters with pre-depends.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/POTFILES.in b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..5da079f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] scripts-control-interpreters-forbidden.templates
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/de.po b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/de.po
new file mode 100644
index 0000000..4ab3a8f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/de.po
@@ -0,0 +1,13 @@
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-28 14:30-0800\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. description
+#: ../scripts-control-interpreters-forbidden.templates:1001
+msgid "Enter something:"
+msgstr "Not really a translation:"
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/templates.pot b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..6b4af20
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/po/templates.pot
@@ -0,0 +1,23 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-28 14:30-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. description
+#: ../scripts-control-interpreters-forbidden.templates:1001
+msgid "Enter something:"
+msgstr ""
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates
new file mode 100644
index 0000000..05d97b3
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates
@@ -0,0 +1,3 @@
+Template: scripts-control-interpreters-forbidden/test
+Type: string
+_description: Enter something:
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst
new file mode 100644
index 0000000..39cf003
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst
@@ -0,0 +1,5 @@
+#!/usr/bin/bash
+set -e
+run something
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst
new file mode 100644
index 0000000..542236f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst
@@ -0,0 +1,5 @@
+#!/usr/local/bin/bash
+set -e
+run something
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm
new file mode 100644
index 0000000..b2c6828
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm
@@ -0,0 +1,6 @@
+#!/bin/python
+import sys
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst
new file mode 100644
index 0000000..a5ded5a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst
@@ -0,0 +1,6 @@
+#!/usr/bin/unknown
+do the unknown thing
+shellicate this stuff (
+#DEBHELPER#
+) yay!
+exit happily
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/fill-values
new file mode 100644
index 0000000..99b7449
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-control-interpreters
+Description: Check maintainer and config script interpreters
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/desc b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/desc
new file mode 100644
index 0000000..5dfc2c3
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/desc
@@ -0,0 +1,3 @@
+Testname: scripts-control-interpreters
+See-Also: Debian Bug#508307
+Check: maintainer-scripts/generated
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/hints b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/hints
new file mode 100644
index 0000000..daa8447
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/hints
@@ -0,0 +1 @@
+scripts-control-interpreters-forbidden (binary): debhelper-autoscript-in-maintainer-scripts dh_installdebconf/TOOL-VERSION
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/post-test b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/post-test
new file mode 100644
index 0000000..6205e14
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-control-interpreters/eval/post-test
@@ -0,0 +1 @@
+s,/.*,/TOOL-VERSION,
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/desc b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..53a4676
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+See-Also: Debian Bug#532984
+Check: maintainer-scripts/generated
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/hints b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..e5cee75
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/hints
@@ -0,0 +1,2 @@
+scripts-maintainer-general (binary): debhelper-autoscript-in-maintainer-scripts dh_installdeb/TOOL-VERSION
+scripts-maintainer-general (binary): debhelper-autoscript-in-maintainer-scripts dh_dummy/TOOL-VERSION
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/post-test b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/post-test
new file mode 100644
index 0000000..6205e14
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-general/eval/post-test
@@ -0,0 +1 @@
+s,/.*,/TOOL-VERSION,
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/debian/postinst
new file mode 100644
index 0000000..1004a3a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/debian/postinst
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+# Automatically added by dh_fake_lintian_tool
+if [ "$1" = configure ]; then
+ echo do something ...
+fi
+# End automatically added section
+
+# Automatically added by dh_fake_lintian_tool_versioned/1.0
+if [ "$1" = configure ]; then
+ echo do something ...
+fi
+# End automatically added section
+
+# dh_python tools adds a ":" after for some reason. Ignore it
+# Automatically added by dh_fake_python3:
+if [ "$1" = configure ]; then
+ echo do something else ...
+fi
+# End automatically added section
+
+# Again, now pretending it has a version
+# Automatically added by dh_fake_python3_versioned/1.0:
+if [ "$1" = configure ]; then
+ echo do something else ...
+fi
+# End automatically added section
+
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/fill-values
new file mode 100644
index 0000000..53ff431
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-script-classification
+Description: Test for classification tags in maintscripts
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/desc b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/desc
new file mode 100644
index 0000000..bd8e63d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-maintainer-script-classification
+Check: maintainer-scripts/generated
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/hints b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/hints
new file mode 100644
index 0000000..b2d78f7
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/hints
@@ -0,0 +1,4 @@
+scripts-maintainer-script-classification (binary): debhelper-autoscript-in-maintainer-scripts dh_fake_python3_versioned/TOOL-VERSION
+scripts-maintainer-script-classification (binary): debhelper-autoscript-in-maintainer-scripts dh_fake_python3
+scripts-maintainer-script-classification (binary): debhelper-autoscript-in-maintainer-scripts dh_fake_lintian_tool_versioned/TOOL-VERSION
+scripts-maintainer-script-classification (binary): debhelper-autoscript-in-maintainer-scripts dh_fake_lintian_tool
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/post-test b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/post-test
new file mode 100644
index 0000000..6205e14
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-maintainer-script-classification/eval/post-test
@@ -0,0 +1 @@
+s,/.*,/TOOL-VERSION,
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install
new file mode 100644
index 0000000..4690206
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install
@@ -0,0 +1 @@
+foo.afm usr/share/fonts/X11/Type1
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst
new file mode 100644
index 0000000..ea5884d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ update-fonts-dir manual
+ update-fonts-scale manual
+fi
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values
new file mode 100644
index 0000000..37d3c47
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-update-fonts-unrel
+Description: Check missing calls to update-fonts (false-positives)
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/desc b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/desc
new file mode 100644
index 0000000..dac6811
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-update-fonts-unrel
+Check: maintainer-scripts/generated
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/hints b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/hints
new file mode 100644
index 0000000..7d1fdc6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/hints
@@ -0,0 +1 @@
+scripts-missing-call-to-update-fonts-unrel (binary): debhelper-autoscript-in-maintainer-scripts dh_installxfonts/TOOL-VERSION
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/post-test b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/post-test
new file mode 100644
index 0000000..6205e14
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts-unrel/eval/post-test
@@ -0,0 +1 @@
+s,/.*,/TOOL-VERSION,
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/install b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/install
new file mode 100644
index 0000000..4690206
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/install
@@ -0,0 +1 @@
+foo.afm usr/share/fonts/X11/Type1
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/postinst
new file mode 100644
index 0000000..72a8dfb
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ echo "Deliberately not including DEBHELPER snippet."
+fi
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/fill-values
new file mode 100644
index 0000000..4b17473
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-update-fonts
+Description: Check missing calls to update-fonts
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/desc b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/desc
new file mode 100644
index 0000000..409b93d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-update-fonts
+Check: maintainer-scripts/generated
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/hints b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/hints
new file mode 100644
index 0000000..9fbef2c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/hints
@@ -0,0 +1 @@
+scripts-missing-call-to-update-fonts (binary): debhelper-autoscript-in-maintainer-scripts dh_installxfonts/TOOL-VERSION
diff --git a/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/post-test b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/post-test
new file mode 100644
index 0000000..6205e14
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/generated/scripts-missing-call-to-update-fonts/eval/post-test
@@ -0,0 +1 @@
+s,/.*,/TOOL-VERSION,
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/desc b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..64058f6
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+Check: maintainer-scripts/helper/dpkg
+See-Also:
+ Bug#532984
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/hints b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..be09dc2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-maintainer-general/eval/hints
@@ -0,0 +1,2 @@
+scripts-maintainer-general (binary): missing-call-to-dpkg-maintscript-helper symlink_to_dir [preinst]
+scripts-maintainer-general (binary): missing-call-to-dpkg-maintscript-helper symlink_to_dir [postrm]
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst
new file mode 100644
index 0000000..fb6d516
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+dpkg-maintscript-helper symlink_to_dir /path/name /old/target 1.0-1 scripts-missing-call-to-dpkg-maintscript-helper
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst
new file mode 100644
index 0000000..fb6d516
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+dpkg-maintscript-helper symlink_to_dir /path/name /old/target 1.0-1 scripts-missing-call-to-dpkg-maintscript-helper
+
+exit 0
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values
new file mode 100644
index 0000000..cbe62e2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-dpkg-maintscript-helper
+Description: Test for packages that miss calls to dpkg-maintscript-helper(1)
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc
new file mode 100644
index 0000000..6864600
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-dpkg-maintscript-helper
+Check: maintainer-scripts/helper/dpkg
diff --git a/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints
new file mode 100644
index 0000000..dca6cfb
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/helper/dpkg/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints
@@ -0,0 +1 @@
+scripts-missing-call-to-dpkg-maintscript-helper (binary): missing-call-to-dpkg-maintscript-helper symlink_to_dir [postrm]
diff --git a/t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/debian/postinst
new file mode 100644
index 0000000..0e052fe
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+killall fish
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/fill-values
new file mode 100644
index 0000000..7d78e3c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-killall
+Description: Test for killall usage in maint script
diff --git a/t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/desc b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/desc
new file mode 100644
index 0000000..2596c48
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-killall
+Check: maintainer-scripts/killall
diff --git a/t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/hints b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/hints
new file mode 100644
index 0000000..7b1c62e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/killall/scripts-killall/eval/hints
@@ -0,0 +1 @@
+scripts-killall (binary): killall-is-dangerous [postinst:5]
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/changelog.in b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f5e308e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+debconf ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial Release
+ * Changelog line with exactly 80 characters which tests the line-too-long tag.
+
+ -- Lintian Maintainers <debian-lint-maint@debian.org> Wed, 3 May 2006 18:07:19 -0500
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/compat.in b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/control b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/control
new file mode 100644
index 0000000..bf9f4e9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/control
@@ -0,0 +1,52 @@
+Source: debconf
+Section: utils
+Priority: optional
+Build-Depends: debhelper (>= 4), dpatch
+Maintainer: Lintian Maintainers <debian-lint-maint@debian.org>
+Standards-Version: 3.7.2
+
+Package: debconf-test
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (dummy)
+
+Package: debconf-test-noscripts
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (noscripts)
+ Package missing postinst/postrm/config.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-preinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (preinst)
+ Package uses debconf only in preinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-test-postinst
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Test package for the debconf checks of lintian (postinst)
+ Package uses debconf only in postinst.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: debconf-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+XB-Installer-Menu-Item: 100
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Test udeb package for the debconf checks of lintian (dummy)
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/copyright b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/copyright
new file mode 100644
index 0000000..84843ee
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+Copyright (C) 2004 Frank Lichtenheld <djpig@debian.org>
+
+Test for really old FSF address:
+
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Test for a dh-make boilerplate:
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
new file mode 100644
index 0000000..93f8071
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-noscripts.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
new file mode 100644
index 0000000..56ab871
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.templates b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-postinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
new file mode 100644
index 0000000..cbf5e3b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+ db_purge
+fi
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
new file mode 100644
index 0000000..bf6f074
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+# Obsolete name for the confmodule
+. /usr/share/debconf/confmodule.sh
+
+. /usr/share/debconf/confmodule
+
+db_input medium debconf/test
+
+#DEBHELPER#
+
+true
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.templates b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
new file mode 100644
index 0000000..2a2a8ab
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test-preinst.templates
@@ -0,0 +1,3 @@
+Template: debconf/test
+Type: text
+_description: Enter something:
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.config b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.config
new file mode 100644
index 0000000..9e32d06
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.config
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_settitle "Funky lintian test"
+
+# Bad priorities.
+db_text LOW debconf/test
+db_input normal debconf/test
+
+# Valid priorities.
+db_text \
+high debconf/test
+foo=medium
+db_input $foo debconf/test
+db_input "$foo" debconf/test
+db_input 'medium' debconf/test
+
+# debconf/transtring should not be flagged as unused
+# (it's aliased to debconf/alias, which is used)
+db_register debconf/transtring debconf/alias
+db_input medium debconf/alias
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.postinst b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.postinst
new file mode 100644
index 0000000..b387037
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+# Not supposed to do this here.
+db_input medium debconf/test
+
+true
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates
new file mode 100644
index 0000000..811bb6c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates
@@ -0,0 +1,101 @@
+Template: debconf/test
+Type: text
+_description: Foo bar (1)
+
+Template: debconf/testmulti
+Type: multiselect
+__Choices: foo, bar, boo
+_Description: test comma usages in choices fields
+
+Template: debconf/testmulti-escape
+Type: multiselect
+_Choices: foo\, bar, boo
+_Description: test escaped comma usages in choices fields:
+
+Template: debconf/testboolean
+Type: boolean
+_Description: Enter yes or no:
+ Do you want to answer this question?
+
+Template: debconf/teststring
+Type: string
+_Description: This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+ This template goes on and on.
+
+Template: debconf/testnote
+Type: note
+Description: This should be a title and not a really long sentence that ends in a regular period.
+
+Template: debconf/1st-person
+Type: select
+__Choices: one, two
+_Description: Select one of these:
+ I am a stupid test of first-person syntax that tells you to select yes
+ even though yes isn't an option in this prompt.
+
+Template: debconf/internal
+Type: boolean
+Description: For internal use only
+ We are testing that style checks are not applied to templates that are
+ marked as internal.
+
+Template: debconf/no-description
+Type: string
+
+Template: debconf/translate
+Type: boolean
+_Default: false
+_Description: Should this really be translated?
+
+Template: debconf/transtring
+Type: string
+_Default: 1
+_Description: Count of templates:
+ The number of useless numbers that a translator would have to translate
+ for this template.
+
+Template: debconf/language
+__Choices: English, Spanish, German, French
+# This is the default choice. Translators should put their own language,
+# if available, here instead, but the value MUST be the English version
+# of the value for the package scripts to work properly.
+_Default: English[ translators, see the comment in the PO files]
+_Description: The default language, an example of a default that should
+ be translated.
+
+Template: debconf/error
+Type: error
+_Description: An error occurred
+ This is a sample Debconf error template.
+
+Template: debconf/should-be-boolean
+Type: select
+__Choices: yes, no
+_Description: Choose:
+ Pick yes or no.
+
+Template: debconf/should-be-no-longer-a-problem
+Type: boolean
+_Description: Decide, lintian
+ Using "no longer" should no longer be detected as
+ making-assumptions-about-interfaces-in-templates by lintian.
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.de b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.de
new file mode 100644
index 0000000..f9ea121
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.de
@@ -0,0 +1,3 @@
+Template: debconf/testmulti
+Type: multiselect
+Choices: foo, bar\, boo, boo
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.in b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-test.templates.in
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.postinst b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.postinst
new file mode 100644
index 0000000..4ce41f0
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+ldconfig
+
+true
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.templates b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.templates
new file mode 100644
index 0000000..5d7cf5a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/debconf-udeb.templates
@@ -0,0 +1,3 @@
+Template: debian-installer/debconf-udeb/title
+Type: text
+_description: This is just a test
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/POTFILES.in b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..d0c82f0
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] debconf-test.templates
+[type: gettext/rfc822deb] debconf-udeb.templates
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/de.po b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/de.po
new file mode 100644
index 0000000..86c5796
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/de.po
@@ -0,0 +1,66 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2004-12-06 01:01+0100\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:11
+msgid "foo\\, bar, boo"
+msgstr "foo, bar, boo"
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "Dies ist nur ein Test"
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/fr.po b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/fr.po
new file mode 100644
index 0000000..c74deb2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/fr.po
@@ -0,0 +1,60 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"Last-Translator: Frank Lichtenheld <djpig@debian.org>\n"
+"Language-Team: debian-l10n-german@l.d.o\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr "foo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr "bar, boo"
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr "boo"
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr "
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/lang.po b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/lang.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/lang.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/nds.po b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/nds.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/nds.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/output b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/output
new file mode 100644
index 0000000..c3df1a5
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/output
@@ -0,0 +1 @@
+2 utf8
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/pt_BR.po b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/pt_BR.po
new file mode 100644
index 0000000..7ac498a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/pt_BR.po
@@ -0,0 +1,15 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: debconf-test 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: 2005-10-13 15:03+0200\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/sample-file.po b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/sample-file.po
new file mode 100644
index 0000000..8dcc0ff
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/sample-file.po
@@ -0,0 +1 @@
+This is some file that isn't actually a valid .po file.
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/templates.pot b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..914c77f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/po/templates.pot
@@ -0,0 +1,61 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-12-06 00:51+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. description
+#: ../debconf-test.templates:3
+msgid "Foo bar (2)"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "foo"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "bar"
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../debconf-test.templates:7
+msgid "boo"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../debconf-test.templates:8
+msgid "test comma usages in choices fields"
+msgstr ""
+
+#. Type: text
+#. description
+#: ../debconf-udeb.templates:3
+msgid "This is just a test"
+msgstr ""
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pycompat b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pyversions b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pyversions
new file mode 100644
index 0000000..6f290b0
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/pyversions
@@ -0,0 +1 @@
+>= 2.7
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/rules
new file mode 100755
index 0000000..933901a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+deb_dir = debian/debconf
+udeb_dir = debian/debconf-udeb
+build_dirs = $(deb_dir) $(udeb_dir)
+
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
+ dh_testdir
+ touch build
+
+build: build-indep build-arch
+
+clean:
+ dh_testdir
+ dh_testroot
+ -rm -f build
+
+ dh_clean
+
+binary-indep: build
+# There are no architecture-independent files to be uploaded
+# generated by this package. If there were any they would be
+# made here.
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs -a
+
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installdebconf -pdebconf-test
+ dh_installdebconf -pdebconf-test-noscripts --noscripts
+ dh_installdebconf -pdebconf-test-preinst --noscripts
+ dh_installdebconf -pdebconf-test-postinst --noscripts
+ dh_installdebconf -pdebconf-udeb
+
+
+
+
+ dh_compress -a
+ dh_fixperms -a
+
+# The shlibs stuff doesn't matter here so do it in a weird order to
+# test warnings.
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_makeshlibs -a
+ dh_gencontrol -a
+ dh_md5sums
+ dh_builddeb -a
+ dh_makeshlibs -a
+
+# Below here is fairly generic really
+
+binary: binary-indep binary-arch
+
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/fill-values
new file mode 100644
index 0000000..186615f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: legacy-debconf
+Source: debconf
+Version: 1~rc1
+Description: Legacy test "debconf"
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/desc b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/desc
new file mode 100644
index 0000000..511d56c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-debconf
+Check: maintainer-scripts/ldconfig
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/hints b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/hints
new file mode 100644
index 0000000..4f765cb
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/hints
@@ -0,0 +1 @@
+debconf-udeb (udeb): udeb-postinst-calls-ldconfig [postinst]
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/post-test b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-debconf/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..4b4c6eb
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: maintainer-scripts/ldconfig
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..e02cca8
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1 @@
+maintainer-scripts (binary): maintscript-calls-ldconfig [postrm]
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install
new file mode 100644
index 0000000..fe6951d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.install
@@ -0,0 +1,2 @@
+app usr/lib/app
+
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm
new file mode 100755
index 0000000..eaeb28d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.postrm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = remove ] ; then ldconfig ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers
new file mode 100644
index 0000000..dd86603
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/app.triggers
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..9960ee9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/control.in
@@ -0,0 +1,47 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libfoo1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (missing ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for missing ldconfig in scripts.
+
+Package: libfish1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (preinst/rm ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for ldconfig in preinst/prerm scripts.
+
+Package: libuns1
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (unsafe ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for unsafe ldconfig usage scripts.
+
+Package: app
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (useless ldc)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Checks for useless ldconfig usage in scripts.
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install
new file mode 100644
index 0000000..b1c4ec9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.install
@@ -0,0 +1 @@
+usr/lib/libfish*
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.preinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm
new file mode 100755
index 0000000..3e67b7e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.prerm
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols
new file mode 100644
index 0000000..2c5a075
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfish1.symbols
@@ -0,0 +1,3 @@
+libfish.so.1 libfish1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install
new file mode 100644
index 0000000..f3a3a05
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.install
@@ -0,0 +1 @@
+usr/lib/libfoo*
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst
new file mode 100755
index 0000000..2615bf9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+# No ldconfig
+if false ; then true ; fi
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm
new file mode 100755
index 0000000..9b2f636
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+if false ; then true ; fi
+
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols
new file mode 100644
index 0000000..a1f052b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libfoo1.symbols
@@ -0,0 +1,3 @@
+libfoo.so.1 libfoo1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install
new file mode 100644
index 0000000..b91d5ff
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.install
@@ -0,0 +1 @@
+usr/lib/libuns*
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm
new file mode 100755
index 0000000..acc5d15
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+ldconfig
+
+
+# -- we will remove all debhelper stuff later.
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols
new file mode 100644
index 0000000..d91149f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/libuns1.symbols
@@ -0,0 +1,3 @@
+libuns.so.1 libuns1 #MINVER#
+ e@Base 1.0
+ energy@Base 0.9
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..b1c71a9
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/debian/rules
@@ -0,0 +1,21 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ for P in $$(dh_listpackages) ; do \
+ for S in postinst postrm preinst prerm ; do \
+ if [ -f debian/$${P}.$${S} ] ; then \
+ cp -af debian/$${P}.$${S} debian/$${P}/DEBIAN/$${S} ; \
+ chmod 0755 debian/$${P}/DEBIAN/$${S} ; \
+ sed -i '/#DEBHELPER#/ d' debian/$${P}/DEBIAN/$${S} ; \
+ fi ; \
+ done ; \
+ done
+ # Work around debhelper adding triggers instead of explicit
+ # ldconfig calls
+ rm -f debian/libfoo1/DEBIAN/triggers
+ dh_builddeb
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values
new file mode 100644
index 0000000..2159596
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: shared-libs-ldconfig-scripts
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Test checks related to ldconfig in scripts
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile
new file mode 100644
index 0000000..4d3c286
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/Makefile
@@ -0,0 +1,22 @@
+CC=gcc
+CFLAGS+= -fPIC
+
+SONAMES:= libfoo.so.1 libfish.so.1 libuns.so.1
+LIBFILES:= $(patsubst %,%.0.1, $(SONAMES))
+
+all: $(LIBFILES)
+
+$(LIBFILES): code.o
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lm
+
+clean:
+ rm -f *.a *.o *.so*
+
+install: all
+ install -m 0755 -d $(DESTDIR)/usr/lib
+ install -m 0644 *.so* $(DESTDIR)/usr/lib
+ for FILE in $(SONAMES) ; do \
+ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \
+ done
+
+.PHONY: install clean
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app
new file mode 100755
index 0000000..04f1961
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/app
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo Hello World
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c
new file mode 100644
index 0000000..0ed08e0
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/build-spec/orig/code.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <math.h>
+
+double e(void (*f)(char *)){
+ char tmp[10];
+ double x;
+ f(tmp);
+ x = atof(tmp);
+ return exp(x);
+}
+
+double energy(double mass){
+ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass;
+}
+
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/desc b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/desc
new file mode 100644
index 0000000..d160b7b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: shared-libs-ldconfig-scripts
+Check: maintainer-scripts/ldconfig
diff --git a/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/hints b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/hints
new file mode 100644
index 0000000..bd709fa
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/ldconfig/shared-libs-ldconfig-scripts/eval/hints
@@ -0,0 +1,5 @@
+libuns1 (binary): maintscript-calls-ldconfig [postrm]
+libfish1 (binary): maintscript-calls-ldconfig [prerm]
+libfish1 (binary): maintscript-calls-ldconfig [preinst]
+app (binary): maintscript-calls-ldconfig [postrm]
+app (binary): maintscript-calls-ldconfig [postinst]
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/desc b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..1f15359
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+Check: maintainer-scripts/mknod
+See-Also:
+ Bug#532984
diff --git a/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/hints b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..0c60c78
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/mknod/scripts-maintainer-general/eval/hints
@@ -0,0 +1 @@
+scripts-maintainer-general (binary): mknod-in-maintainer-script [postinst:125]
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/bootmisc.sh b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/bootmisc.sh
new file mode 100755
index 0000000..5c73683
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/bootmisc.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: bootmisc
+# Required-Start: $remote_fs
+# Required-Stop:
+# Should-Start: udev
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Miscellaneous things to be done during bootup.
+# Description: Some cleanup. Note, it need to run after mountnfs-bootclean.sh.
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+[ "$DELAYLOGIN" ] || DELAYLOGIN=yes
+. /lib/init/vars.sh
+
+do_start () {
+ #
+ # If login delaying is enabled then create the flag file
+ # which prevents logins before startup is complete
+ #
+ case "$DELAYLOGIN" in
+ Y*|y*)
+ echo "System bootup in progress - please wait" > /var/lib/initscripts/nologin
+ ;;
+ esac
+
+ # Create /var/run/utmp so we can login.
+ : > /var/run/utmp
+ if grep -q ^utmp: /etc/group
+ then
+ chmod 664 /var/run/utmp
+ chgrp utmp /var/run/utmp
+ fi
+
+ # Remove bootclean's flag files.
+ # Don't run bootclean again after this!
+ rm -f /tmp/.clean /run/.clean /run/lock/.clean
+ rm -f /tmp/.tmpfs /run/.tmpfs /run/lock/.tmpfs
+}
+
+case "$1" in
+ start|"")
+ do_start
+ ;;
+ restart|reload|force-reload)
+ echo "Error: argument '$1' not supported" >&2
+ exit 3
+ ;;
+ stop|status)
+ # No-op
+ ;;
+ *)
+ echo "Usage: bootmisc.sh [start|stop]" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/init b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/init
new file mode 100644
index 0000000..96f6ed2
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/init
@@ -0,0 +1,153 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: systemd-general
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: S 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/install b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/install
new file mode 100644
index 0000000..eb4680b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/install
@@ -0,0 +1,3 @@
+debian/systemd-general.test.service etc/systemd/system/
+debian/systemd-general.test.service usr/lib/systemd/system/
+debian/test.conf etc/tmpfiles.d/
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/links b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/links
new file mode 100644
index 0000000..c022cff
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/links
@@ -0,0 +1 @@
+/dev/null /lib/systemd/system/masked.service
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/postrm
new file mode 100644
index 0000000..6e5813a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/postrm
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "purge" ] && which systemctl >/dev/null 2>&1; then
+ systemctl || true
+fi
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/rules
new file mode 100644
index 0000000..68b3e30
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/rules
@@ -0,0 +1,30 @@
+#!/usr/bin/make -f
+
+ETC_DIR=debian/$(shell dh_listpackages)/etc/
+INITD_DIR=$(ETC_DIR)/init.d
+SYSD_DIR=$(ETC_DIR)/systemd/system
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ install -m 0755 -d $(INITD_DIR) $(SYSD_DIR)
+ mkfifo $(INITD_DIR)/fifo-pipe-as-init
+ mkfifo $(SYSD_DIR)/fifo-pipe-as-init.service
+ install -m 0755 debian/bootmisc.sh $(INITD_DIR)
+ install -m 0755 debian/systemd-general.masked.init $(INITD_DIR)/masked
+ touch $(INITD_DIR)/README
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod -x $(INITD_DIR)/README
+
+override_dh_installinit:
+ dh_installinit
+ dh_installinit --name systemd-aliasd
+ dh_installinit --name sourced.sh
+
+override_dh_installsystemd:
+ dh_installsystemd
+ dh_installsystemd --name sourced
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.masked.init b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.masked.init
new file mode 100644
index 0000000..b884a82
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.masked.init
@@ -0,0 +1,22 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+ set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides: masked
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d. This example start a
+# single forking daemon capable of writing a pid
+# file. To get other behaviors, implement
+# do_start(), do_stop() or other functions to
+# override the defaults in /lib/init/init-d-script.
+### END INIT INFO
+
+DESC="Description of the service"
+DAEMON=/usr/sbin/daemonexecutablename
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.service b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.service
new file mode 100644
index 0000000..f3775af
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.service
@@ -0,0 +1,9 @@
+[Unit]
+After=network.target
+Documentation=man:sourced(1)
+
+[Service]
+ExecStart=/usr/bin/test
+
+[Install]
+WantedBy=sleep.target
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.sh.init b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.sh.init
new file mode 100644
index 0000000..6657c99
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.sourced.sh.init
@@ -0,0 +1,22 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+ set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides: sourced
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d. This example start a
+# single forking daemon capable of writing a pid
+# file. To get other behaviors, implement
+# do_start(), do_stop() or other functions to
+# override the defaults in /lib/init/init-d-script.
+### END INIT INFO
+
+DESC="Description of the service"
+DAEMON=/usr/sbin/daemonexecutablename
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init
new file mode 100644
index 0000000..95e791c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init
@@ -0,0 +1,152 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: systemd-aliasd
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+. /lib/lsb/init-functionsh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.test.service b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.test.service
new file mode 100644
index 0000000..a456a3d
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/systemd-general.test.service
@@ -0,0 +1,13 @@
+[Unit]
+After=network.target \
+syslog.target
+BindTo=foo
+
+[Service]
+ExecStartPre = /bin/true
+ExecStart=/usr/bin/test
+
+[Install]
+WantedBy=multi-user.target unusual.target
+Alias=systemd-aliasd.service
+Alias=anothertest
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/test.conf b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/test.conf
new file mode 100644
index 0000000..b0c4604
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/debian/test.conf
@@ -0,0 +1,2 @@
+# See tmpfiles.d(5) for details
+d /var/run/bacula 2775 bacula bacula -
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/fill-values
new file mode 100644
index 0000000..eee4826
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-general
+Description: General systemd tests
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/desc b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/desc
new file mode 100644
index 0000000..ff87425
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: systemd-general
+Check: maintainer-scripts/systemctl
diff --git a/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/hints b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/hints
new file mode 100644
index 0000000..ad37c1c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/systemctl/systemd-general/eval/hints
@@ -0,0 +1 @@
+systemd-general (binary): maintainer-script-calls-systemctl [postrm:6]
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/config
new file mode 100644
index 0000000..29abeba
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/config
@@ -0,0 +1,3 @@
+#!/usr/bin/python
+
+# I use python, but that's not what I'm supposed to be allowed to use
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..de4161e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/config debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..047d119
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: maintainer-scripts/temporary-files
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..7899e4f
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,8 @@
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /var/tmp [postinst:53]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /var/tmp [postinst:43]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postrm:44]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postrm:40]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:52]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:51]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:44]
+maintainer-scripts (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:42]
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/desc b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..9f14684
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+Check: maintainer-scripts/temporary-files
+See-Also:
+ Bug#532984
diff --git a/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/hints b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..4796720
--- /dev/null
+++ b/t/recipes/checks/maintainer-scripts/temporary-files/scripts-maintainer-general/eval/hints
@@ -0,0 +1,6 @@
+scripts-maintainer-general (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /var/tmp [postinst:28]
+scripts-maintainer-general (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /var/tmp [postinst:19]
+scripts-maintainer-general (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:27]
+scripts-maintainer-general (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:26]
+scripts-maintainer-general (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:20]
+scripts-maintainer-general (binary): possibly-insecure-handling-of-tmp-files-in-maintainer-script /tmp [postinst:18]
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/control b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/templates b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/md5sums/legacy-binary/eval/desc b/t/recipes/checks/md5sums/legacy-binary/eval/desc
new file mode 100644
index 0000000..67d15b3
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-binary/eval/hints b/t/recipes/checks/md5sums/legacy-binary/eval/hints
new file mode 100644
index 0000000..351b423
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/legacy-binary/eval/post-test b/t/recipes/checks/md5sums/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/README.Debian b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/README.Debian
new file mode 100644
index 0000000..e289bfb
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a package to test lintian's handling of files in /etc.
+Also, there's a random mention of /usr/doc here to prompt a warning.
+But /usr/documentation doesn't.
+
+ -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/changelog.in
new file mode 100644
index 0000000..00cdc77
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+etcfiles ([% $version %]) [% $distribution %]; urgency=low
+
+ * Acknowledge NMU (Closes: #123456).
+ * initial setup
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700
+
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles
new file mode 100644
index 0000000..76032b7
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles
@@ -0,0 +1,5 @@
+/etc/proper
+/var/lib/foo
+/etc/cron.daily/cronfile-normal
+/etc/cron.daily/.cronfile-begins-with-fullstop
+/etc/cron.daily/cronfile-contains.fullstop
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles.only b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles.only
new file mode 100644
index 0000000..a4b3895
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/conffiles.only
@@ -0,0 +1,2 @@
+/etc/etcfiles/foo
+/etc/etcfiles/bar
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/control b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/control
new file mode 100644
index 0000000..f3dbda7
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/control
@@ -0,0 +1,20 @@
+Source: etcfiles
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.5.0
+
+Package: etcfiles
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: test handling of files in /etc
+ Regression test for lintian's handling of files in /etc.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: only-etcfiles
+Architecture: all
+Depends: etcfiles (= ${source:Version})
+Description: test handling of conffile-only package
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/rules
new file mode 100755
index 0000000..97ff09f
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+tmponly=debian/only-etcfiles
+
+clean:
+ rm -f debian/files debian/substvars
+ rm -rf debian/tmp
+ rm -rf debian/only-etcfiles
+
+build:
+build-arch:
+build-indep:
+binary-indep:
+ install -d $(tmp)/etc
+ install -m 644 proper $(tmp)/etc
+ install -m 644 improper $(tmp)/etc
+ mkdir $(tmp)/etc/cron.daily
+ touch $(tmp)/etc/cron.daily/cronfile-normal
+ touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop
+ touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop
+ ln $(tmp)/etc/improper $(tmp)/etc/improper-link
+ install -d $(tmp)/usr/share/doc/etcfiles
+ install -d $(tmp)/var/lib
+ install -m 644 proper $(tmp)/var/lib/foo
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles
+ #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \
+ > debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '05c72cacce994208128b7d081116b04a ./etc/proper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce etc/improper' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo 'this is a malformed line' \
+ >> debian/tmp/DEBIAN/md5sums
+ echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \
+ >> debian/tmp/DEBIAN/md5sums
+
+ install -d $(tmponly)/etc/etcfiles
+ touch $(tmponly)/etc/etcfiles/foo
+ touch $(tmponly)/etc/etcfiles/bar
+ install -d $(tmponly)/usr/share/doc
+ cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles
+ install -d $(tmponly)/DEBIAN
+ install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles
+
+ dpkg-gencontrol -isp -petcfiles
+ dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly)
+ dpkg --build $(tmp) ..
+ dpkg --build $(tmponly) ..
+
+binary: binary-indep
+
+.PHONY: binary-indep binary clean
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/fill-values
new file mode 100644
index 0000000..86deb10
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-etcfiles
+Source: etcfiles
+Version: 1
+Description: Legacy test "etcfiles"
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/improper b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/improper
new file mode 100644
index 0000000..23656f4
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/improper
@@ -0,0 +1,2 @@
+[config]
+ var = value \ No newline at end of file
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/proper b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/proper
new file mode 100644
index 0000000..f3dc68b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/build-spec/orig/proper
@@ -0,0 +1,2 @@
+# i am a config file
+foo = var \ No newline at end of file
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/eval/desc b/t/recipes/checks/md5sums/legacy-etcfiles/eval/desc
new file mode 100644
index 0000000..bc7858c
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-etcfiles
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/eval/hints b/t/recipes/checks/md5sums/legacy-etcfiles/eval/hints
new file mode 100644
index 0000000..44d34f0
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/eval/hints
@@ -0,0 +1,5 @@
+etcfiles (binary): md5sums-lists-nonexistent-file usr/bin/foo [md5sums]
+etcfiles (binary): md5sum-mismatch etc/improper [md5sums]
+etcfiles (binary): malformed-md5sums-control-file Odd text: this is a malformed line [md5sums]
+etcfiles (binary): file-missing-in-md5sums usr/share/doc/etcfiles/changelog [md5sums]
+etcfiles (binary): file-missing-in-md5sums etc/improper-link [md5sums]
diff --git a/t/recipes/checks/md5sums/legacy-etcfiles/eval/post-test b/t/recipes/checks/md5sums/legacy-etcfiles/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-etcfiles/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/control b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/md5sums/legacy-filenames/eval/desc b/t/recipes/checks/md5sums/legacy-filenames/eval/desc
new file mode 100644
index 0000000..b362609
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-filenames/eval/hints b/t/recipes/checks/md5sums/legacy-filenames/eval/hints
new file mode 100644
index 0000000..a9a9175
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/eval/hints
@@ -0,0 +1,3 @@
+more-filename-games (binary): no-md5sums-control-file
+filenames (binary): no-md5sums-control-file
+filename-games (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/legacy-filenames/eval/post-test b/t/recipes/checks/md5sums/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/README.Debian b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/README.Debian
new file mode 100644
index 0000000..87bfcdf
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/README.Debian
@@ -0,0 +1,7 @@
+foo++ for Debian
+----------------
+
+This should trigger a warning, as i use a fake mail address.
+
+ -- Marc 'HE' Brockschmidt <foo@unknown>, Wed, 14 Apr 2004 01:44:18 +0200
+
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/changelog.in
new file mode 100644
index 0000000..f838939
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/changelog.in
@@ -0,0 +1,31 @@
+foo++ ([% $version %]) [% $distribution %]; urgency=low
+
+ * Add a fake README.Debian to trigger a warning.
+ * This should trigger
+ debian-changelog-file-contains-debmake-default-email-address.
+
+ -- Marc 'HE' Brockschmidt <he@unknown> Wed, 14 Apr 2003 01:35:47 +0200
+
+foo++ (4) unstable; urgency=low
+
+ * This changelog now includes a ISO-8859-1 character: 'ä'
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 5 Mar 2004 13:41:39 +0100
+
+foo++ (3) unstable; urgency=low
+
+ * Set maintainers + uploaders incorrectly
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 5 Mar 2004 04:20:24 +0100
+
+foo++ (2) unstable; urgency=low
+
+ * Added a foo++-helper package to try and catch even more ++ bugs.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Sat, 10 Feb 2001 23:16:17 -0800
+
+foo++ (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/control b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/control
new file mode 100644
index 0000000..3e86b96
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/control
@@ -0,0 +1,30 @@
+Source: foo++
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainer <debian-qa@lists.debian.org>
+Uploaders: Marc 'HE' Brockschmidt <he@unknown>, Jeroen van Wolffelaar<jeroen@localhost.localdomain>,
+ Frank <djpig@debian.org>, Yama@gotchi, Josip,
+ I am afraid of spam and think this helps <no_spam_please AT debian.org>
+Standards-Version: 3.1.1
+XS-Dm-Upload-Allowed: no
+
+Package: foo++
+Architecture: all
+Build-Depends: test
+Depends: test, libssl0.9.7
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name.
+ .
+ This description also uses non-UTF8 high bytes chars: ÄÖÜß
+
+Package: foo++-helper
+Architecture: all
+Depends: test, foo++
+Description: see how lintian reacts to plus signs in the package name
+ Regression test to see if lintian tests work on a package with plus signs in
+ its name. This has /usr/share/doc links to foo++ to trigger even more checks.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/copyright b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/copyright
new file mode 100644
index 0000000..e2d6d93
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/copyright
@@ -0,0 +1,7 @@
+A reference to /usr/share/common-licenses/GPL to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, there is also a reference to /usr/share/common-licenses/LGPL, so
+who knows what bits actually depend on libssl.
+
+Copr. 2007 Somebody.
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/rules
new file mode 100755
index 0000000..63bb4db
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+foo=foo++
+helper=foo++-helper
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/$(foo)/DEBIAN
+ install -d debian/$(foo)/usr/share/doc/$(foo)
+ install -m 644 debian/changelog \
+ debian/$(foo)/usr/share/doc/$(foo)/changelog
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/changelog
+ install -m 644 debian/README.Debian \
+ debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ gzip -n -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian
+ dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo)
+ dpkg --build debian/$(foo) ..
+
+ install -d debian/$(helper)/DEBIAN
+ install -d debian/$(helper)/usr/share/doc/
+ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper)
+ dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper)
+ dpkg --build debian/$(helper) ..
+
+binary: binary-arch binary-indep
+
+clean:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/watch b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/watch
new file mode 100644
index 0000000..26f9a3c
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/debian/watch
@@ -0,0 +1,6 @@
+# A comment \
+version=0
+
+# uscan does not interpret the backslash above, it is just part of the comment
+
+http://domain.tld/file-(.*)\.tar\.gz
diff --git a/t/recipes/checks/md5sums/legacy-foo++/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-foo++/build-spec/fill-values
new file mode 100644
index 0000000..86d43bc
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: legacy-foo++
+Source: foo++
+Version: 5
+Description: Legacy test "foo++"
diff --git a/t/recipes/checks/md5sums/legacy-foo++/eval/desc b/t/recipes/checks/md5sums/legacy-foo++/eval/desc
new file mode 100644
index 0000000..957c4f4
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-foo++
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-foo++/eval/hints b/t/recipes/checks/md5sums/legacy-foo++/eval/hints
new file mode 100644
index 0000000..5a285ea
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/eval/hints
@@ -0,0 +1 @@
+foo++ (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/legacy-foo++/eval/post-test b/t/recipes/checks/md5sums/legacy-foo++/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-foo++/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/eval/desc b/t/recipes/checks/md5sums/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..05d6c65
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/eval/hints b/t/recipes/checks/md5sums/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..840b610
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/eval/hints
@@ -0,0 +1,5 @@
+libbaz2-dev (binary): no-md5sums-control-file
+libbaz2-dbg (binary): no-md5sums-control-file
+libbaz2 (binary): no-md5sums-control-file
+libbaz1-dev (binary): no-md5sums-control-file
+libbaz1 (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/legacy-libbaz/eval/post-test b/t/recipes/checks/md5sums/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..27d6486
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..62e897a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1 @@
+maintainer-scripts (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/fill-values b/t/recipes/checks/md5sums/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/md5sums/legacy-scripts/build-spec/pre-build b/t/recipes/checks/md5sums/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/md5sums/legacy-scripts/eval/desc b/t/recipes/checks/md5sums/legacy-scripts/eval/desc
new file mode 100644
index 0000000..8371d73
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/legacy-scripts/eval/hints b/t/recipes/checks/md5sums/legacy-scripts/eval/hints
new file mode 100644
index 0000000..198325d
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/legacy-scripts/eval/post-test b/t/recipes/checks/md5sums/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/md5sums/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/debian/install b/t/recipes/checks/md5sums/md5sums-general/build-spec/debian/install
new file mode 100644
index 0000000..399564c
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/debian/install
@@ -0,0 +1 @@
+data* usr/share/lintian/
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/debian/rules b/t/recipes/checks/md5sums/md5sums-general/build-spec/debian/rules
new file mode 100644
index 0000000..6971ee0
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+FIND ?= find
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ echo "Broken md5sum" > $$($(FIND) debian/ -name 'data-file1')
+ sed -i 's/data-file2/data-file5/' $$($(FIND) -name 'md5sums')
+ echo "broken-md5sums" >> $$($(FIND) -name 'md5sums')
+ dh_builddeb
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/fill-values b/t/recipes/checks/md5sums/md5sums-general/build-spec/fill-values
new file mode 100644
index 0000000..4607247
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: md5sums-general
+Description: Test of md5sums related tags
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file1 b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file1
new file mode 100644
index 0000000..ad9213e
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file1
@@ -0,0 +1 @@
+Hello data-file1
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file2 b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file2
new file mode 100644
index 0000000..fdf6b01
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file2
@@ -0,0 +1 @@
+Hello data-file2
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file3 b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file3
new file mode 100644
index 0000000..0f72672
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file3
@@ -0,0 +1 @@
+Hello data-file3
diff --git a/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file4 b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file4
new file mode 100644
index 0000000..2764cf8
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/build-spec/orig/data-file4
@@ -0,0 +1 @@
+Hello data-file4
diff --git a/t/recipes/checks/md5sums/md5sums-general/eval/desc b/t/recipes/checks/md5sums/md5sums-general/eval/desc
new file mode 100644
index 0000000..3129219
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: md5sums-general
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/md5sums-general/eval/hints b/t/recipes/checks/md5sums/md5sums-general/eval/hints
new file mode 100644
index 0000000..28265fe
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-general/eval/hints
@@ -0,0 +1,4 @@
+md5sums-general (binary): md5sums-lists-nonexistent-file usr/share/lintian/data-file5 [md5sums]
+md5sums-general (binary): md5sum-mismatch usr/share/lintian/data-file1 [md5sums]
+md5sums-general (binary): malformed-md5sums-control-file Odd text: broken-md5sums [md5sums]
+md5sums-general (binary): file-missing-in-md5sums usr/share/lintian/data-file2 [md5sums]
diff --git a/t/recipes/checks/md5sums/md5sums-missing/build-spec/debian/rules b/t/recipes/checks/md5sums/md5sums-missing/build-spec/debian/rules
new file mode 100644
index 0000000..9d8ce3a
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-missing/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+FIND ?= find
+
+%:
+ dh $@
+
+override_dh_builddeb:
+ $(FIND) debian/ -name 'md5sums' -delete
+ dh_builddeb
diff --git a/t/recipes/checks/md5sums/md5sums-missing/build-spec/fill-values b/t/recipes/checks/md5sums/md5sums-missing/build-spec/fill-values
new file mode 100644
index 0000000..4bd35b7
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-missing/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: md5sums-missing
+Description: Test of missing md5sums file
diff --git a/t/recipes/checks/md5sums/md5sums-missing/eval/desc b/t/recipes/checks/md5sums/md5sums-missing/eval/desc
new file mode 100644
index 0000000..a0f18b1
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-missing/eval/desc
@@ -0,0 +1,2 @@
+Testname: md5sums-missing
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/md5sums-missing/eval/hints b/t/recipes/checks/md5sums/md5sums-missing/eval/hints
new file mode 100644
index 0000000..38caff1
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-missing/eval/hints
@@ -0,0 +1 @@
+md5sums-missing (binary): no-md5sums-control-file
diff --git a/t/recipes/checks/md5sums/md5sums-traversal/build-spec/fill-values b/t/recipes/checks/md5sums/md5sums-traversal/build-spec/fill-values
new file mode 100644
index 0000000..2c68cb6
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-traversal/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: md5sums-traversal
+Description: Test for traversals via md5sums symlink
diff --git a/t/recipes/checks/md5sums/md5sums-traversal/build-spec/pre-control b/t/recipes/checks/md5sums/md5sums-traversal/build-spec/pre-control
new file mode 100755
index 0000000..3b97b53
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-traversal/build-spec/pre-control
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+builddir="$1"
+
+rm -f "$builddir/md5sums"
+ln -sf ../copyright "$builddir/md5sums"
diff --git a/t/recipes/checks/md5sums/md5sums-traversal/eval/desc b/t/recipes/checks/md5sums/md5sums-traversal/eval/desc
new file mode 100644
index 0000000..f0a868f
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-traversal/eval/desc
@@ -0,0 +1,5 @@
+Testname: md5sums-traversal
+Test-Against:
+ file-missing-in-md5sums
+ malformed-md5sums-control-file
+Check: md5sums
diff --git a/t/recipes/checks/md5sums/md5sums-traversal/eval/hints b/t/recipes/checks/md5sums/md5sums-traversal/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/md5sums/md5sums-traversal/eval/hints
diff --git a/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/debian/install b/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/debian/install
new file mode 100644
index 0000000..af33e1a
--- /dev/null
+++ b/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/debian/install
@@ -0,0 +1 @@
+unknown-type.desktop usr/share/applications
diff --git a/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/fill-values b/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/fill-values
new file mode 100644
index 0000000..f604a1b
--- /dev/null
+++ b/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: desktop-entry-unknown-type
+Description: Test desktop file type field value validity
diff --git a/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/orig/unknown-type.desktop b/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/orig/unknown-type.desktop
new file mode 100644
index 0000000..41dd262
--- /dev/null
+++ b/t/recipes/checks/menu-format/desktop-entry-unknown-type/build-spec/orig/unknown-type.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=foo
+Name=unknown-type
+Comment=Type should be one of Application, Link or Directory
diff --git a/t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/desc b/t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/desc
new file mode 100644
index 0000000..8d7cef4
--- /dev/null
+++ b/t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/desc
@@ -0,0 +1,2 @@
+Testname: desktop-entry-unknown-type
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/hints b/t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/hints
new file mode 100644
index 0000000..5e785a9
--- /dev/null
+++ b/t/recipes/checks/menu-format/desktop-entry-unknown-type/eval/hints
@@ -0,0 +1 @@
+desktop-entry-unknown-type (binary): desktop-entry-unknown-type foo [usr/share/applications/unknown-type.desktop]
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/install b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/install
new file mode 100644
index 0000000..c2ba969
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/install
@@ -0,0 +1 @@
+test-menu usr/share/menu
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postinst b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postinst
new file mode 100644
index 0000000..024178d
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+# Checks that the maintainer script checks for the existence of programs that
+# it calls. This should produce no warnings except a bashism warning about
+# using type, a warning about the deprecated wm-menu-config invocation, and a
+# warning for calling the deprecated install-docs outside of a trigger.
+
+if [ -x /usr/bin/update-menus ] ; then update-menus ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postrm b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postrm
new file mode 100644
index 0000000..c2274f3
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/debian/postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if type update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/fill-values b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/fill-values
new file mode 100644
index 0000000..dec694b
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: item-has-needs-dwww
+Skeleton: upload-native
+Description: Test with a menu file that contains an obsolete entry for needs=dwww
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/orig/test-menu b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/orig/test-menu
new file mode 100644
index 0000000..57d65fb
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/build-spec/orig/test-menu
@@ -0,0 +1,5 @@
+?package(item-has-needs-dwww):\
+ section="Applications/Programming"\
+ needs="dwww"\
+ title="Test menu entry"\
+ command="/usr/bin/test-script"
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/eval/desc b/t/recipes/checks/menu-format/item-has-needs-dwww/eval/desc
new file mode 100644
index 0000000..04c3af8
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/eval/desc
@@ -0,0 +1,2 @@
+Testname: item-has-needs-dwww
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/item-has-needs-dwww/eval/hints b/t/recipes/checks/menu-format/item-has-needs-dwww/eval/hints
new file mode 100644
index 0000000..06247e3
--- /dev/null
+++ b/t/recipes/checks/menu-format/item-has-needs-dwww/eval/hints
@@ -0,0 +1,2 @@
+item-has-needs-dwww (binary): menu-item-needs-dwww [usr/share/menu/test-menu:5]
+item-has-needs-dwww (binary): menu-command-not-in-package usr/bin/test-script [usr/share/menu/test-menu:5]
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/control b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/rules b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/templates b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/fill-values b/t/recipes/checks/menu-format/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/menu-format/legacy-binary/eval/desc b/t/recipes/checks/menu-format/legacy-binary/eval/desc
new file mode 100644
index 0000000..d95e91d
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/legacy-binary/eval/hints b/t/recipes/checks/menu-format/legacy-binary/eval/hints
new file mode 100644
index 0000000..60b22dd
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/eval/hints
@@ -0,0 +1,63 @@
+binary (binary): unquoted-string-in-menu-item needs [usr/share/menu/binary:2]
+binary (binary): unquoted-string-in-menu-item needs [usr/share/menu/binary:1]
+binary (binary): unquoted-string-in-menu-item needs [usr/lib/menu/binary:2]
+binary (binary): unquoted-string-in-menu-item needs [usr/lib/menu/binary:1]
+binary (binary): su-wrapper-without--c sux [usr/share/menu/binary:3]
+binary (binary): su-wrapper-without--c sux [usr/lib/menu/binary:3]
+binary (binary): su-wrapper-without--c su-to-root [usr/share/menu/binary:2]
+binary (binary): su-wrapper-without--c su-to-root [usr/lib/menu/binary:2]
+binary (binary): su-wrapper-not-su-to-root sux [usr/share/menu/binary:3]
+binary (binary): su-wrapper-not-su-to-root sux [usr/lib/menu/binary:3]
+binary (binary): su-wrapper-not-su-to-root kdesu [usr/share/applications/hello.desktop]
+binary (binary): su-to-root-with-usr-sbin [usr/share/menu/binary:4]
+binary (binary): su-to-root-with-usr-sbin [usr/lib/menu/binary:4]
+binary (binary): non-wm-module-in-wm-modules-menu-section wm [usr/share/menu/binary:22]
+binary (binary): non-wm-module-in-wm-modules-menu-section wm [usr/lib/menu/binary:22]
+binary (binary): non-wm-in-windowmanager-menu-section x11 [usr/share/menu/binary:4]
+binary (binary): non-wm-in-windowmanager-menu-section x11 [usr/lib/menu/binary:4]
+binary (binary): menu-item-uses-windowmanagers-section [usr/share/menu/binary:13]
+binary (binary): menu-item-uses-windowmanagers-section [usr/lib/menu/binary:13]
+binary (binary): menu-item-uses-apps-section [usr/share/menu/binary:7]
+binary (binary): menu-item-uses-apps-section [usr/lib/menu/binary:7]
+binary (binary): menu-item-needs-tag-has-unknown-value wm [usr/share/menu/binary:5]
+binary (binary): menu-item-needs-tag-has-unknown-value wm [usr/lib/menu/binary:5]
+binary (binary): menu-item-missing-required-tag section [usr/share/menu/binary:1]
+binary (binary): menu-item-missing-required-tag section [usr/lib/menu/binary:1]
+binary (binary): menu-item-missing-required-tag needs [usr/share/menu/binary:6]
+binary (binary): menu-item-missing-required-tag needs [usr/lib/menu/binary:6]
+binary (binary): menu-item-creates-new-section WindowManagers/Modules [usr/share/menu/binary:13]
+binary (binary): menu-item-creates-new-section WindowManagers/Modules [usr/lib/menu/binary:13]
+binary (binary): menu-item-creates-new-section Apps/System [usr/share/menu/binary:7]
+binary (binary): menu-item-creates-new-section Apps/System [usr/lib/menu/binary:7]
+binary (binary): menu-item-creates-new-section Applications/System [usr/share/menu/binary:2]
+binary (binary): menu-item-creates-new-section Applications/System [usr/lib/menu/binary:2]
+binary (binary): menu-command-not-in-package xfdisk [usr/share/menu/binary:4]
+binary (binary): menu-command-not-in-package xfdisk [usr/lib/menu/binary:4]
+binary (binary): menu-command-not-in-package imnothere [usr/share/menu/binary:7]
+binary (binary): menu-command-not-in-package imnothere [usr/share/menu/binary:18]
+binary (binary): menu-command-not-in-package imnothere [usr/lib/menu/binary:7]
+binary (binary): menu-command-not-in-package imnothere [usr/lib/menu/binary:18]
+binary (binary): menu-command-not-in-package cfdisk [usr/share/menu/binary:20]
+binary (binary): menu-command-not-in-package cfdisk [usr/lib/menu/binary:20]
+binary (binary): executable-desktop-file 0755 [usr/share/applications/goodbye.desktop]
+binary (binary): desktop-entry-uses-reserved-category Screensaver [usr/share/applications/goodbye.desktop]
+binary (binary): desktop-entry-missing-required-key Name [usr/share/applications/goodbye.desktop]
+binary (binary): desktop-entry-lacks-keywords-entry [usr/share/applications/hello.desktop]
+binary (binary): desktop-entry-lacks-keywords-entry [usr/share/applications/goodbye.desktop]
+binary (binary): desktop-entry-lacks-icon-entry [usr/share/applications/goodbye.desktop]
+binary (binary): desktop-entry-invalid-category WeirdStuff [usr/share/applications/goodbye.desktop]
+binary (binary): desktop-entry-file-has-crs [usr/share/applications/hello.desktop:7]
+binary (binary): desktop-entry-contains-unknown-key icon [usr/share/applications/goodbye.desktop:7]
+binary (binary): desktop-entry-contains-unknown-key SpecialTag [usr/share/applications/goodbye.desktop:5]
+binary (binary): desktop-entry-contains-encoding-key Encoding [usr/share/applications/hello.desktop:13]
+binary (binary): desktop-entry-contains-encoding-key Encoding [usr/share/applications/goodbye.desktop:11]
+binary (binary): desktop-contains-deprecated-key [usr/share/applications/hello.desktop:4]
+binary (binary): desktop-command-not-in-package goodbye [usr/share/applications/goodbye.desktop]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/share/menu/binary:5]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/share/menu/binary:24]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/share/menu/binary:22]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/share/menu/binary:21]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/lib/menu/binary:5]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/lib/menu/binary:24]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/lib/menu/binary:22]
+binary (binary): command-in-menu-file-and-desktop-file hello [usr/lib/menu/binary:21]
diff --git a/t/recipes/checks/menu-format/legacy-binary/eval/post-test b/t/recipes/checks/menu-format/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/menu-format/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/install b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/install
new file mode 100644
index 0000000..ae6f6ea
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/install
@@ -0,0 +1,8 @@
+crlf.desktop usr/share/applications
+environments.desktop usr/share/applications
+general.desktop usr/share/applications
+missing.desktop usr/share/applications
+reserved-bad.desktop usr/share/applications
+reserved.desktop usr/share/applications
+link.desktop usr/share/applications
+directory.desktop usr/share/applications
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/rules b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/rules
new file mode 100755
index 0000000..704ddff
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+pkg = $(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod a+x debian/$(pkg)/usr/share/applications/general.desktop
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/fill-values b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/fill-values
new file mode 100644
index 0000000..62ad777
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: menu-format-desktop-general
+Description: Test desktop file tags
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/crlf.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/crlf.desktop
new file mode 100644
index 0000000..4e53c3a
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/crlf.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=general
+Comment=An entirely correct desktop entry
+Type=Application
+Categories=Development;Building;
+Icon=foo
+Keywords=Foobar
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/directory.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/directory.desktop
new file mode 100644
index 0000000..0a450bc
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/directory.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Type=Directory
+Name=link
+Icon=link
+Comment=This is Type=Directory and thus does not require a Keywords key
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/environments.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/environments.desktop
new file mode 100644
index 0000000..51aa674
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/environments.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=environments
+Type=Application
+Comment=Incorrectly limited to particular environments
+Categories=Development;
+Exec=foo
+OnlyShowIn=GNOME;KDE;
+Icon=foo
+Keywords=Golf
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/general.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/general.desktop
new file mode 100644
index 0000000..f1ef3bd
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/general.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name=general
+Name=general
+Comment=Various general errors
+Type=Application
+Foo=Bar
+Encoding=UTF-8
+Categories=Building;Lintian;
+Terminal=true
+TerminalOptions=-g 80x25
+Exec=foo
+#missing Icon
+#missing Keywords
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/link.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/link.desktop
new file mode 100644
index 0000000..9f20d7c
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/link.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Link
+Name=link
+Icon=link
+Comment=This is Type=Link and thus does not require a Keywords key
+URL=http://example.com/
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/missing.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/missing.desktop
new file mode 100644
index 0000000..6a07c8f
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/missing.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Name=foo
+Comment=This entry has no Application
+Categories=Development;
+Exec=foo
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved-bad.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved-bad.desktop
new file mode 100644
index 0000000..a0b71e1
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved-bad.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=reserved
+Comment=Entry in a reserved category (incorrect)
+Type=Application
+Categories=Screensaver;
+Exec=foo
+Icon=foo
+Keywords=Fun
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved.desktop b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved.desktop
new file mode 100644
index 0000000..9256014
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/build-spec/orig/reserved.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=reserved
+Comment=Entry in a reserved category (correct)
+Type=Application
+Categories=Screensaver;
+Exec=foo
+OnlyShowIn=GNOME;KDE;
+Icon=foo
+Keywords=Blur
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/eval/desc b/t/recipes/checks/menu-format/menu-format-desktop-general/eval/desc
new file mode 100644
index 0000000..15a1c2a
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: menu-format-desktop-general
+See-Also: Debian Bug#537737
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-general/eval/hints b/t/recipes/checks/menu-format/menu-format-desktop-general/eval/hints
new file mode 100644
index 0000000..fd3fa4a
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-general/eval/hints
@@ -0,0 +1,16 @@
+menu-format-desktop-general (binary): executable-desktop-file 0755 [usr/share/applications/general.desktop]
+menu-format-desktop-general (binary): duplicate-key-in-desktop Name [usr/share/applications/general.desktop:3]
+menu-format-desktop-general (binary): desktop-entry-uses-reserved-category Screensaver [usr/share/applications/reserved-bad.desktop]
+menu-format-desktop-general (binary): desktop-entry-limited-to-environments [usr/share/applications/environments.desktop]
+menu-format-desktop-general (binary): desktop-entry-lacks-main-category [usr/share/applications/general.desktop]
+menu-format-desktop-general (binary): desktop-entry-lacks-keywords-entry [usr/share/applications/general.desktop]
+menu-format-desktop-general (binary): desktop-entry-lacks-icon-entry [usr/share/applications/general.desktop]
+menu-format-desktop-general (binary): desktop-entry-invalid-category Lintian [usr/share/applications/general.desktop]
+menu-format-desktop-general (binary): desktop-entry-file-has-crs [usr/share/applications/crlf.desktop:1]
+menu-format-desktop-general (binary): desktop-entry-contains-unknown-key Foo [usr/share/applications/general.desktop:6]
+menu-format-desktop-general (binary): desktop-entry-contains-encoding-key Encoding [usr/share/applications/general.desktop:7]
+menu-format-desktop-general (binary): desktop-entry-contains-deprecated-key TerminalOptions [usr/share/applications/general.desktop:10]
+menu-format-desktop-general (binary): desktop-command-not-in-package foo [usr/share/applications/reserved.desktop]
+menu-format-desktop-general (binary): desktop-command-not-in-package foo [usr/share/applications/reserved-bad.desktop]
+menu-format-desktop-general (binary): desktop-command-not-in-package foo [usr/share/applications/general.desktop]
+menu-format-desktop-general (binary): desktop-command-not-in-package foo [usr/share/applications/environments.desktop]
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/control.in b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/control.in
new file mode 100644
index 0000000..672ac84
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: menu-mime
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.install b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.install
new file mode 100644
index 0000000..00850a0
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.install
@@ -0,0 +1,2 @@
+*.desktop usr/share/applications
+pargs usr/bin
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.manpages b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.manpages
new file mode 100644
index 0000000..6fb56bc
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/debian/menu-mime.manpages
@@ -0,0 +1 @@
+pargs.1
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/fill-values b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/fill-values
new file mode 100644
index 0000000..3233112
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: menu-format-desktop-mimetype
+Section: doc
+Description: Check mime-related issues in desktop files
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/Makefile b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/Makefile
new file mode 100644
index 0000000..5b475b1
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/Makefile
@@ -0,0 +1,6 @@
+all: pargs
+ pod2man --section=1 pargs pargs.1
+
+clean:
+ rm -f pargs*.1
+
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/bar.desktop b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/bar.desktop
new file mode 100644
index 0000000..20d591d
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/bar.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=GNU bar
+GenericName=bar
+Comment=A bar test entry for Lintian
+Type=Application
+Categories=Game;BoardGame;GTK;
+MimeType=application/bar;
+Keywords=Lintian
+Icon=foo
+Exec=pargs %U
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/foo.desktop b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/foo.desktop
new file mode 100644
index 0000000..0e6c1fb
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/foo.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=GNU Foo
+GenericName=Foo
+Comment=A foo test entry for Lintian
+Type=Application
+Categories=Game;BoardGame;GTK;
+MimeType=application/foo;
+Icon=foo
+Keywords=Lintian
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/pargs b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/pargs
new file mode 100644
index 0000000..5a0017c
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/build-spec/orig/pargs
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print join("\n", @ARGV), "\n";
+exit 0;
+
+=head1 NAME
+
+pargs - print arguments (similar to echo)
+
+=head1 SYNOPSIS
+
+pargs [...]
+
+=head1 DESCRIPTION
+
+Prints all arguments separated by newlines.
+
+=cut
+
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/desc b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/desc
new file mode 100644
index 0000000..43935ef
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/desc
@@ -0,0 +1,3 @@
+Testname: menu-format-desktop-mimetype
+See-Also: Debian Bug#488832, Debian Bug#525133, #757383, #760677
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/hints b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/hints
new file mode 100644
index 0000000..0eec47f
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-desktop-mimetype/eval/hints
@@ -0,0 +1 @@
+menu-mime (binary): desktop-mime-but-no-exec-code [usr/share/applications/foo.desktop]
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/control.in b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/control.in
new file mode 100644
index 0000000..10303b5
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/control.in
@@ -0,0 +1,51 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: menu-none
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (no icon)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Test for "none" icon and missing icons.
+
+Package: menu-cmd
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (cmd)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Test for command not being in the package.
+
+Package: menu-broken
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (broken)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Test for broken menu file.
+
+Package: menu-section
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (section)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ Test for menu file with weird sections.
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.install b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.install
new file mode 100644
index 0000000..f352ad9
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.install
@@ -0,0 +1 @@
+pargs-broken usr/bin
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.manpages b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.manpages
new file mode 100644
index 0000000..9f8d467
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.manpages
@@ -0,0 +1 @@
+pargs-broken.1
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.menu b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.menu
new file mode 100644
index 0000000..fee3e7f
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-broken.menu
@@ -0,0 +1,12 @@
+?package(menu-broken):needs="X11" section="Applications/Programming"\
+ title="pargs (missing slash)" command="/usr/bin/pargs-broken"\
+ longtitle="Argument printer (bad-test)"
+ icon="none" newtag=unquoted-value
+?package(wrong-package):needs="X11" section="Applications/Programming"\
+ title="pargs (wrong pkg)" command="/usr/bin/pargs-broken"\
+ longtitle="Argument printer"
+?package(menu-broken):needs="X11" section="Applications/Programming"\
+ title="pargs (dup+unparse)" command="/usr/bin/pargs-broken"\
+ longtitle="Argument printer"\
+ longtitle="Argument printer"\
+ unparseable-stuff
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.install b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.install
new file mode 100644
index 0000000..b8f1c81
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.install
@@ -0,0 +1,2 @@
+*.xpm usr/share/pixmaps/
+pargs.png usr/share/pixmaps/
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.menu b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.menu
new file mode 100644
index 0000000..73bc14c
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-cmd.menu
@@ -0,0 +1,4 @@
+?package(menu-cmd):needs="X11" section="Applications/Programming"\
+ title="pargs (png icon)" command="/usr/bin/not-here"\
+ longtitle="Argument printer" icon16x16="/usr/share/pixmaps/pargs.png" \
+ icon="/usr/share/pixmaps/broken.xpm" icon32x32="/usr/share/pixmaps/too-large.xpm"
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.install b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.install
new file mode 100644
index 0000000..bf2c0f6
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.install
@@ -0,0 +1 @@
+pargs usr/bin
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.manpages b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.manpages
new file mode 100644
index 0000000..6fb56bc
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.manpages
@@ -0,0 +1 @@
+pargs.1
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.menu b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.menu
new file mode 100644
index 0000000..4bd3892
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-none.menu
@@ -0,0 +1,16 @@
+?package(menu-none):needs="X11" section="Applications/Programming"\
+ title="pargs (icon none)" command="/usr/bin/pargs"\
+ longtitle="Argument printer"\
+ icon="none"
+?package(menu-none):needs="X11" section="Applications/Programming"\
+ title="pargs (mis. icon)" command="/usr/bin/pargs"\
+ longtitle="Argument printer"\
+ icon="/usr/share/menu-none/non-existent.xpm"\
+ icon32x32="/usr/share/menu-none/non-existent32.xpm"\
+ icon16x16="/usr/share/menu-none/non-existent16.xpm"
+?package(menu-none):needs="X11" section="Applications/Programming"\
+ title="pargs (rel. icon)" command="/usr/bin/pargs"\
+ longtitle="Argument printer"\
+ icon="non-existent.xpm"\
+ icon32x32="non-existent32.xpm"\
+ icon16x16="non-existent16.xpm"
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.install b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.install
new file mode 100644
index 0000000..4cf0ec4
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.install
@@ -0,0 +1,2 @@
+pargs-section usr/bin
+pargs.desktop usr/share/applications
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.manpages b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.manpages
new file mode 100644
index 0000000..bfc1a5b
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.manpages
@@ -0,0 +1 @@
+pargs-section.1
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.menu b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.menu
new file mode 100644
index 0000000..f6d6893
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/debian/menu-section.menu
@@ -0,0 +1,15 @@
+?package(menu-section):needs="X11" section="Root"\
+ title="pargs (new root)" command="/usr/bin/pargs-section"\
+ longtitle="Argument printer"
+?package(menu-section):needs="X11" section="Apps/Games/Toys"\
+ title="pargs (apps/games)" command="/usr/bin/pargs-section"\
+ longtitle="Argument printer"
+?package(menu-section):needs="X11" section="Games"\
+ title="pargs (games)" command="/usr/bin/pargs-section"\
+ longtitle="Argument printer"
+?package(menu-section):needs="X11" section="Apps/Programming"\
+ title="pargs (apps/prog)" command="/usr/bin/pargs-section"\
+ longtitle="Argument printer"
+?package(menu-section):needs="X11" section="WindowManagers/Programming"\
+ title="pargs (vm)" command="/usr/bin/pargs-section"\
+ longtitle="Argument printer"
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/fill-values b/t/recipes/checks/menu-format/menu-format-general/build-spec/fill-values
new file mode 100644
index 0000000..5c96d32
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: menu-format-general
+Description: Test menu file tags
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/Makefile b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/Makefile
new file mode 100644
index 0000000..2754f69
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/Makefile
@@ -0,0 +1,11 @@
+all: pargs
+ sed s/pargs/pargs-broken/ pargs > pargs-broken
+ sed s/pargs/pargs-section/ pargs > pargs-section
+ pod2man --section=1 pargs pargs.1
+ pod2man --section=1 pargs-broken pargs-broken.1
+ pod2man --section=1 pargs-section pargs-section.1
+
+
+clean:
+ rm -f pargs*.1
+ rm -f pargs-*
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/broken.xpm b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/broken.xpm
new file mode 100644
index 0000000..2fa612c
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/broken.xpm
@@ -0,0 +1 @@
+/* Pretend to be an XPM file without being it */
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs
new file mode 100644
index 0000000..5a0017c
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print join("\n", @ARGV), "\n";
+exit 0;
+
+=head1 NAME
+
+pargs - print arguments (similar to echo)
+
+=head1 SYNOPSIS
+
+pargs [...]
+
+=head1 DESCRIPTION
+
+Prints all arguments separated by newlines.
+
+=cut
+
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.desktop b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.desktop
new file mode 100644
index 0000000..b84ecf2
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=pargs
+Type=Application
+Comment=Argument Printer
+Categories=Development;
+Keywords=Argument;Printer;
+Icon=foo
+Exec=pargs-section
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.png b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/pargs.png
diff --git a/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/too-large.xpm b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/too-large.xpm
new file mode 100644
index 0000000..1403c5d
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/build-spec/orig/too-large.xpm
@@ -0,0 +1,10 @@
+/* XPM */
+
+/*
+ This is a fake XPM file - it has just enough to fool Lintian into
+ believing this is a 256x256 image...
+ */
+
+ "256 256 10 10"
+
+ /* Lintian is not too bright... :P */
diff --git a/t/recipes/checks/menu-format/menu-format-general/eval/desc b/t/recipes/checks/menu-format/menu-format-general/eval/desc
new file mode 100644
index 0000000..b332370
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: menu-format-general
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/menu-format-general/eval/hints b/t/recipes/checks/menu-format/menu-format-general/eval/hints
new file mode 100644
index 0000000..9ad6e14
--- /dev/null
+++ b/t/recipes/checks/menu-format/menu-format-general/eval/hints
@@ -0,0 +1,30 @@
+menu-section (binary): non-wm-in-windowmanager-menu-section x11 [usr/share/menu/menu-section:15]
+menu-section (binary): menu-item-uses-windowmanagers-section [usr/share/menu/menu-section:15]
+menu-section (binary): menu-item-uses-apps-section [usr/share/menu/menu-section:12]
+menu-section (binary): menu-item-uses-apps-games-section [usr/share/menu/menu-section:6]
+menu-section (binary): menu-item-creates-new-section WindowManagers/Programming [usr/share/menu/menu-section:15]
+menu-section (binary): menu-item-creates-new-section Games [usr/share/menu/menu-section:9]
+menu-section (binary): menu-item-creates-new-root-section Root [usr/share/menu/menu-section:3]
+menu-section (binary): command-in-menu-file-and-desktop-file pargs-section [usr/share/menu/menu-section:9]
+menu-section (binary): command-in-menu-file-and-desktop-file pargs-section [usr/share/menu/menu-section:6]
+menu-section (binary): command-in-menu-file-and-desktop-file pargs-section [usr/share/menu/menu-section:3]
+menu-section (binary): command-in-menu-file-and-desktop-file pargs-section [usr/share/menu/menu-section:15]
+menu-section (binary): command-in-menu-file-and-desktop-file pargs-section [usr/share/menu/menu-section:12]
+menu-none (binary): menu-item-uses-icon-none icon [usr/share/menu/menu-none:4]
+menu-none (binary): menu-icon-uses-relative-path icon32x32 non-existent32.xpm [usr/share/menu/menu-none:16]
+menu-none (binary): menu-icon-uses-relative-path icon16x16 non-existent16.xpm [usr/share/menu/menu-none:16]
+menu-none (binary): menu-icon-uses-relative-path icon non-existent.xpm [usr/share/menu/menu-none:16]
+menu-none (binary): menu-icon-missing icon32x32 usr/share/menu-none/non-existent32.xpm [usr/share/menu/menu-none:10]
+menu-none (binary): menu-icon-missing icon32x32 non-existent32.xpm [usr/share/menu/menu-none:16]
+menu-none (binary): menu-icon-missing icon16x16 usr/share/menu-none/non-existent16.xpm [usr/share/menu/menu-none:10]
+menu-none (binary): menu-icon-missing icon16x16 non-existent16.xpm [usr/share/menu/menu-none:16]
+menu-none (binary): menu-icon-missing icon usr/share/menu-none/non-existent.xpm [usr/share/menu/menu-none:10]
+menu-none (binary): menu-icon-missing icon non-existent.xpm [usr/share/menu/menu-none:16]
+menu-cmd (binary): menu-icon-too-big icon32x32 usr/share/pixmaps/too-large.xpm: 256x256 > 32x32 [usr/share/menu/menu-cmd:4]
+menu-cmd (binary): menu-icon-not-in-xpm-format icon16x16 usr/share/pixmaps/pargs.png [usr/share/menu/menu-cmd:4]
+menu-cmd (binary): menu-icon-cannot-be-parsed icon usr/share/pixmaps/broken.xpm: looking for XPM header [usr/share/menu/menu-cmd:4]
+menu-cmd (binary): menu-command-not-in-package usr/bin/not-here [usr/share/menu/menu-cmd:4]
+menu-broken (binary): unparsable-menu-item [usr/share/menu/menu-broken:12]
+menu-broken (binary): pkg-not-in-package-test wrong-package [usr/share/menu/menu-broken:7]
+menu-broken (binary): duplicate-tag-in-menu longtitle [usr/share/menu/menu-broken:12]
+menu-broken (binary): bad-test-in-menu-item [usr/share/menu/menu-broken:4]
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/install b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/install
new file mode 100644
index 0000000..c2ba969
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/install
@@ -0,0 +1 @@
+test-menu usr/share/menu
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postinst b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postinst
new file mode 100644
index 0000000..024178d
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+# Checks that the maintainer script checks for the existence of programs that
+# it calls. This should produce no warnings except a bashism warning about
+# using type, a warning about the deprecated wm-menu-config invocation, and a
+# warning for calling the deprecated install-docs outside of a trigger.
+
+if [ -x /usr/bin/update-menus ] ; then update-menus ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postrm b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postrm
new file mode 100644
index 0000000..c2274f3
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/debian/postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if type update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/fill-values b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/fill-values
new file mode 100644
index 0000000..3a69155
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: unknown-menu-tag
+Skeleton: upload-native
+Description: Test with a menu file that contains an unknown tag
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/orig/test-menu b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/orig/test-menu
new file mode 100644
index 0000000..a410949
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/build-spec/orig/test-menu
@@ -0,0 +1,6 @@
+?package(unknown-menu-tag):\
+ section="Applications/Programming"\
+ needs="text"\
+ title="Test menu entry"\
+ command="/usr/bin/test-script" \
+ custom="Custom entry"
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/eval/desc b/t/recipes/checks/menu-format/unknown-menu-tag/eval/desc
new file mode 100644
index 0000000..ea9d71a
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/eval/desc
@@ -0,0 +1,2 @@
+Testname: unknown-menu-tag
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/unknown-menu-tag/eval/hints b/t/recipes/checks/menu-format/unknown-menu-tag/eval/hints
new file mode 100644
index 0000000..b1d001e
--- /dev/null
+++ b/t/recipes/checks/menu-format/unknown-menu-tag/eval/hints
@@ -0,0 +1,2 @@
+unknown-menu-tag (binary): menu-item-contains-unknown-tag custom [usr/share/menu/test-menu:6]
+unknown-menu-tag (binary): menu-command-not-in-package usr/bin/test-script [usr/share/menu/test-menu:6]
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/install b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/install
new file mode 100644
index 0000000..c2ba969
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/install
@@ -0,0 +1 @@
+test-menu usr/share/menu
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postinst b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postinst
new file mode 100644
index 0000000..024178d
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+# Checks that the maintainer script checks for the existence of programs that
+# it calls. This should produce no warnings except a bashism warning about
+# using type, a warning about the deprecated wm-menu-config invocation, and a
+# warning for calling the deprecated install-docs outside of a trigger.
+
+if [ -x /usr/bin/update-menus ] ; then update-menus ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postrm b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postrm
new file mode 100644
index 0000000..c2274f3
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/debian/postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if type update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/fill-values b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/fill-values
new file mode 100644
index 0000000..9edc28d
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: whitespace-after-continuation-character
+Skeleton: upload-native
+Description: Test with a menu file that contains whitespace after a continuation character
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/orig/test-menu b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/orig/test-menu
new file mode 100644
index 0000000..6bba1aa
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/build-spec/orig/test-menu
@@ -0,0 +1,5 @@
+?package(unknown-menu-tag):\
+ section="Applications/Programming"\
+ needs="text"\
+ title="Test menu entry"\
+ command="/usr/bin/test-script"
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/desc b/t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/desc
new file mode 100644
index 0000000..d6eee4d
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/desc
@@ -0,0 +1,2 @@
+Testname: whitespace-after-continuation-character
+Check: menu-format
diff --git a/t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/hints b/t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/hints
new file mode 100644
index 0000000..9bfdf27
--- /dev/null
+++ b/t/recipes/checks/menu-format/whitespace-after-continuation-character/eval/hints
@@ -0,0 +1,3 @@
+whitespace-after-continuation-character (binary): whitespace-after-continuation-character [usr/share/menu/test-menu:5]
+whitespace-after-continuation-character (binary): pkg-not-in-package-test unknown-menu-tag [usr/share/menu/test-menu:5]
+whitespace-after-continuation-character (binary): menu-command-not-in-package usr/bin/test-script [usr/share/menu/test-menu:5]
diff --git a/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/doc-base.doc1 b/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/doc-base.doc1
new file mode 100755
index 0000000..247aa43
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/doc-base.doc1
@@ -0,0 +1,8 @@
+Document: doc1.txt
+Title: Document 1
+Author: Lintian maintainers
+Abstract: Document 1
+Section: Programming/Something
+
+Format: text
+Files: /usr/share/doc/executable-in-docbase/doc1.txt
diff --git a/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/docs b/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/docs
new file mode 100644
index 0000000..a672847
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/docs
@@ -0,0 +1 @@
+doc1.txt
diff --git a/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/rules b/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/rules
new file mode 100755
index 0000000..49468b5
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/build-spec/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+
+pkg = $(shell dh_listpackages)
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_installdocs:
+ dh_installdocs
+ chmod 755 debian/$(pkg)/usr/share/doc-base/executable-in-docbase.doc1.txt
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/menus/executable-in-docbase/build-spec/fill-values b/t/recipes/checks/menus/executable-in-docbase/build-spec/fill-values
new file mode 100644
index 0000000..5685561
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: executable-in-docbase
+Skeleton: upload-native
+Description: Test with an executable file in /usr/share/doc-base
+# doc-base installation paths now include the package name, see Bug#980903
+Extra-Build-Depends: debhelper (>= 13.4)
diff --git a/t/recipes/checks/menus/executable-in-docbase/build-spec/orig/doc1.txt b/t/recipes/checks/menus/executable-in-docbase/build-spec/orig/doc1.txt
new file mode 100644
index 0000000..5071182
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/build-spec/orig/doc1.txt
@@ -0,0 +1 @@
+Document 1
diff --git a/t/recipes/checks/menus/executable-in-docbase/eval/desc b/t/recipes/checks/menus/executable-in-docbase/eval/desc
new file mode 100644
index 0000000..362b7e7
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/eval/desc
@@ -0,0 +1,2 @@
+Testname: executable-in-docbase
+Check: menus
diff --git a/t/recipes/checks/menus/executable-in-docbase/eval/hints b/t/recipes/checks/menus/executable-in-docbase/eval/hints
new file mode 100644
index 0000000..5a8a6c1
--- /dev/null
+++ b/t/recipes/checks/menus/executable-in-docbase/eval/hints
@@ -0,0 +1 @@
+executable-in-docbase (binary): executable-in-usr-share-docbase 0755 [usr/share/doc-base/executable-in-docbase.doc1.txt]
diff --git a/t/recipes/checks/menus/executable-menu-file/build-spec/debian/install b/t/recipes/checks/menus/executable-menu-file/build-spec/debian/install
new file mode 100644
index 0000000..c2ba969
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/build-spec/debian/install
@@ -0,0 +1 @@
+test-menu usr/share/menu
diff --git a/t/recipes/checks/menus/executable-menu-file/build-spec/debian/postinst b/t/recipes/checks/menus/executable-menu-file/build-spec/debian/postinst
new file mode 100644
index 0000000..024178d
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/build-spec/debian/postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+# Checks that the maintainer script checks for the existence of programs that
+# it calls. This should produce no warnings except a bashism warning about
+# using type, a warning about the deprecated wm-menu-config invocation, and a
+# warning for calling the deprecated install-docs outside of a trigger.
+
+if [ -x /usr/bin/update-menus ] ; then update-menus ; fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/executable-menu-file/build-spec/debian/postrm b/t/recipes/checks/menus/executable-menu-file/build-spec/debian/postrm
new file mode 100644
index 0000000..c2274f3
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/build-spec/debian/postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if type update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/executable-menu-file/build-spec/fill-values b/t/recipes/checks/menus/executable-menu-file/build-spec/fill-values
new file mode 100644
index 0000000..30b938a
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: executable-menu-file
+Skeleton: upload-native
+Description: Test with an executable menu file
diff --git a/t/recipes/checks/menus/executable-menu-file/build-spec/orig/test-menu b/t/recipes/checks/menus/executable-menu-file/build-spec/orig/test-menu
new file mode 100755
index 0000000..9cdc9f8
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/build-spec/orig/test-menu
@@ -0,0 +1,5 @@
+?package(executable-menu-file):\
+ section="Applications/Programming"\
+ needs="text"\
+ title="Test menu entry"\
+ command="/usr/bin/test-script"
diff --git a/t/recipes/checks/menus/executable-menu-file/eval/desc b/t/recipes/checks/menus/executable-menu-file/eval/desc
new file mode 100644
index 0000000..ae90c48
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: executable-menu-file
+Check: menus
diff --git a/t/recipes/checks/menus/executable-menu-file/eval/hints b/t/recipes/checks/menus/executable-menu-file/eval/hints
new file mode 100644
index 0000000..ea4e207
--- /dev/null
+++ b/t/recipes/checks/menus/executable-menu-file/eval/hints
@@ -0,0 +1 @@
+executable-menu-file (binary): executable-menu-file 0755 [usr/share/menu/test-menu]
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/menus/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/menus/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/menus/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/menus/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/control b/t/recipes/checks/menus/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/menus/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/menus/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..450f222
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/menus/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/menus/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/menu b/t/recipes/checks/menus/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/menus/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/menus/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/rules b/t/recipes/checks/menus/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/debian/templates b/t/recipes/checks/menus/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/fill-values b/t/recipes/checks/menus/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/menus/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/menus/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/menus/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/menus/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/menus/legacy-binary/eval/desc b/t/recipes/checks/menus/legacy-binary/eval/desc
new file mode 100644
index 0000000..3682195
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: menus
diff --git a/t/recipes/checks/menus/legacy-binary/eval/hints b/t/recipes/checks/menus/legacy-binary/eval/hints
new file mode 100644
index 0000000..789e031
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/eval/hints
@@ -0,0 +1,26 @@
+binary (binary): spelling-error-in-doc-base-title-field debian Debian [usr/share/doc-base/binary:2]
+binary (binary): spelling-error-in-doc-base-abstract-field speling spelling [usr/share/doc-base/binary:10]
+binary (binary): postrm-does-not-call-updatemenus [etc/menu-methods/lintian]
+binary (binary): postinst-does-not-call-updatemenus [usr/share/menu/binary]
+binary (binary): menu-method-lacks-include [etc/menu-methods/lintian]
+binary (binary): menu-file-in-usr-lib [usr/lib/menu/binary]
+binary (binary): duplicate-format-in-doc-base html [usr/share/doc-base/binary:36]
+binary (binary): doc-base-unknown-section Non/Existant [usr/share/doc-base/binary:11]
+binary (binary): doc-base-invalid-document-field binary!docs [usr/share/doc-base/binary:1]
+binary (binary): doc-base-index-references-multiple-files [usr/share/doc-base/binary:25]
+binary (binary): doc-base-file-unknown-format esp [usr/share/doc-base/binary:20]
+binary (binary): doc-base-file-unknown-field Unknown [usr/share/doc-base/binary:18]
+binary (binary): doc-base-file-unknown-field Unknown [usr/share/doc-base/binary:12]
+binary (binary): doc-base-file-references-missing-file /usr/share/info/binary.info.gz [usr/share/doc-base/binary:34]
+binary (binary): doc-base-file-references-missing-file /usr/share/doc/binary/html/ch4.html [usr/share/doc-base/binary:25]
+binary (binary): doc-base-file-references-missing-file /usr/share/doc/binary/hml/*.html [usr/share/doc-base/binary:31]
+binary (binary): doc-base-file-references-missing-file /usr/share/doc/binary/binary.txt [usr/share/doc-base/binary:21]
+binary (binary): doc-base-file-references-missing-file /usr/share/doc/binary/binary.sgml.gz [usr/share/doc-base/binary:17]
+binary (binary): doc-base-file-no-index [usr/share/doc-base/binary:35]
+binary (binary): doc-base-file-no-format-section [usr/share/doc-base/space ]
+binary (binary): doc-base-file-no-format [usr/share/doc-base/binary:26]
+binary (binary): doc-base-file-lacks-required-field Format [usr/share/doc-base/binary:26]
+binary (binary): doc-base-file-lacks-required-field Files [usr/share/doc-base/binary:26]
+binary (binary): doc-base-file-lacks-required-field Files [usr/share/doc-base/binary:22]
+binary (binary): doc-base-document-field-ends-in-whitespace [usr/share/doc-base/binary:1]
+binary (binary): doc-base-abstract-field-separator-extra-whitespace [usr/share/doc-base/binary:7]
diff --git a/t/recipes/checks/menus/legacy-binary/eval/post-test b/t/recipes/checks/menus/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/debian/changelog.in b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b79c4ca
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/changelog.in
@@ -0,0 +1,78 @@
+filenames ([% $version %]) [% $distribution %]; urgency=low
+
+ * /me is doing a correct NMU of this package, bumping the epoch too.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200
+
+filenames (11) unstable; urgency=low
+
+ * Add a README.macos.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200
+
+filenames (10) unstable; urgency=low
+
+ * Some new files to check the checks for the use of /usr/*/X11 and
+ /usr/X11R6/*.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200
+
+filenames (9) unstable; urgency=low
+
+ * Add a two *.ali files, one with the right permission, one with
+ the more common, but false one.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200
+
+filenames (8) unstable; urgency=low
+
+ * Add a real ancient file
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200
+
+filenames (7) unstable; urgency=low
+
+ * Add a dozen symlinks, some correct, some not
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100
+
+filenames (6) unstable; urgency=low
+
+ * Add perl files to check if
+ package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly
+ issued even after attempting to suppress it in some cases
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100
+
+filenames (5) unstable; urgency=low
+
+ * Added check for too long symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800
+
+filenames (4) unstable; urgency=low
+
+ * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag.
+ * Add /usr/lib/menu/README to test the new execption for it.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200
+
+filenames (3) unstable; urgency=low
+
+ * Don't rely on the installer's umask.
+
+ -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200
+
+filenames (2) unstable; urgency=low
+
+ * Noted more limitations on what filenames lintian handles.
+ * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz
+ to Changes.gz.
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200
+
+filenames (1) unstable; urgency=low
+
+ * Initial version
+
+ -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/debian/control b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/control
new file mode 100644
index 0000000..1ff9c50
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: filenames
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+
+Package: filenames
+Architecture: any
+Description: see how lintian reacts to weird filenames
+ This package contains files with the most evil names I could find,
+ except for ones that lintian is explicitly not designed to handle.
+ .
+ Lintian does not handle filenames containing newlines, or filenames
+ that contain the strings " link to ", " -> ", or ": ". The last one
+ is used as a separator by the file command, the others are used as
+ separators by tar.
+ .
+ Lintian also does not handle filenames that contain backslashes, or
+ other characters that are mangled by tar's -tv output.
+
+Package: filename-games
+Architecture: all
+Depends: filenames
+Section: games
+Description: Test game filename/location checks
+ This package contains files with slightly less evil names than
+ filenames.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: more-filename-games
+Architecture: all
+Depends: filenames, filename-games
+Section: games
+Priority: optional
+Description: More test for game filename/location checks
+ This package contains no evil names, only evil locations.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/debian/doc-base b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/doc-base
new file mode 100644
index 0000000..e5a611b
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/doc-base
@@ -0,0 +1,11 @@
+Document: testing
+Title: Working doc-base control file
+Author: Russ Allbery
+Abstract: This control file ensures that we don't get false positives for
+ correct doc-base files.
+ .
+ There isn't anything wrong with this one.
+Section: Education
+
+Format: Text
+Files: /usr/share/doc/filenames/README.macosx
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/debian/rules b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/rules
new file mode 100755
index 0000000..0b9e87c
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/debian/rules
@@ -0,0 +1,231 @@
+#!/usr/bin/make -f
+
+# Copyright (C) 1998 Richard Braakman
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+clean:
+ mkdir -p .svn CVS "{arch}" .arch-ids .bzr
+ touch data/.cvsignore data/svn-commit.tmp data/svk-commitsEr9P.tmp
+ touch data/.arch-inventory
+ touch 'data/.#Maelstrom Sound.1.1.1' 'data/Maelstrom Sounce.r121'
+ touch 'data/Maelstrom Sound.mine'
+ touch "data/'\\ "
+ touch filenames.c~
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ cp -a data debian/tmp/files
+ chmod -R go=rX debian/tmp/files
+
+ install -d debian/tmp/usr/lib/filenames
+ install -m 555 -d debian/tmp/usr/lib/filenames/readonly
+ touch debian/tmp/usr/lib/filenames/readonly/test
+
+ install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
+ touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
+ touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
+ chmod 644 debian/tmp/usr/lib/menu/*
+
+ install -d debian/tmp/$(VENDORARCH)/foo
+ mkdir debian/tmp/$(VENDORARCH)/.svn
+ mkdir debian/tmp/$(VENDORARCH)/CVS
+ mkdir "debian/tmp/$(VENDORARCH)/{arch}"
+ mkdir debian/tmp/$(VENDORARCH)/.arch-ids
+ mkdir debian/tmp/$(VENDORARCH)/.bzr
+ mkdir debian/tmp/$(VENDORARCH)/.be
+ mkdir debian/tmp/$(VENDORARCH)/.ditrack
+ install -d debian/tmp/usr/share/perl5
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags
+ echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt
+
+ touch debian/tmp/$(VENDORARCH)/foo/.packlist
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist
+ touch debian/tmp/$(VENDORARCH)/foo/bar.pm
+ TZ=UTC touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm
+ chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm
+
+ install -d debian/tmp/usr/share/pixmaps
+ install -d debian/tmp/usr/share/pixmaps/foo
+ touch debian/tmp/usr/share/pixmaps/license.jpeg
+ touch debian/tmp/usr/share/pixmaps/licence.jpg
+ touch debian/tmp/usr/share/pixmaps/copying.xpm
+ touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg
+ touch debian/tmp/usr/share/pixmaps/foo/copying.png
+ touch debian/tmp/usr/share/pixmaps/license.txt
+ touch debian/tmp/usr/share/pixmaps/license.foo
+ touch debian/tmp/usr/share/pixmaps/COPYING
+
+ install -d debian/tmp/usr/share/linda/overrides
+ echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames
+
+ install -d debian/tmp/usr/share/doc/filenames
+ touch debian/tmp/usr/share/doc/filenames/README.macosx
+
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\Ã¥l
+ echo foo > debian/tmp/usr/share/doc/filenames/bokmål
+ echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål
+
+ echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db
+ echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store
+ echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian
+
+ touch debian/tmp/usr/share/doc/filenames/news.debian
+ gzip -n debian/tmp/usr/share/doc/filenames/news.debian
+ touch debian/tmp/usr/share/doc/filenames/NEWS.Debian
+
+ echo foo > debian/tmp/usr/share/doc/filenames/link-one
+ ln debian/tmp/usr/share/doc/filenames/link-one \
+ debian/tmp/usr/share/doc/filenames/link-two
+
+ install -d debian/tmp/usr/share/doc/filenames/examples
+ touch debian/tmp/usr/share/doc/filenames/examples/__init__.py
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example
+ touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+ gzip -n debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2
+
+ install -d debian/tmp/usr/lib/ada/adalib/
+ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali
+ chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali
+ chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali
+
+ install -d debian/tmp/usr/bin/X11/
+ touch debian/tmp/usr/bin/X11/testxbin
+ install -d debian/tmp/usr/X11R6/bin
+ touch debian/tmp/usr/X11R6/bin/testxbin2
+ install -d debian/tmp/usr/include/X11
+ touch debian/tmp/usr/include/X11/foo.h
+
+ install -d debian/tmp/usr/bin/mh
+ touch debian/tmp/usr/bin/mh/read
+ chmod 755 debian/tmp/usr/bin/mh/read
+ install -d debian/tmp/usr/bin/bin
+ touch debian/tmp/usr/bin/bin/bad
+ chmod 755 debian/tmp/usr/bin/bin/bad
+
+ install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/Changes
+ ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz
+
+ install -d debian/tmp/var/www
+ echo foo > debian/tmp/var/www/foo
+
+ install -d debian/tmp/srv/foo
+ touch debian/tmp/srv/foo/bar
+ install -d debian/tmp/opt/foo
+ touch debian/tmp/opt/foo/bar
+
+ install -d debian/tmp/etc/gconf/schemas
+ touch debian/tmp/etc/gconf/schemas/test.schema
+
+ install -d debian/tmp/usr/lib/sgml
+ touch debian/tmp/usr/lib/sgml/package
+
+ install -d debian/tmp/usr/share/gnome/apps/System
+ touch debian/tmp/usr/share/gnome/apps/System/foo.desktop
+
+ install -d debian/tmp/usr/share/filenames
+ touch debian/tmp/usr/share/filenames/jquery.js
+ touch debian/tmp/usr/share/filenames/jquery.lite.js
+ touch debian/tmp/usr/share/filenames/jquery.min.js
+ touch debian/tmp/usr/share/filenames/jquery.pack.js
+ touch debian/tmp/usr/share/filenames/mochikit.js
+ touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js
+ touch debian/tmp/usr/share/filenames/prototype.js
+ touch debian/tmp/usr/share/filenames/prototype.js.gz
+ touch debian/tmp/usr/share/filenames/scriptaculous.js
+ touch debian/tmp/usr/share/filenames/yahoo-dom-event.js
+ touch debian/tmp/usr/share/filenames/yahoo-min.js
+
+ ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz
+ ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok
+ ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong
+ ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong
+ ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok
+ ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong
+ ln -s test debian/tmp/usr/lib/filenames/symlink3ok
+ ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong
+ ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong
+ ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok
+ ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong
+ ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong
+ ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong
+ ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong
+ ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn
+ ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn
+ ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn
+ ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong
+
+# devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books
+# are okay. Files elsewhere are okay iff their parent path is symlinked into
+# one of those paths.
+ install -d debian/tmp/usr/share/devhelp/books/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ gzip -n -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2
+ install -d debian/tmp/usr/share/gtk-doc/html/filenames
+ echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ gzip -n -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp
+ install -d debian/tmp/usr/share/doc/filenames/good-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2
+ install -d debian/tmp/usr/share/doc/filenames/bad-devhelp
+ echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ gzip -n -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp
+ ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good
+ ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad
+
+ install -d debian/tmp/usr/share/doc-base
+ install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames
+
+ dpkg-gencontrol -pfilenames -Pdebian/tmp
+ dpkg --build debian/tmp ..
+
+ install -d debian/filename-games debian/filename-games/DEBIAN
+ install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin
+ echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game
+ chmod 755 debian/filename-games/usr/bin/test-game
+ dpkg-gencontrol -pfilename-games -Pdebian/filename-games
+ dpkg --build debian/filename-games ..
+
+ install -d debian/more-filename-games debian/more-filename-games/DEBIAN
+ install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin
+ echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game
+ echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game
+ chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game
+ dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games
+ dpkg --build debian/more-filename-games ..
+
+binary: binary-arch binary-indep
+
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/fill-values b/t/recipes/checks/menus/legacy-filenames/build-spec/fill-values
new file mode 100644
index 0000000..062a1ea
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-filenames
+Source: filenames
+Version: 1:12-0.1
+Description: Legacy test "filenames"
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/ .tif b/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/ .tif
new file mode 100644
index 0000000..07fd914
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/ .tif
@@ -0,0 +1,2 @@
+This filename was inspired by the ".tif used by fnlib. The real package
+uses space.tif.
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/".tif b/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/".tif
new file mode 100644
index 0000000..e005775
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/".tif
@@ -0,0 +1 @@
+This filename is really used, by fnlib.
diff --git a/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/Maelstrom Sound b/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/Maelstrom Sound
new file mode 100644
index 0000000..4110410
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/build-spec/orig/data/Maelstrom Sound
@@ -0,0 +1 @@
+This filename occurs in the maelstrom package.
diff --git a/t/recipes/checks/menus/legacy-filenames/eval/desc b/t/recipes/checks/menus/legacy-filenames/eval/desc
new file mode 100644
index 0000000..1996c48
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-filenames
+Check: menus
diff --git a/t/recipes/checks/menus/legacy-filenames/eval/hints b/t/recipes/checks/menus/legacy-filenames/eval/hints
new file mode 100644
index 0000000..e63e8f0
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/eval/hints
@@ -0,0 +1,4 @@
+filenames (binary): postinst-does-not-call-updatemenus [usr/share/menu/menu]
+filenames (binary): menu-file-in-usr-lib [usr/lib/menu/menu]
+filenames (binary): bad-menu-file-name [usr/share/menu/menu]
+filenames (binary): bad-menu-file-name [usr/lib/menu/menu]
diff --git a/t/recipes/checks/menus/legacy-filenames/eval/post-test b/t/recipes/checks/menus/legacy-filenames/eval/post-test
new file mode 100644
index 0000000..571e35d
--- /dev/null
+++ b/t/recipes/checks/menus/legacy-filenames/eval/post-test
@@ -0,0 +1,3 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/package-installs-packlist/ d
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/control.in b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/control.in
new file mode 100644
index 0000000..2e815d0
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/control.in
@@ -0,0 +1,38 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, [% $source %]-dependency
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dependency
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (dependency)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is a dependency for [% $source %]
+
+Package: [% $source %]-not-a-dependency
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (not a dependency)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This is not a dependency for [% $source %]
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/doc-base b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/doc-base
new file mode 100644
index 0000000..ff017e2
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/doc-base
@@ -0,0 +1,13 @@
+Document: example
+Title: An example doc-base control file
+Author: Chris Lamb
+Section: Help
+
+Format: HTML
+Index: /usr/share/doc/menus-doc-base-file-references-missing-file/documentation.txt
+Files:
+ /missing
+ /usr/share/doc/menus-doc-base-file-references-missing-file/documentation.txt
+ /usr/share/doc/menus-doc-base-file-references-missing-file/documentatio?.t*t
+ /usr/share/doc/menus-doc-base-file-references-missing-file-dependency/documentation.txt
+ /usr/share/doc/menus-doc-base-file-references-missing-file-not-a-dependency/documentation.txt
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/rules b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/rules
new file mode 100644
index 0000000..1383288
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+MAIN = $(shell dh_listpackages | head -n1)
+DEPENDENCY = $(MAIN)-dependency
+NOT_A_DEPENDENCY = $(MAIN)-not-a-dependency
+
+%:
+ dh $@
+
+override_dh_installdocs:
+ dh_installdocs -p$(MAIN) documentation.txt
+ dh_installdocs -p$(DEPENDENCY) documentation.txt
+ dh_installdocs -p$(NOT_A_DEPENDENCY) documentation.txt
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/fill-values b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/fill-values
new file mode 100644
index 0000000..11e92fe
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: menus-doc-base-file-references-missing-file
+Description: check for missing files in doc-base
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/orig/documentation.txt b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/orig/documentation.txt
new file mode 100644
index 0000000..82f7692
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/build-spec/orig/documentation.txt
@@ -0,0 +1 @@
+This is example documentation.
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/desc b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/desc
new file mode 100644
index 0000000..b255650
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: menus-doc-base-file-references-missing-file
+Check: menus
diff --git a/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/hints b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/hints
new file mode 100644
index 0000000..e5142fe
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-file-references-missing-file/eval/hints
@@ -0,0 +1,3 @@
+menus-doc-base-file-references-missing-file (binary): doc-base-file-references-wrong-path /missing [usr/share/doc-base/menus-doc-base-file-references-missing-file.example:13]
+menus-doc-base-file-references-missing-file (binary): doc-base-file-references-missing-file /usr/share/doc/menus-doc-base-file-references-missing-file-not-a-dependency/documentation.txt [usr/share/doc-base/menus-doc-base-file-references-missing-file.example:13]
+menus-doc-base-file-references-missing-file (binary): doc-base-file-references-missing-file /missing [usr/share/doc-base/menus-doc-base-file-references-missing-file.example:13]
diff --git a/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc1 b/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc1
new file mode 100644
index 0000000..947e56c
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc1
@@ -0,0 +1,8 @@
+Document: doc1
+Title: Document 1
+Author: Lintian maintainers
+Abstract: Document 1
+Section: Programming/Something
+
+Format: text
+Files: /usr/share/doc/menus-doc-base-general/doc1.txt
diff --git a/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc2 b/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc2
new file mode 100644
index 0000000..6dcc2f5
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/doc-base.doc2
@@ -0,0 +1,18 @@
+
+Document: doc2
+Title: Document 2
+Author: Lintian maintainers
+Author: Duplicate field... oops.
+Abstract: Document 2
+ Blah bla manage online manuals Debian blah bla
+ .
+ The second line is totally a template. Oh yeah, a space too
+ much on the " ."-line followed by wrong indentation.
+Section: Apps/Programming
+
+
+
+Format: text
+Files: /usr/share/doc/menus-doc-base-general/doc2.txt
+
+oops, this is a syntax error.
diff --git a/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/docs b/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/docs
new file mode 100644
index 0000000..d411609
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/build-spec/debian/docs
@@ -0,0 +1,2 @@
+doc1.txt
+doc2.txt
diff --git a/t/recipes/checks/menus/menus-doc-base-general/build-spec/fill-values b/t/recipes/checks/menus/menus-doc-base-general/build-spec/fill-values
new file mode 100644
index 0000000..690b230
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: menus-doc-base-general
+Description: Test some doc-base related tags
+# doc-base installation paths now include the package name, see Bug#980903
+Extra-Build-Depends: debhelper (>= 13.4)
diff --git a/t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc1.txt b/t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc1.txt
new file mode 100644
index 0000000..5071182
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc1.txt
@@ -0,0 +1 @@
+Document 1
diff --git a/t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc2.txt b/t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc2.txt
new file mode 100644
index 0000000..b0374f0
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/build-spec/orig/doc2.txt
@@ -0,0 +1 @@
+Document 2
diff --git a/t/recipes/checks/menus/menus-doc-base-general/eval/desc b/t/recipes/checks/menus/menus-doc-base-general/eval/desc
new file mode 100644
index 0000000..3360ebc
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: menus-doc-base-general
+Test-Against: doc-base-unknown-section
+See-Also: Debian Bug#495836
+Check: menus
diff --git a/t/recipes/checks/menus/menus-doc-base-general/eval/hints b/t/recipes/checks/menus/menus-doc-base-general/eval/hints
new file mode 100644
index 0000000..795a26d
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-general/eval/hints
@@ -0,0 +1,8 @@
+menus-doc-base-general (binary): duplicate-field-in-doc-base Author [usr/share/doc-base/menus-doc-base-general.doc2:5]
+menus-doc-base-general (binary): doc-base-uses-applications-section Apps/Programming [usr/share/doc-base/menus-doc-base-general.doc2:11]
+menus-doc-base-general (binary): doc-base-file-syntax-error [usr/share/doc-base/menus-doc-base-general.doc2:18]
+menus-doc-base-general (binary): doc-base-file-separator-extra-whitespace [usr/share/doc-base/menus-doc-base-general.doc2:13]
+menus-doc-base-general (binary): doc-base-document-field-not-in-first-line [usr/share/doc-base/menus-doc-base-general.doc2:2]
+menus-doc-base-general (binary): doc-base-abstract-might-contain-extra-leading-whitespace [usr/share/doc-base/menus-doc-base-general.doc2:10]
+menus-doc-base-general (binary): doc-base-abstract-field-separator-extra-whitespace [usr/share/doc-base/menus-doc-base-general.doc2:8]
+menus-doc-base-general (binary): doc-base-abstract-field-is-template [usr/share/doc-base/menus-doc-base-general.doc2:10]
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/control.in b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/control.in
new file mode 100644
index 0000000..39c74c9
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/control.in
@@ -0,0 +1,23 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-pdf
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- pdf doc
+ This is a test package with fake pdf documentation designed to exercise
+ some feature or tag of Lintian. It is part of the Lintian test suite and
+ may do very odd things. It should not be installed like a regular package.
+
+Package: [% $source %]-html
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- html doc
+ This is a test package with fake html documentation designed to exercise
+ some feature or tag of Lintian. It is part of the Lintian test suite and
+ may do very odd things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-html.docs b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-html.docs
new file mode 100644
index 0000000..3e1708f
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-html.docs
@@ -0,0 +1 @@
+doc1.html
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-pdf.install b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-pdf.install
new file mode 100644
index 0000000..c78f14e
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/debian/menus-doc-base-registration-pdf.install
@@ -0,0 +1 @@
+doc2.pdf /usr/share/doc/foo/
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/build-spec/fill-values b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/fill-values
new file mode 100644
index 0000000..78a0208
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: menus-doc-base-registration
+Description: Test some doc-base registration related tags
+# doc-base installation paths now include the package name, see Bug#980903
+Extra-Build-Depends: debhelper (>= 13.4)
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc1.html b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc1.html
new file mode 100644
index 0000000..3b18e51
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc1.html
@@ -0,0 +1 @@
+hello world
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc2.pdf b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc2.pdf
new file mode 100644
index 0000000..3b18e51
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/build-spec/orig/doc2.pdf
@@ -0,0 +1 @@
+hello world
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/eval/desc b/t/recipes/checks/menus/menus-doc-base-registration/eval/desc
new file mode 100644
index 0000000..fb62c9a
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/eval/desc
@@ -0,0 +1,2 @@
+Testname: menus-doc-base-registration
+Check: menus
diff --git a/t/recipes/checks/menus/menus-doc-base-registration/eval/hints b/t/recipes/checks/menus/menus-doc-base-registration/eval/hints
new file mode 100644
index 0000000..d5f2c47
--- /dev/null
+++ b/t/recipes/checks/menus/menus-doc-base-registration/eval/hints
@@ -0,0 +1,2 @@
+menus-doc-base-registration-pdf (binary): possible-documentation-but-no-doc-base-registration
+menus-doc-base-registration-html (binary): possible-documentation-but-no-doc-base-registration
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postinst b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postinst
new file mode 100644
index 0000000..ed633f7
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+
+install-docs
+update-menus
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postrm b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postrm
new file mode 100644
index 0000000..d3027f5
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/postrm
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+if which install-docs >/dev/null 2>&1 ; then
+ install-docs
+fi
+
+if which update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/preinst b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/preinst
new file mode 100644
index 0000000..d3027f5
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/preinst
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+if which install-docs >/dev/null 2>&1 ; then
+ install-docs
+fi
+
+if which update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/prerm b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/prerm
new file mode 100644
index 0000000..d3027f5
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/debian/prerm
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+if which install-docs >/dev/null 2>&1 ; then
+ install-docs
+fi
+
+if which update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/fill-values b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/fill-values
new file mode 100644
index 0000000..cbf8555
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: menus-foo-calls-bar
+Description: check for installdocs and updatemenus calls
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/eval/desc b/t/recipes/checks/menus/menus-foo-calls-bar/eval/desc
new file mode 100644
index 0000000..5e67f88
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: menus-foo-calls-bar
+Check: menus
diff --git a/t/recipes/checks/menus/menus-foo-calls-bar/eval/hints b/t/recipes/checks/menus/menus-foo-calls-bar/eval/hints
new file mode 100644
index 0000000..cd3eee4
--- /dev/null
+++ b/t/recipes/checks/menus/menus-foo-calls-bar/eval/hints
@@ -0,0 +1,10 @@
+menus-foo-calls-bar (binary): prerm-has-useless-call-to-install-docs [prerm:5]
+menus-foo-calls-bar (binary): prerm-calls-updatemenus [prerm:9]
+menus-foo-calls-bar (binary): preinst-calls-updatemenus [preinst:9]
+menus-foo-calls-bar (binary): preinst-calls-installdocs [preinst:5]
+menus-foo-calls-bar (binary): postrm-has-useless-call-to-update-menus [postrm:9]
+menus-foo-calls-bar (binary): postrm-calls-installdocs [postrm:5]
+menus-foo-calls-bar (binary): postinst-has-useless-call-to-update-menus [postinst:5]
+menus-foo-calls-bar (binary): postinst-has-useless-call-to-install-docs [postinst:4]
+menus-foo-calls-bar (binary): maintainer-script-does-not-check-for-existence-of-updatemenus [postinst:5]
+menus-foo-calls-bar (binary): maintainer-script-does-not-check-for-existence-of-installdocs [postinst:4]
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/install b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/install
new file mode 100644
index 0000000..1d3c127
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/install
@@ -0,0 +1,5 @@
+debian/test-doc.txt usr/share/doc/menus-script-check-ok
+debian/test-doc usr/share/doc-base
+debian/test-menu usr/share/menu
+debian/test-script usr/bin
+debian/test-script.1 usr/share/man/man1
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postinst b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postinst
new file mode 100644
index 0000000..9907569
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+
+# Checks that the maintainer script checks for the existence of programs that
+# it calls. This should produce no warnings except a bashism warning about
+# using type, a warning about the deprecated wm-menu-config invocation, and a
+# warning for calling the deprecated install-docs outside of a trigger.
+if [ -x /usr/bin/update-menus ] ; then
+ update-menus
+fi
+if type install-docs >/dev/null 2>&1 ; then
+ install-docs -i /usr/share/doc-base/test-doc
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postrm b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postrm
new file mode 100644
index 0000000..c2274f3
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/postrm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if type update-menus >/dev/null 2>&1 ; then
+ update-menus
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/prerm b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/prerm
new file mode 100644
index 0000000..8618321
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/prerm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+if [ -x "`which install-docs 2>/dev/null`" ] ; then
+ install-docs -r test-doc
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc
new file mode 100644
index 0000000..4a133c4
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc
@@ -0,0 +1,8 @@
+Document: test-doc
+Title: Test document for Lintian test
+Author: Russ Allbery
+Abstract: This is just a test document
+Section: Debian
+
+Format: text
+Files: /usr/share/doc/menus-script-check-ok/test-doc.txt
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc.txt b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc.txt
new file mode 100644
index 0000000..a0f31e8
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-doc.txt
@@ -0,0 +1 @@
+This is a test document.
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-menu b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-menu
new file mode 100644
index 0000000..9da38aa
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-menu
@@ -0,0 +1,5 @@
+?package(menus-script-check-ok):\
+ section="Applications/Programming"\
+ needs="text"\
+ title="Test menu entry"\
+ command="/usr/bin/test-script"
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script
new file mode 100644
index 0000000..f5da270
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'This script does nothing.'
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script.1 b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script.1
new file mode 100644
index 0000000..f9e84b6
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/debian/test-script.1
@@ -0,0 +1,7 @@
+.TH test-script 1
+.SH NAME
+test\-script \- some test script
+.SH SYNOPSIS
+.B test\-script
+.SH DESCRIPTION
+Some test script.
diff --git a/t/recipes/checks/menus/menus-script-check-ok/build-spec/fill-values b/t/recipes/checks/menus/menus-script-check-ok/build-spec/fill-values
new file mode 100644
index 0000000..1c027d8
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: menus-script-check-ok
+Description: Correct program checks in maintainer scripts
diff --git a/t/recipes/checks/menus/menus-script-check-ok/eval/desc b/t/recipes/checks/menus/menus-script-check-ok/eval/desc
new file mode 100644
index 0000000..f2854c0
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/eval/desc
@@ -0,0 +1,5 @@
+Testname: menus-script-check-ok
+Test-Against:
+ maintainer-script-does-not-check-for-existence-of-installdocs
+ maintainer-script-does-not-check-for-existence-of-updatemenus
+Check: menus
diff --git a/t/recipes/checks/menus/menus-script-check-ok/eval/hints b/t/recipes/checks/menus/menus-script-check-ok/eval/hints
new file mode 100644
index 0000000..64324cb
--- /dev/null
+++ b/t/recipes/checks/menus/menus-script-check-ok/eval/hints
@@ -0,0 +1,2 @@
+menus-script-check-ok (binary): prerm-has-useless-call-to-install-docs [prerm:4]
+menus-script-check-ok (binary): postinst-has-useless-call-to-install-docs [postinst:12]
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/NEWS.Debian b/t/recipes/checks/menus/national-encoding/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/README.Debian b/t/recipes/checks/menus/national-encoding/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/changelog.in b/t/recipes/checks/menus/national-encoding/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/conffiles b/t/recipes/checks/menus/national-encoding/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/control b/t/recipes/checks/menus/national-encoding/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/copyright b/t/recipes/checks/menus/national-encoding/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/doc-base b/t/recipes/checks/menus/national-encoding/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/goodbye.desktop b/t/recipes/checks/menus/national-encoding/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/hello.desktop b/t/recipes/checks/menus/national-encoding/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/menu b/t/recipes/checks/menus/national-encoding/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/menu-method b/t/recipes/checks/menus/national-encoding/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/postinst b/t/recipes/checks/menus/national-encoding/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/rules b/t/recipes/checks/menus/national-encoding/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/debian/templates b/t/recipes/checks/menus/national-encoding/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/fill-values b/t/recipes/checks/menus/national-encoding/build-spec/fill-values
new file mode 100644
index 0000000..b109ac2
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: national-encoding
+Source: binary
+Version: 4-1.1
+Description: National encoding in doc-base
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/orig/INSTALL b/t/recipes/checks/menus/national-encoding/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/orig/Makefile b/t/recipes/checks/menus/national-encoding/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/menus/national-encoding/build-spec/orig/hello.c b/t/recipes/checks/menus/national-encoding/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/menus/national-encoding/eval/desc b/t/recipes/checks/menus/national-encoding/eval/desc
new file mode 100644
index 0000000..7c0d4e9
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/eval/desc
@@ -0,0 +1,2 @@
+Testname: national-encoding
+Check: menus
diff --git a/t/recipes/checks/menus/national-encoding/eval/hints b/t/recipes/checks/menus/national-encoding/eval/hints
new file mode 100644
index 0000000..2168022
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/eval/hints
@@ -0,0 +1,5 @@
+binary (binary): postrm-does-not-call-updatemenus [etc/menu-methods/lintian]
+binary (binary): postinst-does-not-call-updatemenus [usr/share/menu/binary]
+binary (binary): menu-method-lacks-include [etc/menu-methods/lintian]
+binary (binary): menu-file-in-usr-lib [usr/lib/menu/binary]
+binary (binary): doc-base-file-no-format-section [usr/share/doc-base/space ]
diff --git a/t/recipes/checks/menus/national-encoding/eval/post-test b/t/recipes/checks/menus/national-encoding/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/menus/national-encoding/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/changelog.in b/t/recipes/checks/menus/spelling-general/build-spec/debian/changelog.in
new file mode 100644
index 0000000..2d380f5
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/changelog.in
@@ -0,0 +1,13 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+ * This line has a speling error.
+ - This line has the same speling error, but we should only
+ get one tag for it.
+ * Corrected spelling: abov -> above.
+ * Corrected typo: abov -> above.
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/copyright b/t/recipes/checks/menus/spelling-general/build-spec/debian/copyright
new file mode 100644
index 0000000..30cbe5c
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/copyright
@@ -0,0 +1,21 @@
+This duplicate duplicate word should not trigger. (re. #897402)
+
+This is part of the testsuite of lintian. See the file debian/copyright
+in the lintian source directory for more details.
+
+Insofar as this is copyrightable, it is:
+
+ Copyright 2010 Russ Allbery <rra@debian.org>
+
+This text should not generate a spelling error for "ment":
+
+ computer software documentation," as such terms are used in
+ 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern-
+ ment only as a commercial end item. Consistent with 48 C.F.R.
+ 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995),
+
+But deafult is still a spelling error.
+
+This text should not generate a spelling error for the duplicate "a" (re. #844166)
+
+ following Attribution Information: (a) a copyright notice including the name
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/doc-base b/t/recipes/checks/menus/spelling-general/build-spec/debian/doc-base
new file mode 100644
index 0000000..3839a9b
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/doc-base
@@ -0,0 +1,9 @@
+Document: spelling-general
+Title: Check for debian doc-base spelling errors
+Author: Russ Allbery
+Abstract: This control file exercises, picky, speling error checks for
+ Debian doc-base files, such as meta-package.
+Section: Programming
+
+Format: text
+Files: /usr/share/doc/spelling-general/copyright
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/add-readme b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/add-readme
new file mode 100644
index 0000000..b1647ba
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/add-readme
@@ -0,0 +1,8 @@
+This is a deliberate speling error. duplicate
+
+duplicate
+
+--- upstream.orig/README
++++ upstream/README
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/nonrel b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/nonrel
new file mode 100644
index 0000000..48e7740
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/nonrel
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; description mentions typo)
+
+--- upstream.orig/nonrel
++++ upstream/nonrel
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/series b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/series
new file mode 100644
index 0000000..0bfb03d
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/series
@@ -0,0 +1,3 @@
+add-readme
+spelling
+nonrel
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/spelling b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/spelling
new file mode 100644
index 0000000..29b9cfd
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/debian/patches/spelling
@@ -0,0 +1,6 @@
+This is a deliberate speling error. (false positive; filename match)
+
+--- upstream.orig/spelling
++++ upstream/spelling
+@@ -0,0 +1 @@
++Added by patch system.
diff --git a/t/recipes/checks/menus/spelling-general/build-spec/fill-values b/t/recipes/checks/menus/spelling-general/build-spec/fill-values
new file mode 100644
index 0000000..5d925c5
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: spelling-general
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: General checks for spelling errors
+# doc-base installation paths now include the package name, see Bug#980903
+Extra-Build-Depends: debhelper (>= 13.4)
diff --git a/t/recipes/checks/menus/spelling-general/eval/desc b/t/recipes/checks/menus/spelling-general/eval/desc
new file mode 100644
index 0000000..e9af29d
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: spelling-general
+Check: menus
diff --git a/t/recipes/checks/menus/spelling-general/eval/hints b/t/recipes/checks/menus/spelling-general/eval/hints
new file mode 100644
index 0000000..57e1f9c
--- /dev/null
+++ b/t/recipes/checks/menus/spelling-general/eval/hints
@@ -0,0 +1,3 @@
+spelling-general (binary): spelling-error-in-doc-base-title-field debian Debian [usr/share/doc-base/spelling-general.spelling-general:2]
+spelling-general (binary): spelling-error-in-doc-base-abstract-field speling spelling [usr/share/doc-base/spelling-general.spelling-general:5]
+spelling-general (binary): spelling-error-in-doc-base-abstract-field meta-package metapackage [usr/share/doc-base/spelling-general.spelling-general:5]
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/desc b/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..35b81d0
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: mimeinfo
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/hints b/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..c11f069
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/hints
@@ -0,0 +1,2 @@
+files-foo-in-bar (binary): package-contains-mime-file-outside-package-dir [usr/share/mime/foo/bar]
+files-foo-in-bar (binary): package-contains-mime-file-outside-package-dir [usr/share/mime/foo/]
diff --git a/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/post-test b/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/clean b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/dirs b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/examples b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/install b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/links b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/manpages b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/debian/rules b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/fill-values b/t/recipes/checks/mimeinfo/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/--lzma b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/dir b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.5 b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/sudotest b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/mimeinfo/files-general/build-spec/orig/types b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/mimeinfo/files-general/eval/desc b/t/recipes/checks/mimeinfo/files-general/eval/desc
new file mode 100644
index 0000000..1c962db
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: mimeinfo
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/mimeinfo/files-general/eval/hints b/t/recipes/checks/mimeinfo/files-general/eval/hints
new file mode 100644
index 0000000..09a8831
--- /dev/null
+++ b/t/recipes/checks/mimeinfo/files-general/eval/hints
@@ -0,0 +1,2 @@
+files-general (binary): package-contains-mimeinfo.cache-file [usr/share/applications/mimeinfo.cache]
+files-general (binary): package-contains-mime-cache-file [usr/share/mime/types]
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/clean b/t/recipes/checks/modprobe/files-general/build-spec/debian/clean
new file mode 100644
index 0000000..222b726
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/clean
@@ -0,0 +1 @@
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/dirs b/t/recipes/checks/modprobe/files-general/build-spec/debian/dirs
new file mode 100644
index 0000000..b76fb64
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/dirs
@@ -0,0 +1,13 @@
+etc
+etc/skel
+usr/bin
+usr/doc
+usr/lib/python3/dist-packages/foo
+usr/share/foo
+usr/share/fonts/X11/misc
+usr/share/glib-2.0/schemas
+usr/share/hal
+usr/share/man/man1/random
+var/catman
+var/lock/lintian
+var/run/lintian
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/examples b/t/recipes/checks/modprobe/files-general/build-spec/debian/examples
new file mode 100644
index 0000000..18fb10f
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/examples
@@ -0,0 +1 @@
+foo.vcproj
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/install b/t/recipes/checks/modprobe/files-general/build-spec/debian/install
new file mode 100644
index 0000000..dccb61e
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/install
@@ -0,0 +1,18 @@
+lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/22x22/apps
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
+lintian-16x16.png usr/share/doc/lintian/
+lintian-22x22.png usr/share/games/icons/hicolor/22x22
+lintian-16x16.png usr/share/icons/hicolor/scalable/apps
+lintian-22x22.png usr/share/icons/16x16/animations/
+--lzma etc/modprobe.d
+lintian.conf etc/modprobe.d
+dir usr/share/info
+foo.vcproj usr/lib/foo
+lintian-lib.conf etc/ld.so.conf.d
+php-foo.ini etc/php/7.0/mods-available
+types usr/share/mime
+mimeinfo.cache usr/share/applications
+file-in-new-top-level-dir new-top-level-dir/
+sudotest etc/sudoers.d/
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/links b/t/recipes/checks/modprobe/files-general/build-spec/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/manpages b/t/recipes/checks/modprobe/files-general/build-spec/debian/manpages
new file mode 100644
index 0000000..e8af11b
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/manpages
@@ -0,0 +1,2 @@
+foo.5
+é³¥ã®è©©.1
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/debian/rules b/t/recipes/checks/modprobe/files-general/build-spec/debian/rules
new file mode 100755
index 0000000..798f01e
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/debian/rules
@@ -0,0 +1,67 @@
+#!/usr/bin/make -f
+
+tmp := $(CURDIR)/debian/$(shell dh_listpackages)
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ echo "#fake conf file" > $(tmp)/etc/pam.conf
+ # true positives
+ touch $(tmp)/etc/skel/.lintianrc
+ # false positives
+ touch $(tmp)/etc/skel/.bashrc
+ touch $(tmp)/etc/skel/.bash_logout
+ touch $(tmp)/etc/skel/.profile
+ touch $(tmp)/etc/skel/.kshrc
+ touch $(tmp)/etc/skel/.mkshrc
+ echo "Back-up file" > $(tmp)/usr/share/foo/file~
+ # The name of the "binary" is "Tori no Uta"
+ # If it is ever messed up, it can be restored by
+ # using something like:
+ # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/'
+ echo "#!/bin/sh" > $(tmp)/usr/bin/é³¥ã®è©©
+ chmod +x $(tmp)/usr/bin/é³¥ã®è©©
+ # Copy the manpage to its correct name so dh_installman can
+ # find it.
+ # - d/clean will remove it again
+ cp -a tnu.1 é³¥ã®è©©.1
+ touch $(tmp)/usr/doc/FSSTND
+ touch $(tmp)/usr/share/foo/'*'
+ touch $(tmp)/usr/share/foo/'ws '
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.scale
+ touch $(tmp)/usr/share/fonts/X11/misc/fonts.alias
+ touch $(tmp)/usr/share/fonts/X11/misc/encodings.dir
+ touch $(tmp)/usr/share/fonts/X11/misc/false-positive
+ touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile
+ touch $(tmp)/usr/share/foo/foo.doctree
+ touch $(tmp)/usr/share/foo/gschemas.compiled
+ touch $(tmp)/usr/share/glib-2.0/schemas/gschemas.compiled
+ touch $(tmp)/usr/share/hal/foo.fdi
+ touch $(tmp)/usr/lib/python3/dist-packages/test_foo.py
+ touch $(tmp)/usr/lib/python3/dist-packages/foo/test_falsepositive.py
+ # If the following line gets messed up, it can be
+ # restored with something like:
+ # sed -i 's/@FILE@/bokm\xe5l/'
+ touch $(tmp)/usr/share/foo/bokmål
+ touch $(tmp)/var/catman/do
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz
+ chmod 644 $(tmp)/etc/sudoers.d/*
+
+override_dh_compress:
+ dh_compress
+ # create a .png and .png.gz
+ gzip -n -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+ zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \
+ $(tmp)/usr/share/doc/lintian/lintian-16x16.png
+
+override_dh_link:
+ dh_link
+ mkdir -p $(tmp)/usr/share/doc/bar
+ echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo
+ ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/fill-values b/t/recipes/checks/modprobe/files-general/build-spec/fill-values
new file mode 100644
index 0000000..45de709
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: files-general
+Description: Test tags for file paths, names, and modes
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/--lzma b/t/recipes/checks/modprobe/files-general/build-spec/orig/--lzma
new file mode 100644
index 0000000..5241aaa
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/--lzma
@@ -0,0 +1,2 @@
+Test file to check that various parts of Lintian correctly handle files with names that look
+like options
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/dir b/t/recipes/checks/modprobe/files-general/build-spec/orig/dir
new file mode 100644
index 0000000..e465d26
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+Archiving
+* Cpio: (cpio). Copy-in-copy-out archiver to tape or disk.
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/file-in-new-top-level-dir b/t/recipes/checks/modprobe/files-general/build-spec/orig/file-in-new-top-level-dir
new file mode 100644
index 0000000..ae82d42
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/file-in-new-top-level-dir
@@ -0,0 +1,2 @@
+Since an empty file triggers "empty-dir" tags; we might as well
+test file-in-unusual-dir together with non-standard-toplevel-dir.
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/foo.5 b/t/recipes/checks/modprobe/files-general/build-spec/orig/foo.5
new file mode 100644
index 0000000..718eae1
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/foo.5
@@ -0,0 +1,5 @@
+.TH FOO "5"
+.SH NAME
+foo \- file format for foo
+.SH DESCRIPTION
+This file can store anything.
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/foo.vcproj b/t/recipes/checks/modprobe/files-general/build-spec/orig/foo.vcproj
new file mode 100644
index 0000000..6ec1ca6
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/foo.vcproj
@@ -0,0 +1 @@
+Not actually a VC project file.
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-16x16.png b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-16x16.png
new file mode 100644
index 0000000..cd7355d
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-16x16.png
Binary files differ
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-22x22.png b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-22x22.png
new file mode 100644
index 0000000..efc9af0
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-22x22.png
Binary files differ
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-lib.conf b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian.conf b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian.conf
new file mode 100644
index 0000000..7f6693c
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/lintian.conf
@@ -0,0 +1 @@
+Test file which should not be flagged by the modprobe.d checks
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/mimeinfo.cache b/t/recipes/checks/modprobe/files-general/build-spec/orig/mimeinfo.cache
new file mode 100644
index 0000000..f3067c5
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/mimeinfo.cache
@@ -0,0 +1,2 @@
+[MIME Cache]
+text/plain=foo-editor.desktop
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/php-foo.ini b/t/recipes/checks/modprobe/files-general/build-spec/orig/php-foo.ini
new file mode 100644
index 0000000..6a33666
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/php-foo.ini
@@ -0,0 +1 @@
+# this style of comments are obsolete
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/sudotest b/t/recipes/checks/modprobe/files-general/build-spec/orig/sudotest
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/sudotest
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/tnu.1 b/t/recipes/checks/modprobe/files-general/build-spec/orig/tnu.1
new file mode 100644
index 0000000..147dc1a
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/tnu.1
@@ -0,0 +1,5 @@
+.TH é³¥ã®è©© "1"
+.SH NAME
+é³¥ã®è©© \- command in PATH written in UTF-8
+.SH DESCRIPTION
+é³¥ã®è©© (Tori no uta) is not really a useful command.
diff --git a/t/recipes/checks/modprobe/files-general/build-spec/orig/types b/t/recipes/checks/modprobe/files-general/build-spec/orig/types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/build-spec/orig/types
diff --git a/t/recipes/checks/modprobe/files-general/eval/desc b/t/recipes/checks/modprobe/files-general/eval/desc
new file mode 100644
index 0000000..057381e
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/eval/desc
@@ -0,0 +1,3 @@
+Testname: files-general
+Check: modprobe
+# tar -t is buggy and does not list \\\ filename
diff --git a/t/recipes/checks/modprobe/files-general/eval/hints b/t/recipes/checks/modprobe/files-general/eval/hints
new file mode 100644
index 0000000..1cf4809
--- /dev/null
+++ b/t/recipes/checks/modprobe/files-general/eval/hints
@@ -0,0 +1 @@
+files-general (binary): non-conf-file-in-modprobe.d [etc/modprobe.d/--lzma]
diff --git a/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/debian/install b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/debian/install
new file mode 100644
index 0000000..0577c69
--- /dev/null
+++ b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/debian/install
@@ -0,0 +1,2 @@
+lintian-install.conf etc/modprobe.d
+lintian-install.conf etc/modules-load.d
diff --git a/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/fill-values b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/fill-values
new file mode 100644
index 0000000..aa5bd2f
--- /dev/null
+++ b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: obsolete-commands-in-modprobe
+Description: Test package with obsolete commands in modprobe.d file
diff --git a/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-install.conf b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-install.conf
new file mode 100644
index 0000000..d47e02f
--- /dev/null
+++ b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-install.conf
@@ -0,0 +1,2 @@
+install modulename command
+remove modulename command
diff --git a/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-lib.conf b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-lib.conf
new file mode 100644
index 0000000..e2b41a8
--- /dev/null
+++ b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/build-spec/orig/lintian-lib.conf
@@ -0,0 +1 @@
+/usr/lib/lintian
diff --git a/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/desc b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/desc
new file mode 100644
index 0000000..2598bb1
--- /dev/null
+++ b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/desc
@@ -0,0 +1,2 @@
+Testname: obsolete-commands-in-modprobe
+Check: modprobe
diff --git a/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/hints b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/hints
new file mode 100644
index 0000000..e1b77bb
--- /dev/null
+++ b/t/recipes/checks/modprobe/obsolete-commands-in-modprobe/eval/hints
@@ -0,0 +1,4 @@
+obsolete-commands-in-modprobe (binary): obsolete-command-in-modprobe.d-file remove [etc/modules-load.d/lintian-install.conf]
+obsolete-commands-in-modprobe (binary): obsolete-command-in-modprobe.d-file remove [etc/modprobe.d/lintian-install.conf]
+obsolete-commands-in-modprobe (binary): obsolete-command-in-modprobe.d-file install [etc/modules-load.d/lintian-install.conf]
+obsolete-commands-in-modprobe (binary): obsolete-command-in-modprobe.d-file install [etc/modprobe.d/lintian-install.conf]
diff --git a/t/recipes/checks/nmu/changelog-file-symlink/build-spec/fill-values b/t/recipes/checks/nmu/changelog-file-symlink/build-spec/fill-values
new file mode 100644
index 0000000..bfeebce
--- /dev/null
+++ b/t/recipes/checks/nmu/changelog-file-symlink/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-non-native
+Testname: changelog-file-symlink
+Source-Format: 3.0 (quilt)
+Description: Test for d/changelog being a symlink
diff --git a/t/recipes/checks/nmu/changelog-file-symlink/build-spec/pre-build b/t/recipes/checks/nmu/changelog-file-symlink/build-spec/pre-build
new file mode 100755
index 0000000..ef27d29
--- /dev/null
+++ b/t/recipes/checks/nmu/changelog-file-symlink/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+dir="$1"
+
+mv "$dir/debian/changelog" "$dir/debian/changelog.old"
+ln -sf changelog.old "$dir/debian/changelog"
diff --git a/t/recipes/checks/nmu/changelog-file-symlink/eval/desc b/t/recipes/checks/nmu/changelog-file-symlink/eval/desc
new file mode 100644
index 0000000..039a069
--- /dev/null
+++ b/t/recipes/checks/nmu/changelog-file-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: changelog-file-symlink
+Check: nmu
diff --git a/t/recipes/checks/nmu/changelog-file-symlink/eval/hints b/t/recipes/checks/nmu/changelog-file-symlink/eval/hints
new file mode 100644
index 0000000..8bb4595
--- /dev/null
+++ b/t/recipes/checks/nmu/changelog-file-symlink/eval/hints
@@ -0,0 +1 @@
+changelog-file-symlink (source): changelog-is-symlink [debian/changelog]
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b341aab
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * QA Upload.
+ * Lintian Test Suite.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in
new file mode 100644
index 0000000..39e7740
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://git.dgit.debian.org/python-ofxhome
+Vcs-Browser: https://browse.dgit.debian.org/python-ofxhome.git
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values
new file mode 100644
index 0000000..6561c1e
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure-fp
+Description: Test for orphaned package not maintained in Debian infrastucture
+Package-Architecture: all
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc
new file mode 100644
index 0000000..d8eb934
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure-fp
+Test-Against: no-qa-in-changelog
+Check: nmu
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure-fp/eval/hints
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b341aab
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/changelog.in
@@ -0,0 +1,7 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * QA Upload.
+ * Lintian Test Suite.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in
new file mode 100644
index 0000000..a553c3a
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Vcs-Git: https://github.com/user/project
+Vcs-Browser: https://github.com/user/project
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values
new file mode 100644
index 0000000..4dfa4f3
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure
+Description: Test for orphaned package not maintained in Debian infrastucture
+Package-Architecture: all
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc
new file mode 100644
index 0000000..68103a2
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/desc
@@ -0,0 +1,3 @@
+Testname: fields-orphaned-package-not-maintained-in-debian-infrastructure
+Test-Against: no-qa-in-changelog
+Check: nmu
diff --git a/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/nmu/fields-orphaned-package-not-maintained-in-debian-infrastructure/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/nmu/generic-empty/build-spec/debian/changelog.in b/t/recipes/checks/nmu/generic-empty/build-spec/debian/changelog.in
new file mode 100644
index 0000000..7a4298d
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/build-spec/debian/changelog.in
@@ -0,0 +1,2 @@
+[% $source %] ([% $version %]) unstable;
+ -- a <> Tue, 30 Dec 2008 17:34:02 -0800
diff --git a/t/recipes/checks/nmu/generic-empty/build-spec/debian/control.in b/t/recipes/checks/nmu/generic-empty/build-spec/debian/control.in
new file mode 100644
index 0000000..575773e
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/build-spec/debian/control.in
@@ -0,0 +1,5 @@
+Source: [% $source %]
+Maintainer: a
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
diff --git a/t/recipes/checks/nmu/generic-empty/build-spec/debian/rules b/t/recipes/checks/nmu/generic-empty/build-spec/debian/rules
new file mode 100755
index 0000000..62da96d
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/build-spec/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+build:
+binary:
+ install -d debian/generic-empty debian/generic-empty/DEBIAN
+ dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty
+ dpkg --build debian/generic-empty ..
+
+clean:
+ rm -rf debian/generic-empty
diff --git a/t/recipes/checks/nmu/generic-empty/build-spec/fill-values b/t/recipes/checks/nmu/generic-empty/build-spec/fill-values
new file mode 100644
index 0000000..26d9bdc
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: generic-empty
+Package-Architecture: all
+Description: Pathological empty package
diff --git a/t/recipes/checks/nmu/generic-empty/build-spec/orig/README b/t/recipes/checks/nmu/generic-empty/build-spec/orig/README
new file mode 100644
index 0000000..ed1b149
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/build-spec/orig/README
@@ -0,0 +1,4 @@
+This is the smallest possible Debian package that I can get
+dpkg-buildpackage to build (with the exception of this documentation).
+It tests Lintian handling of packages that are missing everything one
+would normally expect to have.
diff --git a/t/recipes/checks/nmu/generic-empty/build-spec/pre-build b/t/recipes/checks/nmu/generic-empty/build-spec/pre-build
new file mode 100755
index 0000000..1a3929a
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/build-spec/pre-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Remove as many files from the package as possible.
+
+rm -f "$1/debian/compat"
+rm -f "$1/debian/copyright"
diff --git a/t/recipes/checks/nmu/generic-empty/eval/desc b/t/recipes/checks/nmu/generic-empty/eval/desc
new file mode 100644
index 0000000..60b30b3
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-empty
+Check: nmu
diff --git a/t/recipes/checks/nmu/generic-empty/eval/hints b/t/recipes/checks/nmu/generic-empty/eval/hints
new file mode 100644
index 0000000..c6100bc
--- /dev/null
+++ b/t/recipes/checks/nmu/generic-empty/eval/hints
@@ -0,0 +1,2 @@
+generic-empty (source): source-nmu-has-incorrect-version-number 1.0 [debian/changelog:1]
+generic-empty (source): no-nmu-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/control b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/rules b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/debian/templates b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/fill-values b/t/recipes/checks/nmu/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/nmu/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/nmu/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/nmu/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/nmu/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/nmu/legacy-binary/eval/desc b/t/recipes/checks/nmu/legacy-binary/eval/desc
new file mode 100644
index 0000000..ff7d578
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: nmu
diff --git a/t/recipes/checks/nmu/legacy-binary/eval/hints b/t/recipes/checks/nmu/legacy-binary/eval/hints
new file mode 100644
index 0000000..d8d2a6d
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/eval/hints
@@ -0,0 +1 @@
+binary (source): maintainer-upload-has-incorrect-version-number 4-1.1 [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/legacy-binary/eval/post-test b/t/recipes/checks/nmu/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/nmu/legacy-fields/build-spec/debian/changelog.in b/t/recipes/checks/nmu/legacy-fields/build-spec/debian/changelog.in
new file mode 100644
index 0000000..38fc4e9
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/build-spec/debian/changelog.in
@@ -0,0 +1,10 @@
+fields ([% $version %]) [% $distribution %]; urgency=low
+
+ * This package adds tests for the following tags:
+ - debian-revision-not-well-formed
+ - depends-on-python-minimal
+ - essential-no-not-needed
+ - debian-revision-should-not-be-zero
+ - new-essential-package
+
+ -- Tobias Quathamer <toddy@debian.org> Sun, 10 Apr 2011 14:30:00 +0100
diff --git a/t/recipes/checks/nmu/legacy-fields/build-spec/debian/control b/t/recipes/checks/nmu/legacy-fields/build-spec/debian/control
new file mode 100644
index 0000000..d980a6e
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/build-spec/debian/control
@@ -0,0 +1,28 @@
+Source: fields
+Section: does-not-exist
+Priority: standard
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Standards-Version: 3.9.2
+
+Package: fields
+Essential: no
+Architecture: all
+Depends: python-minimal
+Description: Generate some errors
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: another-version
+Essential: yes
+Section: admin
+Architecture: all
+Description: Also generate some errors
+ This package gets another version number and tries to sneak in a new
+ essential package.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/nmu/legacy-fields/build-spec/debian/rules b/t/recipes/checks/nmu/legacy-fields/build-spec/debian/rules
new file mode 100755
index 0000000..11ad4a7
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/build-spec/debian/rules
@@ -0,0 +1,33 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d $(tmp)/usr/share/doc/fields
+ install -m 644 debian/changelog \
+ $(tmp)/usr/share/doc/fields/changelog
+ gzip -n -9 $(tmp)/usr/share/doc/fields/changelog
+ dh_md5sums -pfields -P$(tmp)
+ dpkg-gencontrol -pfields -P$(tmp)
+ dpkg --build $(tmp) ..
+ rm -rf $(tmp)
+
+ # Create another package with a different version
+ dh_md5sums -panother-version -P$(tmp)
+ dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp)
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/nmu/legacy-fields/build-spec/fill-values b/t/recipes/checks/nmu/legacy-fields/build-spec/fill-values
new file mode 100644
index 0000000..fe90eb0
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-fields
+Source: fields
+Version: 1.5-.3
+Description: Legacy test "fields"
diff --git a/t/recipes/checks/nmu/legacy-fields/eval/desc b/t/recipes/checks/nmu/legacy-fields/eval/desc
new file mode 100644
index 0000000..b3883a0
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-fields
+Check: nmu
diff --git a/t/recipes/checks/nmu/legacy-fields/eval/hints b/t/recipes/checks/nmu/legacy-fields/eval/hints
new file mode 100644
index 0000000..c5159d3
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/eval/hints
@@ -0,0 +1,2 @@
+fields (source): source-nmu-has-incorrect-version-number 1.5-.3 [debian/changelog:1]
+fields (source): no-nmu-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/legacy-fields/eval/post-test b/t/recipes/checks/nmu/legacy-fields/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-fields/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/nmu/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/nmu/legacy-libbaz/eval/desc b/t/recipes/checks/nmu/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..79f591f
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: nmu
diff --git a/t/recipes/checks/nmu/legacy-libbaz/eval/hints b/t/recipes/checks/nmu/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..80bb8eb
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/eval/hints
@@ -0,0 +1,2 @@
+libbaz (source): source-nmu-has-incorrect-version-number 1-1 [debian/changelog:1]
+libbaz (source): no-nmu-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/legacy-libbaz/eval/post-test b/t/recipes/checks/nmu/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..914402b
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: nmu
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..5e511b1
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,3 @@
+maintainer-scripts (source): uploaders-in-orphan [debian/changelog:1]
+maintainer-scripts (source): qa-upload-has-incorrect-version-number 7+dfsg-0.1 [debian/changelog:1]
+maintainer-scripts (source): no-qa-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/fill-values b/t/recipes/checks/nmu/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/nmu/legacy-scripts/build-spec/pre-build b/t/recipes/checks/nmu/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/nmu/legacy-scripts/eval/desc b/t/recipes/checks/nmu/legacy-scripts/eval/desc
new file mode 100644
index 0000000..70bbd38
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: nmu
diff --git a/t/recipes/checks/nmu/legacy-scripts/eval/hints b/t/recipes/checks/nmu/legacy-scripts/eval/hints
new file mode 100644
index 0000000..25ffb9d
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/eval/hints
@@ -0,0 +1,2 @@
+scripts (source): source-nmu-has-incorrect-version-number 6ds-1ubuntu0.5.10.1 [debian/changelog:1]
+scripts (source): no-nmu-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/legacy-scripts/eval/post-test b/t/recipes/checks/nmu/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/nmu/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/nmu/nmu-case-insensitive/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-case-insensitive/build-spec/debian/changelog.in
new file mode 100644
index 0000000..5f95db2
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-case-insensitive/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Russ Allbery <rra@DebIAN.org> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-case-insensitive/build-spec/fill-values b/t/recipes/checks/nmu/nmu-case-insensitive/build-spec/fill-values
new file mode 100644
index 0000000..1471766
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-case-insensitive/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: nmu-case-insensitive
+Author: Russ Allbery <rra@debian.ORG>
+Description: Test case-insensitive matching of e-mail addresses
diff --git a/t/recipes/checks/nmu/nmu-case-insensitive/eval/desc b/t/recipes/checks/nmu/nmu-case-insensitive/eval/desc
new file mode 100644
index 0000000..29e97bb
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-case-insensitive/eval/desc
@@ -0,0 +1,6 @@
+Testname: nmu-case-insensitive
+Test-Against:
+ no-nmu-in-changelog
+ source-nmu-has-incorrect-version-number
+See-Also: Debian Bug#486795
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-case-insensitive/eval/hints b/t/recipes/checks/nmu/nmu-case-insensitive/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-case-insensitive/eval/hints
diff --git a/t/recipes/checks/nmu/nmu-local-changelog/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-local-changelog/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8deb337
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-changelog/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Local package.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-local-changelog/build-spec/fill-values b/t/recipes/checks/nmu/nmu-local-changelog/build-spec/fill-values
new file mode 100644
index 0000000..2f60c73
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-changelog/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nmu-local-changelog
+Description: Test suppression of NMU tags for local packages
diff --git a/t/recipes/checks/nmu/nmu-local-changelog/eval/desc b/t/recipes/checks/nmu/nmu-local-changelog/eval/desc
new file mode 100644
index 0000000..a8519f0
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-changelog/eval/desc
@@ -0,0 +1,6 @@
+Testname: nmu-local-changelog
+Test-Against:
+ no-nmu-in-changelog
+ source-nmu-has-incorrect-version-number
+See-Also: Debian Bug#501523
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-local-changelog/eval/hints b/t/recipes/checks/nmu/nmu-local-changelog/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-changelog/eval/hints
diff --git a/t/recipes/checks/nmu/nmu-local-version/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-local-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8eba4c0
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-version/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-local-version/build-spec/fill-values b/t/recipes/checks/nmu/nmu-local-version/build-spec/fill-values
new file mode 100644
index 0000000..e04302d
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-version/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: nmu-local-version
+Version: 1.0local1
+Description: Test suppression of NMU tags for local packages
diff --git a/t/recipes/checks/nmu/nmu-local-version/eval/desc b/t/recipes/checks/nmu/nmu-local-version/eval/desc
new file mode 100644
index 0000000..ff905af
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-version/eval/desc
@@ -0,0 +1,6 @@
+Testname: nmu-local-version
+Test-Against:
+ no-nmu-in-changelog
+ source-nmu-has-incorrect-version-number
+See-Also: Debian Bug#501523
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-local-version/eval/hints b/t/recipes/checks/nmu/nmu-local-version/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-local-version/eval/hints
diff --git a/t/recipes/checks/nmu/nmu-multi-author/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-multi-author/build-spec/debian/changelog.in
new file mode 100644
index 0000000..0b5f973
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-multi-author/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ [ Russ Allbery ]
+ * Non-maintainer upload.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-multi-author/build-spec/fill-values b/t/recipes/checks/nmu/nmu-multi-author/build-spec/fill-values
new file mode 100644
index 0000000..869f594
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-multi-author/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: nmu-multi-author
+Skeleton: upload-non-native
+Version: 1.0-1.1
+Description: Test an NMU with a multi-author changelog
diff --git a/t/recipes/checks/nmu/nmu-multi-author/eval/desc b/t/recipes/checks/nmu/nmu-multi-author/eval/desc
new file mode 100644
index 0000000..9762774
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-multi-author/eval/desc
@@ -0,0 +1,3 @@
+Testname: nmu-multi-author
+Test-Against: no-nmu-in-changelog
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-multi-author/eval/hints b/t/recipes/checks/nmu/nmu-multi-author/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-multi-author/eval/hints
diff --git a/t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/debian/changelog.in
new file mode 100644
index 0000000..32a3fdd
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/fill-values b/t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/fill-values
new file mode 100644
index 0000000..61a8294
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-not-a-nmu/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: nmu-not-a-nmu
+Description: Test for MU declared as NMU
+Author: Niels Thykier <niels@thykier.net>
diff --git a/t/recipes/checks/nmu/nmu-not-a-nmu/eval/desc b/t/recipes/checks/nmu/nmu-not-a-nmu/eval/desc
new file mode 100644
index 0000000..b953f7e
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-not-a-nmu/eval/desc
@@ -0,0 +1,2 @@
+Testname: nmu-not-a-nmu
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-not-a-nmu/eval/hints b/t/recipes/checks/nmu/nmu-not-a-nmu/eval/hints
new file mode 100644
index 0000000..84edfb2
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-not-a-nmu/eval/hints
@@ -0,0 +1 @@
+nmu-not-a-nmu (source): nmu-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/changelog.in
new file mode 100644
index 0000000..07162ee
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Niels Thykier <niels@thykier.net> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/control.in b/t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/control.in
new file mode 100644
index 0000000..fd4b548
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-qa-upload/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Uploaders: Niels Thykier <niels@thykier.net>
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/nmu/nmu-qa-upload/build-spec/fill-values b/t/recipes/checks/nmu/nmu-qa-upload/build-spec/fill-values
new file mode 100644
index 0000000..4b90c15
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-qa-upload/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: nmu-qa-upload
+Version: 1.0+nmu1
+Description: Test for QA upload issues
+Author: Debian QA Group <packages@qa.debian.org>
diff --git a/t/recipes/checks/nmu/nmu-qa-upload/eval/desc b/t/recipes/checks/nmu/nmu-qa-upload/eval/desc
new file mode 100644
index 0000000..0fbbc41
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-qa-upload/eval/desc
@@ -0,0 +1,2 @@
+Testname: nmu-qa-upload
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-qa-upload/eval/hints b/t/recipes/checks/nmu/nmu-qa-upload/eval/hints
new file mode 100644
index 0000000..efb746a
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-qa-upload/eval/hints
@@ -0,0 +1,3 @@
+nmu-qa-upload (source): uploaders-in-orphan [debian/changelog:1]
+nmu-qa-upload (source): qa-upload-has-incorrect-version-number 1.0+nmu1 [debian/changelog:1]
+nmu-qa-upload (source): no-qa-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/debian/changelog.in
new file mode 100644
index 0000000..0dd3e68
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/debian/changelog.in
@@ -0,0 +1,8 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/fill-values b/t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/fill-values
new file mode 100644
index 0000000..0bf3c54
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-space-around-maintainer/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nmu-space-around-maintainer
+Description: Test for space around maintainer
diff --git a/t/recipes/checks/nmu/nmu-space-around-maintainer/eval/desc b/t/recipes/checks/nmu/nmu-space-around-maintainer/eval/desc
new file mode 100644
index 0000000..6806c25
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-space-around-maintainer/eval/desc
@@ -0,0 +1,2 @@
+Testname: nmu-space-around-maintainer
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-space-around-maintainer/eval/hints b/t/recipes/checks/nmu/nmu-space-around-maintainer/eval/hints
new file mode 100644
index 0000000..82fa72c
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-space-around-maintainer/eval/hints
@@ -0,0 +1 @@
+nmu-space-around-maintainer (source): extra-whitespace-around-name-in-changelog-trailer [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/nmu-team-upload/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-team-upload/build-spec/debian/changelog.in
new file mode 100644
index 0000000..6745296
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-team-upload/build-spec/debian/changelog.in
@@ -0,0 +1,9 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Team upload.
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-team-upload/build-spec/fill-values b/t/recipes/checks/nmu/nmu-team-upload/build-spec/fill-values
new file mode 100644
index 0000000..0da98e2
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-team-upload/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: nmu-team-upload
+Version: 1.0+nmu1
+Description: Test for versioning of a team upload
diff --git a/t/recipes/checks/nmu/nmu-team-upload/eval/desc b/t/recipes/checks/nmu/nmu-team-upload/eval/desc
new file mode 100644
index 0000000..c343108
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-team-upload/eval/desc
@@ -0,0 +1,2 @@
+Testname: nmu-team-upload
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-team-upload/eval/hints b/t/recipes/checks/nmu/nmu-team-upload/eval/hints
new file mode 100644
index 0000000..291b65e
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-team-upload/eval/hints
@@ -0,0 +1 @@
+nmu-team-upload (source): team-upload-has-incorrect-version-number 1.0+nmu1 [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b673fbc
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) lucid; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/fill-values b/t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/fill-values
new file mode 100644
index 0000000..3803ec6
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-ubuntu-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nmu-ubuntu-native
+Description: Test NMU tag suppression for Ubuntu native packages
diff --git a/t/recipes/checks/nmu/nmu-ubuntu-native/eval/desc b/t/recipes/checks/nmu/nmu-ubuntu-native/eval/desc
new file mode 100644
index 0000000..ff098a8
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-ubuntu-native/eval/desc
@@ -0,0 +1,5 @@
+Testname: nmu-ubuntu-native
+Profile: ubuntu/main
+Test-Against: no-nmu-in-changelog
+See-Also: Debian Bug #507740
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-ubuntu-native/eval/hints b/t/recipes/checks/nmu/nmu-ubuntu-native/eval/hints
new file mode 100644
index 0000000..52ce554
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-ubuntu-native/eval/hints
@@ -0,0 +1,2 @@
+nmu-ubuntu-native (source): source-nmu-has-incorrect-version-number 1.0 [debian/changelog:1]
+nmu-ubuntu-native (source): no-nmu-in-changelog [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/debian/changelog.in
new file mode 100644
index 0000000..6060199
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Team upload.
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
diff --git a/t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/fill-values b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/fill-values
new file mode 100644
index 0000000..00489da
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: nmu-unnecessary-team-upload
+Description: Test for unnecessary team uploads
diff --git a/t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/desc b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/desc
new file mode 100644
index 0000000..2c411db
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/desc
@@ -0,0 +1,2 @@
+Testname: nmu-unnecessary-team-upload
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/hints b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/hints
new file mode 100644
index 0000000..056b427
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-unnecessary-team-upload/eval/hints
@@ -0,0 +1 @@
+nmu-unnecessary-team-upload (source): unnecessary-team-upload [debian/changelog:1]
diff --git a/t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/debian/changelog.in b/t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/debian/changelog.in
new file mode 100644
index 0000000..b96e5d2
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/debian/changelog.in
@@ -0,0 +1,15 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * NMU with ACK from maintainer.
+ * This should not trigger changelog-should-mention-nmu even though it
+ has "ACK" in the first line.
+
+ -- Russ Allbery <rra@debian.org> [% $date %]
+
+[% $source %] (1.0-1) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] Sat, 24 Jan 2009 15:39:06 -0800
+
diff --git a/t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/fill-values b/t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/fill-values
new file mode 100644
index 0000000..dbbeafa
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-with-maintainer-ack/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: nmu-with-maintainer-ack
+Skeleton: upload-non-native
+Description: Test a variation on NMU wording
+Version: 1.0-1.1
diff --git a/t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/desc b/t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/desc
new file mode 100644
index 0000000..eb42f50
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/desc
@@ -0,0 +1,3 @@
+Testname: nmu-with-maintainer-ack
+Test-Against: no-nmu-in-changelog
+Check: nmu
diff --git a/t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/hints b/t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/nmu/nmu-with-maintainer-ack/eval/hints
diff --git a/t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/debian/control.in b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/debian/control.in
new file mode 100644
index 0000000..5ddc664
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://search.cpan.org/Foo-Bar-9.0_01/
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/fill-values b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/fill-values
new file mode 100644
index 0000000..11db86e
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: fields-cpan-homepage
+Description: CPAN Homepage URLs shouldn't have versions
diff --git a/t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/desc b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/desc
new file mode 100644
index 0000000..c6c15af
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/desc
@@ -0,0 +1,2 @@
+Testname: fields-cpan-homepage
+Check: obsolete-sites
diff --git a/t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/hints b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/hints
new file mode 100644
index 0000000..c5a69e6
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/fields-cpan-homepage/eval/hints
@@ -0,0 +1 @@
+fields-cpan-homepage (source): obsolete-url-in-packaging http://search.cpan.org/Foo-Bar-9.0_01/ [debian/control]
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/control.in b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/control.in
new file mode 100644
index 0000000..e80a3a2
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: http://code.google.com/p/foo
+
+Package: foo
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/copyright b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/copyright
new file mode 100644
index 0000000..627f71b
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/copyright
@@ -0,0 +1,14 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Foo
+Upstream-Contact: J. Random Hacker <j.r.hacker@example.com>
+Source: https://foo.berlios.de/
+Positive: ftp://ftp.debian.org/debian/doc/
+False-Positive: http://ftp.debian.org/
+
+Files: *
+Copyright: 2014, me
+License: Bla
+Comment: http://freshmeat.net/p/foo
+
+License: Bla
+ This is the Bla license.
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/upstream/metadata b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/upstream/metadata
new file mode 100644
index 0000000..5459131
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/upstream/metadata
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+# https://wiki.debian.org/UpstreamMetadata
+Bug-Submit: http://github.com/foo/foo/issues/new
+FAQ: http://foo.sourceforge.net/faq/
+Homepage: http://freecode.com/p/foo
+Repository: git://gitorious.org/foo/foo.git
+Repository-Browse: http://sourceforge.net/p/foo/code/ci/master/tree/
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/watch b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/watch
new file mode 100644
index 0000000..6bfdfb1
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/debian/watch
@@ -0,0 +1,7 @@
+version=3
+
+http://gitorious.org/foo/foo/file-(.*)\.tar\.gz
+
+# False positives:
+#
+# http://code.google.com/p/wps-bully/
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/fill-values b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/fill-values
new file mode 100644
index 0000000..b731914
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: obsolete-sites
+Skeleton: upload-non-native
+Description: Test cases where packages contain links to frozen, closing or closed hosters
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/eval/desc b/t/recipes/checks/obsolete-sites/obsolete-sites/eval/desc
new file mode 100644
index 0000000..9438b94
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/eval/desc
@@ -0,0 +1,2 @@
+Testname: obsolete-sites
+Check: obsolete-sites
diff --git a/t/recipes/checks/obsolete-sites/obsolete-sites/eval/hints b/t/recipes/checks/obsolete-sites/obsolete-sites/eval/hints
new file mode 100644
index 0000000..8126fb4
--- /dev/null
+++ b/t/recipes/checks/obsolete-sites/obsolete-sites/eval/hints
@@ -0,0 +1,7 @@
+obsolete-sites (source): obsolete-url-in-packaging https://foo.berlios.de/ [debian/copyright]
+obsolete-sites (source): obsolete-url-in-packaging http://gitorious.org/foo/foo/file-(.*)\.tar\.gz [debian/watch]
+obsolete-sites (source): obsolete-url-in-packaging http://freshmeat.net/p/foo [debian/copyright]
+obsolete-sites (source): obsolete-url-in-packaging http://freecode.com/p/foo [debian/upstream/metadata]
+obsolete-sites (source): obsolete-url-in-packaging http://code.google.com/p/foo [debian/control]
+obsolete-sites (source): obsolete-url-in-packaging git://gitorious.org/foo/foo.git [debian/upstream/metadata]
+obsolete-sites (source): obsolete-url-in-packaging ftp://ftp.debian.org [debian/copyright]
diff --git a/t/recipes/checks/origtar/empty-orig-tarball/build-spec/fill-values b/t/recipes/checks/origtar/empty-orig-tarball/build-spec/fill-values
new file mode 100644
index 0000000..0b731b6
--- /dev/null
+++ b/t/recipes/checks/origtar/empty-orig-tarball/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: empty-orig-tarball
+Skeleton: upload-non-native
+Description: Empty orig.tar.gz
diff --git a/t/recipes/checks/origtar/empty-orig-tarball/eval/desc b/t/recipes/checks/origtar/empty-orig-tarball/eval/desc
new file mode 100644
index 0000000..1c63227
--- /dev/null
+++ b/t/recipes/checks/origtar/empty-orig-tarball/eval/desc
@@ -0,0 +1,2 @@
+Testname: empty-orig-tarball
+Check: origtar
diff --git a/t/recipes/checks/origtar/empty-orig-tarball/eval/hints b/t/recipes/checks/origtar/empty-orig-tarball/eval/hints
new file mode 100644
index 0000000..175ca6a
--- /dev/null
+++ b/t/recipes/checks/origtar/empty-orig-tarball/eval/hints
@@ -0,0 +1 @@
+empty-orig-tarball (source): empty-upstream-sources
diff --git a/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/debian/install b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/debian/install
new file mode 100644
index 0000000..b2551e6
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/debian/install
@@ -0,0 +1 @@
+*.exe usr/share/win32
diff --git a/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/fill-values b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/fill-values
new file mode 100644
index 0000000..cc065dd
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: missing-security-features-32-bit
+Skeleton: upload-native
+Extra-Build-Depends: gcc-mingw-w64-i686, mingw-w64-tools
+Description: Test with 32-bit PE binaries (PE32) missing recommended security features
diff --git a/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/Makefile b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/Makefile
new file mode 100644
index 0000000..c4e03e9
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/Makefile
@@ -0,0 +1,33 @@
+MINGWCC = i686-w64-mingw32-gcc
+
+sources = hello.c
+safe = hello32.exe
+
+staticbase = $(patsubst %.exe,%-static-base.exe,$(safe))
+dataexecution = $(patsubst %.exe,%-data-execution.exe,$(safe))
+unsafeseh = $(patsubst %.exe,%-unsafe-seh.exe,$(safe))
+
+all: $(safe) $(staticbase) $(dataexecution) $(unsafeseh)
+
+$(safe): $(sources)
+ $(MINGWCC) -o $@ $^
+ genpeimg -d +d $@
+ genpeimg -d +n $@
+ genpeimg -d -s $@
+
+$(staticbase): $(safe)
+ cp $< $@
+ genpeimg -d -d $@
+
+$(dataexecution): $(safe)
+ cp $< $@
+ genpeimg -d -n $@
+
+$(unsafeseh): $(safe)
+ cp $< $@
+ # SEH is inverted
+ genpeimg -d +s $@
+
+.PHONY: clean
+clean:
+ rm -f $(safe) $(staticbase) $(dataexecution) $(unsafeseh)
diff --git a/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/hello.c b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/hello.c
new file mode 100644
index 0000000..7085b1e
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-32-bit/build-spec/orig/hello.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2019 Felix Lechner
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, you can find it on the World Wide
+ Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301, USA
+*/
+
+#include <stdio.h>
+
+int main(void){
+
+ printf("Hello, Lintian!\n");
+ return 0;
+}
diff --git a/t/recipes/checks/pe/missing-security-features-32-bit/eval/desc b/t/recipes/checks/pe/missing-security-features-32-bit/eval/desc
new file mode 100644
index 0000000..db88ae6
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-32-bit/eval/desc
@@ -0,0 +1,2 @@
+Testname: missing-security-features-32-bit
+Check: pe
diff --git a/t/recipes/checks/pe/missing-security-features-32-bit/eval/hints b/t/recipes/checks/pe/missing-security-features-32-bit/eval/hints
new file mode 100644
index 0000000..c7cb89b
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-32-bit/eval/hints
@@ -0,0 +1,3 @@
+missing-security-features-32-bit (binary): portable-executable-missing-security-features SafeSEH [usr/share/win32/hello32-unsafe-seh.exe]
+missing-security-features-32-bit (binary): portable-executable-missing-security-features DEP/NX [usr/share/win32/hello32-data-execution.exe]
+missing-security-features-32-bit (binary): portable-executable-missing-security-features ASLR [usr/share/win32/hello32-static-base.exe]
diff --git a/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/debian/install b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/debian/install
new file mode 100644
index 0000000..b2551e6
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/debian/install
@@ -0,0 +1 @@
+*.exe usr/share/win32
diff --git a/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/fill-values b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/fill-values
new file mode 100644
index 0000000..da2ab70
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: missing-security-features-64-bit
+Skeleton: upload-native
+Extra-Build-Depends: gcc-mingw-w64-x86-64, mingw-w64-tools
+Description: Test with 64-bit PE binaries (PE32+) missing recommended security features
diff --git a/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/Makefile b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/Makefile
new file mode 100644
index 0000000..ddd8290
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/Makefile
@@ -0,0 +1,33 @@
+MINGWCC = x86_64-w64-mingw32-gcc
+
+sources = hello.c
+safe = hello64.exe
+
+staticbase = $(patsubst %.exe,%-static-base.exe,$(safe))
+dataexecution = $(patsubst %.exe,%-data-execution.exe,$(safe))
+unsafeseh = $(patsubst %.exe,%-unsafe-seh.exe,$(safe))
+
+all: $(safe) $(staticbase) $(dataexecution) $(unsafeseh)
+
+$(safe): $(sources)
+ $(MINGWCC) -o $@ $^
+ genpeimg -d +d $@
+ genpeimg -d +n $@
+ genpeimg -d -s $@
+
+$(staticbase): $(safe)
+ cp $< $@
+ genpeimg -d -d $@
+
+$(dataexecution): $(safe)
+ cp $< $@
+ genpeimg -d -n $@
+
+$(unsafeseh): $(safe)
+ cp $< $@
+ # SEH is inverted
+ genpeimg -d +s $@
+
+.PHONY: clean
+clean:
+ rm -f $(safe) $(staticbase) $(dataexecution) $(unsafeseh)
diff --git a/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/hello.c b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/hello.c
new file mode 100644
index 0000000..7085b1e
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-64-bit/build-spec/orig/hello.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2019 Felix Lechner
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, you can find it on the World Wide
+ Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301, USA
+*/
+
+#include <stdio.h>
+
+int main(void){
+
+ printf("Hello, Lintian!\n");
+ return 0;
+}
diff --git a/t/recipes/checks/pe/missing-security-features-64-bit/eval/desc b/t/recipes/checks/pe/missing-security-features-64-bit/eval/desc
new file mode 100644
index 0000000..a72b1e0
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-64-bit/eval/desc
@@ -0,0 +1,2 @@
+Testname: missing-security-features-64-bit
+Check: pe
diff --git a/t/recipes/checks/pe/missing-security-features-64-bit/eval/hints b/t/recipes/checks/pe/missing-security-features-64-bit/eval/hints
new file mode 100644
index 0000000..56fb3ce
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-64-bit/eval/hints
@@ -0,0 +1,3 @@
+missing-security-features-64-bit (binary): portable-executable-missing-security-features SafeSEH [usr/share/win32/hello64-unsafe-seh.exe]
+missing-security-features-64-bit (binary): portable-executable-missing-security-features DEP/NX [usr/share/win32/hello64-data-execution.exe]
+missing-security-features-64-bit (binary): portable-executable-missing-security-features ASLR [usr/share/win32/hello64-static-base.exe]
diff --git a/t/recipes/checks/pe/missing-security-features-fp/build-spec/debian/install b/t/recipes/checks/pe/missing-security-features-fp/build-spec/debian/install
new file mode 100644
index 0000000..b2551e6
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/build-spec/debian/install
@@ -0,0 +1 @@
+*.exe usr/share/win32
diff --git a/t/recipes/checks/pe/missing-security-features-fp/build-spec/fill-values b/t/recipes/checks/pe/missing-security-features-fp/build-spec/fill-values
new file mode 100644
index 0000000..5707c9a
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: missing-security-features-fp
+Description: Test with hardened PE binaries not missing any security features
diff --git a/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/.coverage b/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/.coverage
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/.coverage
diff --git a/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32+.exe b/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32+.exe
new file mode 100644
index 0000000..9ba57fb
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32+.exe
Binary files differ
diff --git a/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32.exe b/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32.exe
new file mode 100644
index 0000000..0f50468
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/build-spec/orig/gdbreplay-pe32.exe
Binary files differ
diff --git a/t/recipes/checks/pe/missing-security-features-fp/eval/desc b/t/recipes/checks/pe/missing-security-features-fp/eval/desc
new file mode 100644
index 0000000..5a754e7
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/eval/desc
@@ -0,0 +1,4 @@
+Testname: missing-security-features-fp
+Check: pe
+Test-Against:
+ portable-executable-missing-security-features
diff --git a/t/recipes/checks/pe/missing-security-features-fp/eval/hints b/t/recipes/checks/pe/missing-security-features-fp/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/pe/missing-security-features-fp/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/debian/install b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/debian/install
new file mode 100644
index 0000000..e82dac3
--- /dev/null
+++ b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/debian/install
@@ -0,0 +1 @@
+bin/* /usr/bin
diff --git a/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/fill-values b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/fill-values
new file mode 100644
index 0000000..07a440f
--- /dev/null
+++ b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: recursive-dot-with-chown
+Skeleton: upload-native
+Description: Script with chown -r user.group (instead of colon)
diff --git a/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/orig/bin/deprecated-usage b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/orig/bin/deprecated-usage
new file mode 100755
index 0000000..f3884cd
--- /dev/null
+++ b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/build-spec/orig/bin/deprecated-usage
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+chown -R someuser.theirgroup /non-existent
diff --git a/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/desc b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/desc
new file mode 100644
index 0000000..8a1f034
--- /dev/null
+++ b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/desc
@@ -0,0 +1,2 @@
+Testname: recursive-chown-with-dot
+Check: script/deprecated/chown
diff --git a/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/hints b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/hints
new file mode 100644
index 0000000..fb39442
--- /dev/null
+++ b/t/recipes/checks/script/deprecated/chown/recursive-chown-with-dot/eval/hints
@@ -0,0 +1 @@
+recursive-dot-with-chown (binary): chown-with-dot someuser.theirgroup [usr/bin/deprecated-usage:3]
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/eval/desc b/t/recipes/checks/script/syntax/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..3650bf9
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: script/syntax
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/eval/hints b/t/recipes/checks/script/syntax/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..184dd2e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/eval/hints
@@ -0,0 +1 @@
+libbaz1 (binary): maintainer-shell-script-fails-syntax-check [postinst]
diff --git a/t/recipes/checks/script/syntax/legacy-libbaz/eval/post-test b/t/recipes/checks/script/syntax/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/config
new file mode 100644
index 0000000..29abeba
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/config
@@ -0,0 +1,3 @@
+#!/usr/bin/python
+
+# I use python, but that's not what I'm supposed to be allowed to use
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..de4161e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/config debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..1432a25
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: script/syntax
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..dffad32
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,2 @@
+maintainer-scripts (binary): maintainer-shell-script-fails-syntax-check [prerm]
+maintainer-scripts (binary): maintainer-shell-script-fails-syntax-check [postinst]
diff --git a/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..ef39375
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: python3 (>= 3.1), python3 (<< 3.2), dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..dc6b7d5
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,111 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 py3.Xfoo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3.Xfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 py3foo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3foo $(tmp)/usr/share/doc/scripts/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/fill-values b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3.Xfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3.Xfoo
new file mode 100755
index 0000000..7f105e6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3.Xfoo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3.7
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3foo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3foo
new file mode 100755
index 0000000..02b0444
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/py3foo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/build-spec/pre-build b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/eval/desc b/t/recipes/checks/script/syntax/legacy-scripts/eval/desc
new file mode 100644
index 0000000..00bae4c
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: script/syntax
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/eval/hints b/t/recipes/checks/script/syntax/legacy-scripts/eval/hints
new file mode 100644
index 0000000..ec97bf0
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/eval/hints
@@ -0,0 +1 @@
+scripts (binary): shell-script-fails-syntax-check [usr/bin/sh-broken]
diff --git a/t/recipes/checks/script/syntax/legacy-scripts/eval/post-test b/t/recipes/checks/script/syntax/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/postinst b/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/postinst
new file mode 100644
index 0000000..7004ffc
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/postinst
@@ -0,0 +1,87 @@
+#! /bin/sh -e
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
+
+#DEBHELPER#
diff --git a/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/prerm b/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/prerm
new file mode 100644
index 0000000..84098f7
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/debian/prerm
@@ -0,0 +1,186 @@
+#!/bin/sh
+
+set -e
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@() # foo
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
+
+# An example from the X maintainer scripts that used to trigger the trap
+# bashism check.
+trap "message;\
+ message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\
+ message;\
+ exit 1" HUP INT QUIT TERM
+
+# Also allow for extended single quotes containing double quotes.
+trap 'message;
+ message "Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.";
+ message;
+ exit 1' HUP INT QUIT TERM
+
+#DEBHELPER#
diff --git a/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/fill-values b/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/fill-values
new file mode 100644
index 0000000..ab87d45
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-bashisms/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-bashisms
+Description: Check bashism detection
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/script/syntax/scripts-bashisms/eval/desc b/t/recipes/checks/script/syntax/scripts-bashisms/eval/desc
new file mode 100644
index 0000000..56c2085
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-bashisms/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-bashisms
+Check: script/syntax
diff --git a/t/recipes/checks/script/syntax/scripts-bashisms/eval/hints b/t/recipes/checks/script/syntax/scripts-bashisms/eval/hints
new file mode 100644
index 0000000..2a7299a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-bashisms/eval/hints
@@ -0,0 +1,2 @@
+scripts-bashisms (binary): maintainer-shell-script-fails-syntax-check [prerm]
+scripts-bashisms (binary): maintainer-shell-script-fails-syntax-check [postinst]
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/control.in b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/control.in
new file mode 100644
index 0000000..24733b6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, python2.7, csh, cwltool
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/examples b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/examples
new file mode 100644
index 0000000..dbf0e0e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/examples
@@ -0,0 +1,9 @@
+bin-env
+no-interpreter
+not-absolute
+syntax
+unusual
+unversioned-pike
+usr-bin-env-perl
+usr-local
+wrong-perl-path
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/install b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/install
new file mode 100644
index 0000000..eb2fbdd
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/install
@@ -0,0 +1,14 @@
+bin-env usr/bin/
+csh-shell usr/bin/
+cwl-runner usr/bin/
+no-interpreter usr/bin/
+not-absolute usr/bin/
+python2.7 usr/bin/
+syntax usr/bin/
+unusual usr/bin/
+unversioned-pike usr/bin/
+usr-bin-env-perl usr/bin/
+usr-local usr/bin/
+usr-local-bin-perl usr/bin/
+versioned-pike usr/bin/
+wrong-perl-path usr/bin/
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/links b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/links
new file mode 100644
index 0000000..ff8f522
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/links
@@ -0,0 +1,14 @@
+usr/share/man/man1/interpreters.1 usr/share/man/man1/bin-env.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/csh-shell.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/cwl-runner.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/no-interpreter.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/not-absolute.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/python2.7.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/syntax.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/unusual.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/unversioned-pike.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-bin-env-perl.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local-bin-perl.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/versioned-pike.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/wrong-perl-path.1
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/manpages b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/manpages
new file mode 100644
index 0000000..74d51b8
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/debian/manpages
@@ -0,0 +1 @@
+interpreters.1
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/fill-values b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/fill-values
new file mode 100644
index 0000000..f92de59
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-interpreters
+Description: Check various script interpreter issues
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/bin-env b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/bin-env
new file mode 100644
index 0000000..005e1a9
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/bin-env
@@ -0,0 +1,2 @@
+#!/bin/env perl
+print "Hello world\n";
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/csh-shell b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/csh-shell
new file mode 100644
index 0000000..3e39c0b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/csh-shell
@@ -0,0 +1 @@
+#!/bin/csh
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/cwl-runner b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/cwl-runner
new file mode 100644
index 0000000..3f3280f
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/cwl-runner
@@ -0,0 +1 @@
+#!/usr/bin/cwl-runner
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/interpreters.1 b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/interpreters.1
new file mode 100644
index 0000000..9e6dd89
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/interpreters.1
@@ -0,0 +1,5 @@
+.TH interpreters 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+interpreters \- test script
+
+Dummy manpage to avoid triggering warnings about it not existing.
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/no-interpreter b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/no-interpreter
new file mode 100644
index 0000000..3487806
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/no-interpreter
@@ -0,0 +1,3 @@
+#!
+# Script missing any interpreter.
+true
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/not-absolute b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/not-absolute
new file mode 100644
index 0000000..ee656c6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/not-absolute
@@ -0,0 +1,2 @@
+#!perl
+print "Hello world\n";
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/python2.7 b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/python2.7
new file mode 100644
index 0000000..1989667
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/python2.7
@@ -0,0 +1,3 @@
+#!/usr/bin/python2.7
+import sys
+sys.exit(0)
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/syntax b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/syntax
new file mode 100644
index 0000000..c04b97f
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/syntax
@@ -0,0 +1,4 @@
+#!/bin/sh
+# A shell script with a syntax error.
+if true ; then
+ echo True
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unusual b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unusual
new file mode 100644
index 0000000..8a74f66
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unusual
@@ -0,0 +1,2 @@
+#!/usr/bin/lintian
+use lintian shell to check package
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unversioned-pike b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unversioned-pike
new file mode 100644
index 0000000..f1eaf01
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/unversioned-pike
@@ -0,0 +1,4 @@
+#! /usr/bin/pike
+
+This is not a real pike script but sufficient to trigger a warning that the package
+is missing a dependency for the interpreter.
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-bin-env-perl b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-bin-env-perl
new file mode 100644
index 0000000..069c68b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-bin-env-perl
@@ -0,0 +1,3 @@
+#!/usr/bin/env perl
+
+print "Hello world\n";
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local
new file mode 100644
index 0000000..be79cf8
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local
@@ -0,0 +1,2 @@
+#!/usr/local/bin/special-perl
+print "Hello world\n";
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local-bin-perl b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local-bin-perl
new file mode 100644
index 0000000..3c8f6fa
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/usr-local-bin-perl
@@ -0,0 +1,3 @@
+#!/usr/local/bin/perl
+
+print "Hello world\n";
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/versioned-pike b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/versioned-pike
new file mode 100644
index 0000000..6b3b65b
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/versioned-pike
@@ -0,0 +1,4 @@
+#! /usr/bin/pike7.6
+
+This is not a real pike script but sufficient to trigger a warning that the package
+is missing a dependency for the interpreter.
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/wrong-perl-path b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/wrong-perl-path
new file mode 100644
index 0000000..1602d4e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/build-spec/orig/wrong-perl-path
@@ -0,0 +1,2 @@
+#!/bin/perl
+print "Hello world\n";
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/eval/desc b/t/recipes/checks/script/syntax/scripts-interpreters/eval/desc
new file mode 100644
index 0000000..ee5a22d
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-interpreters
+Check: script/syntax
+See-Also:
+ Bug#543873
diff --git a/t/recipes/checks/script/syntax/scripts-interpreters/eval/hints b/t/recipes/checks/script/syntax/scripts-interpreters/eval/hints
new file mode 100644
index 0000000..4e387b6
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-interpreters/eval/hints
@@ -0,0 +1,2 @@
+scripts-interpreters (binary): shell-script-fails-syntax-check [usr/bin/syntax]
+scripts-interpreters (binary): example-shell-script-fails-syntax-check [usr/share/doc/scripts-interpreters/examples/syntax]
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/eval/desc b/t/recipes/checks/script/syntax/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..56441c1
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+Check: script/syntax
+See-Also:
+ Bug#532984
diff --git a/t/recipes/checks/script/syntax/scripts-maintainer-general/eval/hints b/t/recipes/checks/script/syntax/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..dc2e8e5
--- /dev/null
+++ b/t/recipes/checks/script/syntax/scripts-maintainer-general/eval/hints
@@ -0,0 +1 @@
+scripts-maintainer-general (binary): maintainer-shell-script-fails-syntax-check [prerm]
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/NEWS.Debian b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/NEWS.Debian
new file mode 100644
index 0000000..29f561c
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/NEWS.Debian
@@ -0,0 +1,12 @@
+binary (4-1.1) UNRELEASED; urgency=high
+
+ This is a Debian NEWS entry that isn't encoded properly in UTF-8: ü.
+ It also has a usefull speling error.
+
+ -- Russ Allbery <rra@debian.org> Sun, 14 Oct 2007 17:11:36 -0700
+
+binary (1) unstable; urgency=low
+
+ This is another entry but this one isn't syntactically valid.
+
+ -- Russ Allbery 2007-10-14
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/README.Debian b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/README.Debian
new file mode 100644
index 0000000..94bcc0a
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/README.Debian
@@ -0,0 +1,5 @@
+this is a binary package to test lintian's handling of bins.
+Check handling of D-Bus and dbus (neither of which should produce
+warnings).
+
+ -- Russ Allbery <rra@debian.org>, Wed, 6 Feb 2008 18:35:11 -0800
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/changelog.in b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/changelog.in
new file mode 100644
index 0000000..39301d6
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/changelog.in
@@ -0,0 +1,47 @@
+binary ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version
+ number which suggests I'm doing a NMU myself.
+
+ Lintian-maintainers: Please don't update this changelog, otherwise you'll
+ probably break the checks/nmu checks.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 01:49:42 +0200
+
+binary (4-1) unstable; urgency=low
+
+ * Weird version number for the new check for accidents with native
+ packaging.
+ * Date was fixed by BR and this test was put on changelog-file-strange-date
+ due to dpkg bug, see #794674.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Thu, 15 Apr 2004 23:33:51 +0200
+
+binary (4) unstable; urgency=low
+
+ * Add big file to /usr/share to trigger the big-usr-share check
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 10:15:59 +0100
+
+binary (3) unstable; urgency=unlimited
+
+ * Add some bogus menu entries using su-to-root in a bogus way
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Thu, 12 Feb 2004 20:11:22 +0100
+
+binary (2) unstable; urgency=low
+
+ * Added an INSTALL document which policy 6.3 suggests not to do
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
+binary (1) unstable; urgency=low
+
+ * hello.c added
+ * hello-static is same as hello, but compiled statically
+ * added a menu entry which lacks a Section
+ * added a postinst
+ * postinst calls suidregister which is no longer policy compliant
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 10 Jan 2001 08:55:34 -0800
+
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/conffiles b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/conffiles
new file mode 100644
index 0000000..d1a0843
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/conffiles
@@ -0,0 +1 @@
+/etc/menu-methods/lintian
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/control b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/control
new file mode 100644
index 0000000..c797357
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/control
@@ -0,0 +1,42 @@
+Source: binary
+Section: misc
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Co-maintainer one <one@debian.org>, Jeroen van Wolffelaar <jeroen@wolffelaar.nl>, Co-maintainer three <three@debian.org>
+Standards-Version: 3.2.1
+Homepage: http://lintian.debian.org/
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk
+XS-Dm-Upload-Allowed: yes
+
+Package: binary
+Architecture: any
+Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${source:Version}), libssl0.9.8
+Homepage: <http://lintian.debian.org/>
+Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk
+Description: test handling of binary files
+ Regression test for lintian's handling of binary files for debian. This
+ is checked for picky spelling errors.
+ .
+ This package list [ subversion | gconf ] should not be flagged as a spelling
+ mistake. The spelling correction for dont should be correct.
+ .
+ Homepage: http://lintian.debian.org/
+
+Package: binary-data
+Architecture: all
+Depends: binary (= ${source:Version}), libssl-not-openssl,
+ libssl0.9.8 | or-something-else
+Description: test handling of binary relationships
+ Regression test for lintian's checking of package relationships between
+ arch:any and arch:all packages.
+ .
+ This mention of subversion should be flagged as a spelling mistake.
+
+#Package: binary-comment
+#Architecture: space-almonds
+#Depends: *
+#Depends: *
+#Description: test comment support
+# Yes, comments are actually allowed in debian/control, so none of the
+# above should produce errors.
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/copyright b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/copyright
new file mode 100644
index 0000000..1d6806d
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/copyright
@@ -0,0 +1,15 @@
+hello.c is released under public domain. This is distributed in the hope that
+it will be useful, but without any warranty; without even the implied warranty
+of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+Test for old FSF address:
+
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Test for deprecated nätionäl äncoding.
+
+Improper capitalization of linux or debian isn't caught here.
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/doc-base b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/doc-base
new file mode 100644
index 0000000..7e5b38f
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/doc-base
@@ -0,0 +1,41 @@
+Document: binary!docs
+Title: Broken debian binary doc-base control file
+Author: Russ Allbery
+Abstract: This control file exercises various tests of doc-base control
+ files, including several things that aren't tested yet. The third and
+ fourth one has trailing whitespace.
+ .
+ This section has a speling error and bad ® character.
+ .
+ The above separator was fine.
+Section: Non/Existant
+Unknown: Some field
+
+
+
+Format: debiandoc-sgML
+Files: /usr/share/doc/binary/binary.sgml.gz
+Unknown: Some field
+
+Format: ESP
+Index: /usr/share/doc/binary/binary.txt
+
+Index: /usr/share/doc/binary/html/index.html
+ /usr/share/doc/binary/html/ch1.html
+ /usr/share/doc/binary/html/ch4.html
+
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch?.h*l
+ /usr/share/doc/binary/hml/*.html
+
+Format: inFO
+Files: /usr/share/info/binary.info.gz
+
+Format: HTML
+Index: /usr/share/doc/binary/html/index.html
+Files: /usr/share/doc/binary/html/ch5.html
+ /usr/share/doc/binary/html/ch6.html
+
+
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/goodbye.desktop b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/goodbye.desktop
new file mode 100644
index 0000000..f6ce8e3
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/goodbye.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name:Goodbye
+# Name=Goodbye
+Comment=Say hello!
+SpecialTag=This doesn't exist!
+Exec=goodbye
+icon=hello
+Terminal=true
+Type=Application
+Categories=WeirdStuff;Screensaver;
+Encoding=ISO-10646-1
+[Other Entry]
+Name=Goodbye
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/hello.desktop b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/hello.desktop
new file mode 100644
index 0000000..f795468
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/hello.desktop
@@ -0,0 +1,14 @@
+# some random comment
+
+# [Foo Bar]
+[KDE Desktop Entry]
+Name=Hello
+Name[en_US]=Hello
+Comment=Say hello!
+Exec=kdesu hello
+Icon=hello
+Terminal=true
+Type=Application
+Categories=GNOME;GTK;System;Applet;X-Foo;Settings;
+Encoding=UTF-8
+OnlyShowIn=GNOME;
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu
new file mode 100644
index 0000000..e8972f4
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu
@@ -0,0 +1,26 @@
+?package(binary):needs=text title="Hello World" command="/usr/bin/hello"
+?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk"
+?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk"
+?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk"
+?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello"
+?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere"
+?package(binary,other-binary):\
+ needs="text"\
+ section="Applications/Shells"\
+ title="more than one required"\
+ command="other-bin -s omething"
+?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd"
+?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin"
+?package(binary):needs="text"\
+ section="Applications/System/Administration"\
+ title="I'm not root!" command="su-to-root -c imnothere"
+?package(binary):needs="text" section="Applications/System/Administration"\
+ title="Run cfdisk (0)" command="cfdisk"
+?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello"
+?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello"
+?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\
+ command="hello"
+?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'"
+?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo"
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu-method b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu-method
new file mode 100644
index 0000000..9f07bd7
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/menu-method
@@ -0,0 +1,22 @@
+#!/usr/bin/install-menu
+
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+
+!include notmenu.h
+
+compat="menu-2"
+
+outputencoding="UTF-8";
+outputlanguage="C";
+
+x11 = AppEntry("false");
+text = AppEntry("true");
+
+startmenu = "";
+endmenu = "";
+submenutitle = "";
+rootprefix = "/var/lib/lintian/menu";
+userprefix = ".local/share/lintian/menu";
+
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/postinst b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/postinst
new file mode 100644
index 0000000..29e1861
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/bash -e
+
+if [ $1 eq 'configure' ]
+then
+ suidregister hello-static root root 4755
+fi
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/rules b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/rules
new file mode 100755
index 0000000..a962ea9
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+# This reference to $(PWD) should not cause an error but the one below
+# should.
+build-arch:
+ make
+ echo $(PWD)
+
+build: build-arch
+
+clean:
+ make -i clean
+ [ ! -f debian/files ] || rm -f debian/files
+ [ ! -f debian/substvars ] || rm -f debian/substvars
+ [ ! -d debian/tmp ] || rm -rf debian/tmp
+ [ ! -d debian/binary ] || rm -rf debian/binary
+ [ ! -d debian/binary-data ] || rm -rf debian/binary-data
+
+binary-arch: build
+ install -d $(tmp)/usr/bin
+ install -d $(tmp)/boot/hello
+ install -m 755 hello $(tmp)/usr/bin
+ touch $(tmp)/usr/bin/iminusrbin
+ chmod 755 $(tmp)/usr/bin/iminusrbin
+ install -m 755 hello-static $(tmp)/usr/bin
+ strip $(tmp)/usr/bin/hello-static
+ install -m 755 hello-static $(tmp)/usr/bin/hello.static
+ strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static
+ ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello
+ install -m 755 hello-static $(tmp)/boot/hello
+ strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static
+ install -d $(tmp)/usr/share/doc/binary
+ install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/doc/binary/html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/index.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch1.html
+ ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html
+ ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html
+ echo '<html></html>' > $(tmp)/usr/share/doc/binary/html/ch5.html
+ ln $(tmp)/usr/share/doc/binary/html/ch5.html \
+ $(tmp)/usr/share/doc/binary/html/ch6.html
+ install -d $(tmp)/usr/share/menu
+ install -d $(tmp)/usr/lib/menu
+ install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
+ install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
+ install -d $(tmp)/etc/menu-methods
+ install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian
+ install -d $(tmp)/usr/share/doc-base
+ install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary
+ touch '$(tmp)/usr/share/doc-base/space '
+ install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
+ install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary
+ gzip -n -9 $(tmp)/usr/share/doc/binary/NEWS.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/binary
+ #gzip -n -9 $(tmp)/usr/share/doc/binary/changelog
+ install -d $(tmp)/DEBIAN
+ install -m 755 debian/postinst $(tmp)/DEBIAN
+ install -m 644 debian/conffiles $(tmp)/DEBIAN
+
+ install -d $(tmp)/usr/share/applications
+ install -m 644 debian/hello.desktop \
+ $(tmp)/usr/share/applications/hello.desktop
+ install -m 755 debian/goodbye.desktop \
+ $(tmp)/usr/share/applications/goodbye.desktop
+
+ # should be ok...
+ echo boe > $(tmp)/usr/bar
+ ln $(tmp)/usr/bar $(tmp)/usr/foo
+ # but this isn't
+ echo boe > $(tmp)/usr/bar2
+ ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz
+
+ dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000
+
+ install -d debian/binary-data/DEBIAN
+ install -d debian/binary-data/usr/share/doc
+ ln -s binary debian/binary-data/usr/share/doc/binary-data
+
+ dpkg-shlibdeps $(tmp)/usr/bin/hello
+ dpkg-gencontrol -pbinary -isp
+ dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp
+
+ dpkg --build debian/tmp ..
+ dpkg --build debian/binary-data ..
+
+binary: binary-arch
+
+.PHONY: build-arch build binary-arch binary clean
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/debian/templates b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/templates
new file mode 100644
index 0000000..3d92861
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/debian/templates
@@ -0,0 +1,16 @@
+# The debconf templates defined here are the sort that you'd use if
+# providing a wordlist and an ispell dictionary for the language
+# "perl". This shouldn't trigger warnings about not using debconf-po.
+
+Template: shared/packages-ispell
+Type: text
+Description:
+
+Template: shared/packages-wordlist
+Type: text
+Description:
+
+Template: miscfiles/languages
+Type: text
+Default: perl (Pathologically Eclectic Rubbish Lister)
+Description:
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/fill-values b/t/recipes/checks/scripts/legacy-binary/build-spec/fill-values
new file mode 100644
index 0000000..b503871
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-non-native
+Testname: legacy-binary
+Source: binary
+Version: 4-1.1
+Description: Legacy test "binary"
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/orig/INSTALL b/t/recipes/checks/scripts/legacy-binary/build-spec/orig/INSTALL
new file mode 100644
index 0000000..3b50ea9
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/orig/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/orig/Makefile b/t/recipes/checks/scripts/legacy-binary/build-spec/orig/Makefile
new file mode 100644
index 0000000..da1dc55
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/orig/Makefile
@@ -0,0 +1,12 @@
+all: hello hello-static
+
+hello: hello.c
+ gcc hello.c -o hello
+
+hello-static: hello.c
+ gcc -static hello.c -o hello-static
+
+clean:
+ rm -f hello hello-static
+
+distclean: clean
diff --git a/t/recipes/checks/scripts/legacy-binary/build-spec/orig/hello.c b/t/recipes/checks/scripts/legacy-binary/build-spec/orig/hello.c
new file mode 100644
index 0000000..2fb04e1
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/build-spec/orig/hello.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+
+ printf("Hello, World!\n");
+ exit(0);
+}
diff --git a/t/recipes/checks/scripts/legacy-binary/eval/desc b/t/recipes/checks/scripts/legacy-binary/eval/desc
new file mode 100644
index 0000000..d89d875
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-binary
+Check: scripts
diff --git a/t/recipes/checks/scripts/legacy-binary/eval/hints b/t/recipes/checks/scripts/legacy-binary/eval/hints
new file mode 100644
index 0000000..4500b7e
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/eval/hints
@@ -0,0 +1,2 @@
+binary (binary): maintainer-script-without-set-e [postinst]
+binary (binary): maintainer-script-interpreter /bin/bash [postinst]
diff --git a/t/recipes/checks/scripts/legacy-binary/eval/post-test b/t/recipes/checks/scripts/legacy-binary/eval/post-test
new file mode 100644
index 0000000..3deefd5
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-binary/eval/post-test
@@ -0,0 +1,3 @@
+s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/changelog.in b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/changelog.in
new file mode 100644
index 0000000..91a6bb5
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+libbaz ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial setup
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 30 Jan 2001 15:23:59 -0800
+
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/compat.in b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/control b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/control
new file mode 100644
index 0000000..1506687
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/control
@@ -0,0 +1,58 @@
+Source: libbaz
+Section: libs
+Priority: optional
+Maintainer: Lintian Maintainer <lintian-maint@debian.org>
+Build-depends: debhelper (>=4)
+Standards-Version: 3.2.1
+
+Package: libbaz1
+Architecture: any
+Provides: libbaz
+Description: test handling of library packages
+ Regression test for lintian's handling of libraries.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz1-dev
+Architecture: any
+Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8
+Description: development package
+ Regression test for lintian's handling of libraries (dev).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2
+Architecture: any
+Depends: ${shlibs:Depends}, libssl0.9.8
+Description: test handling of library packages (good)
+ Regression test for lintian's handling of libraries (good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dev
+Architecture: any
+Depends: ${shlibs:Depends}, libbaz2 (= ${source:Version})
+Description: development package (good)
+ Regression test for lintian's handling of libraries (dev good).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: libbaz2-dbg
+Architecture: any
+Depends: libbaz2 (= ${binary:Version})
+Priority: optional
+Description: debugging package
+ Regression test for lintian's handling of libraries (debug).
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/copyright b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/copyright
new file mode 100644
index 0000000..a874c87
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/copyright
@@ -0,0 +1,8 @@
+This package is released under public domain. This is distributed in the hope
+that it will be useful, but without any warranty; without even the implied
+warranty of merchantability or fitness for a particular purpose.
+
+A reference to /usr/share/common-licenses/GPL-2 to make it look like this
+package is under the GPL and trigger the OpenSSL warning.
+
+However, this has an OpenSSL exception.
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.postinst b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.postinst
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.prerm b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.prerm
new file mode 100644
index 0000000..683e3cc
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/dev.prerm
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+$PKG=libbaz1-dev
+
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.postinst b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.postinst
new file mode 100644
index 0000000..ec0b98a
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ]
+; then
+ ln -sf ../share/doc/$PKG /usr/doc/$PKG
+ fi
+fi
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.prerm b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.prerm
new file mode 100644
index 0000000..50e37c3
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+$PKG=libbaz1
+
+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then
+ rm -f /usr/doc/$PKG
+fi
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.shlibs b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.shlibs
new file mode 100644
index 0000000..b88e288
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.shlibs
@@ -0,0 +1,8 @@
+libdoesntexist2 1.0 libbaz1
+libdoesntexist2 1.0 libbaz1
+libbaz2 1.1 libbaz
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
+libbaz5 1 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
+udeb: libdoesntexist2 1.0 libbaz2
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.symbols b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.symbols
new file mode 100644
index 0000000..72f9d8a
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/lib.symbols
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/rules b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/rules
new file mode 100755
index 0000000..fa99bc8
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/rules
@@ -0,0 +1,121 @@
+#!/usr/bin/make -f
+
+lib_tmp=debian/tmp-lib
+dev_tmp=debian/tmp-dev
+
+LIB=libbaz1
+DEV=libbaz1-dev
+
+VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
+
+build-arch:
+ $(MAKE)
+
+build-indep:
+
+build: build-arch build-indep
+
+clean:
+ $(MAKE) clean
+ dh_clean -plibbaz2 -plibbaz2-dev
+ rm -f debian/files debian/substvars
+ rm -rf $(lib_tmp) $(dev_tmp)
+
+# Now the correct libbaz2-dev package
+binary-correct:
+ install -d debian/libbaz2-dev/usr/lib
+ cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
+ # usually, I'd also include some .h files to /usr/include
+
+ # Now the correct libbaz2 package
+ install -d debian/libbaz2/usr/lib
+ cp -a libbaz2.so.* debian/libbaz2/usr/lib
+ chmod a-x debian/libbaz2/usr/lib/*
+
+ # General stuff that is tested in other testsets:
+ dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # Mess up the libbaz2 changelog files to test the symlink handling.
+ ln -s /usr/share/doc/lintian/changelog.gz \
+ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
+ install -m 644 debian/changelog \
+ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
+ ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
+
+ # Okay, if either line is omitted, it should be noted
+ dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
+ dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+ # and again, regular packaging stuff
+ dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
+ dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+ dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
+
+# and the incorrect one
+binary-arch: build-arch binary-correct
+ # first, the lib package
+ install -d $(lib_tmp)/usr/lib
+ # resp. no soname (check), wrong soname (check), and no-pic (check)
+ cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
+ cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
+ install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
+ # let's include the .a in the non-dev too (TODO)
+ # Also, libbaz1.a hasn't a symbol table (TODO)
+ cp -a *.a $(lib_tmp)/usr/lib
+ # And a wrong .so symlink (wrong, only in -dev, TODO)
+ ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
+ ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
+ # And a plain .so (wrong, TODO)
+ touch $(lib_tmp)/usr/lib/libbar2.so
+ # And a non-versioned SONAME.
+ install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
+ strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+
+ install -d $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
+ install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
+ gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
+ install -d $(lib_tmp)/DEBIAN
+ install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
+ install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
+ touch $(lib_tmp)/usr/share/doc/README.Debian
+ #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
+ install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
+ dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
+ dpkg --build $(lib_tmp) ..
+
+ # now the -dev package
+ install -d $(dev_tmp)/usr/include
+ install -d $(lib_tmp)/usr/lib
+ # let's also install the .so at the same time... (wrong, TODO)
+ cp -a *.a *.so.* $(lib_tmp)/usr/lib
+ # and fuck up permission (TODO)
+ chmod a+x $(lib_tmp)/usr/lib/*.a
+ # Pretend to be a Perl module to test a lack of Perl dependencies.
+ install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
+ install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
+ install -d $(dev_tmp)/usr/share/doc
+ ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
+ install -d $(dev_tmp)/DEBIAN
+ install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
+ install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
+ dpkg --build $(dev_tmp) ..
+
+
+binary: binary-arch
+
+# The mention of binary-indep here should be sufficient to suppress the
+# warning that it's not present.
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/source.lintian-overrides b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..6008d27
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+libbaz source: maintainer-script-lacks-debhelper-token
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/fill-values b/t/recipes/checks/scripts/legacy-libbaz/build-spec/fill-values
new file mode 100644
index 0000000..7effe4f
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-libbaz
+Source: libbaz
+Version: 1-1
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Description: Legacy test "libbaz"
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/Makefile b/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/Makefile
new file mode 100644
index 0000000..657dc2a
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/Makefile
@@ -0,0 +1,55 @@
+# This is the correct way to build a lib
+
+CC=gcc
+CFLAGS=-g -Wall -Winline -O2
+LDFLAGS=-Wl,--no-as-needed
+
+OBJS=baz.o extra.o
+SHOBJS=baz.sho extra.sho
+NOPICOBJS = $(SHOBJS)
+
+all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \
+ libbaz.so
+
+libbaz2.so: libbaz2.so.1.0
+ ln -sf $^ $@
+libbaz2.so.1.0: libbaz2.so.1.0.3b
+ ln -sf $^ $@
+
+# Oops, forget the soname altogether
+libbaz1.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared $^ -lc
+
+libbaz2.so.1.0.3b: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc
+
+# Non-PIC. We can't test this on all architectures
+libbaz3.so.1.0.3b: $(NOPICOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc
+
+# Non-versioned SONAME.
+libbaz.so: $(SHOBJS)
+ $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc
+
+#%.o-noreentrant: %.c
+# $(CC) $(LDFLAGS) $(CFLAGS) -o $@ -c $<
+
+%.sho: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $<
+
+%.o: %.c
+ $(CC) $(LDFLAGS) $(CFLAGS) -D_REENTRANT -o $@ -c $<
+
+libbaz2.a: $(OBJS)
+ ar cq $@ $(OBJS)
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+ ranlib $@
+
+# The pic one in the .a (wrong), no archive table
+libbaz1.a: $(SHOBJS)
+ ar cqS $@ $^
+ strip --strip-unneeded --remove-section=.comment \
+ --remove-section=-note $@
+clean:
+ rm -f *.a *.o *.so* *.sho
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/baz.c b/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/baz.c
new file mode 100644
index 0000000..4d5fc45
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/baz.c
@@ -0,0 +1,6 @@
+#include <math.h>
+
+double pw(double p)
+{
+ return exp(p);
+}
diff --git a/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/extra.c b/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/extra.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/build-spec/orig/extra.c
diff --git a/t/recipes/checks/scripts/legacy-libbaz/eval/desc b/t/recipes/checks/scripts/legacy-libbaz/eval/desc
new file mode 100644
index 0000000..0c9f9c6
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-libbaz
+Check: scripts
diff --git a/t/recipes/checks/scripts/legacy-libbaz/eval/hints b/t/recipes/checks/scripts/legacy-libbaz/eval/hints
new file mode 100644
index 0000000..aa74488
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/eval/hints
@@ -0,0 +1,9 @@
+libbaz1-dev (binary): maintainer-script-without-set-e [prerm]
+libbaz1-dev (binary): maintainer-script-without-set-e [postinst]
+libbaz1-dev (binary): maintainer-script-interpreter /bin/sh [prerm]
+libbaz1-dev (binary): maintainer-script-interpreter /bin/sh [postinst]
+libbaz1 (binary): maintainer-script-without-set-e [prerm]
+libbaz1 (binary): maintainer-script-without-set-e [postinst]
+libbaz1 (binary): maintainer-script-switches-dir-to-symlink-unsafely "ln -sf ../share/doc/$PKG /usr/doc" [postinst:8]
+libbaz1 (binary): maintainer-script-interpreter /bin/sh [prerm]
+libbaz1 (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/legacy-libbaz/eval/post-test b/t/recipes/checks/scripts/legacy-libbaz/eval/post-test
new file mode 100755
index 0000000..29dc3f4
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-libbaz/eval/post-test
@@ -0,0 +1,4 @@
+/: hardening-.*/ d
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
+s,usr/lib/([^\/]*/)?perl[0-9]*(/[0-9]*\.[0-9]*)?/,usr/lib/ma-dir/perl/version/,g
+/: file-references-package-build-path / d
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/config
new file mode 100644
index 0000000..29abeba
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/config
@@ -0,0 +1,3 @@
+#!/usr/bin/python
+
+# I use python, but that's not what I'm supposed to be allowed to use
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..de4161e
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/config debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..dc30feb
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: scripts
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..6da6b43
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,45 @@
+maintainer-scripts (binary): recursive-privilege-change "chown -R" [postinst:166]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:66]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:65]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:64]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:63]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:62]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:181]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:180]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:179]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:177]
+maintainer-scripts (binary): read-in-maintainer-script [prerm:14]
+maintainer-scripts (binary): read-in-maintainer-script [postinst:20]
+maintainer-scripts (binary): postrm-removes-alternative "update-alternatives --remove" [postrm:4]
+maintainer-scripts (binary): maintainer-script-without-set-e [postinst]
+maintainer-scripts (binary): maintainer-script-switches-dir-to-symlink-unsafely "ln -sf ../share/doc/maintainer-scripts /usr/doc" [postinst:5]
+maintainer-scripts (binary): maintainer-script-removes-device-files "rm /tmp/foo /dev/device" [postrm:40]
+maintainer-scripts (binary): maintainer-script-removes-device-files "rm /dev/device1" [postrm:41]
+maintainer-scripts (binary): maintainer-script-needs-depends-on-xml-core update-xmlcatalog (does not satisfy xml-core) [postinst:76]
+maintainer-scripts (binary): maintainer-script-needs-depends-on-ucf ucf (does not satisfy ucf) [postinst:66]
+maintainer-scripts (binary): maintainer-script-needs-depends-on-gconf2 gconf-schemas (does not satisfy gconf2) [postinst:72]
+maintainer-scripts (binary): maintainer-script-modifies-inetd-conf [postinst:93]
+maintainer-scripts (binary): maintainer-script-modifies-inetd-conf [postinst:92]
+maintainer-scripts (binary): maintainer-script-interpreter /usr/bin/python [config]
+maintainer-scripts (binary): maintainer-script-interpreter /bin/sh [prerm]
+maintainer-scripts (binary): maintainer-script-interpreter /bin/sh [preinst]
+maintainer-scripts (binary): maintainer-script-interpreter /bin/sh [postinst]
+maintainer-scripts (binary): maintainer-script-interpreter /bin/bash [postrm]
+maintainer-scripts (binary): maintainer-script-ignores-errors [preinst]
+maintainer-scripts (binary): maintainer-script-ignores-errors [postrm]
+maintainer-scripts (binary): maintainer-script-hides-init-failure "invoke-rc.d foo start || exit 0" [postinst:56]
+maintainer-scripts (binary): maintainer-script-changes-netbase "mv /usr/share/doc/rpc /etc/rpc" [postinst:86]
+maintainer-scripts (binary): maintainer-script-changes-netbase "cp /nonexistent /etc/protocols" [postinst:85]
+maintainer-scripts (binary): maintainer-script-changes-netbase "> /etc/services" [postinst:84]
+maintainer-scripts (binary): maintainer-script-calls-start-stop-daemon "start-stop-daemon" [postinst:160]
+maintainer-scripts (binary): maintainer-script-calls-install-sgmlcatalog "install-sgmlcatalog" [prerm:58]
+maintainer-scripts (binary): maintainer-script-calls-install-sgmlcatalog "install-sgmlcatalog" [postrm:47]
+maintainer-scripts (binary): maintainer-script-calls-install-sgmlcatalog "install-sgmlcatalog" [postinst:99]
+maintainer-scripts (binary): maintainer-script-calls-install-sgmlcatalog "install-sgmlcatalog" [postinst:100]
+maintainer-scripts (binary): maintainer-script-calls-gconftool "gconftool-2" [postinst:69]
+maintainer-scripts (binary): maintainer-script-calls-chown-improperly "chown root.root" [postinst:33]
+maintainer-scripts (binary): maintainer-script-calls-chown-improperly "chown -R root.root" [postinst:166]
+maintainer-scripts (binary): install-info-used-in-maintainer-script "install-info" [postinst:28]
+maintainer-scripts (binary): forbidden-config-interpreter /usr/bin/python [config]
+maintainer-scripts (binary): command-with-path-in-maintainer-script /usr/bin/baz (plain script) [postinst:172]
+maintainer-scripts (binary): command-with-path-in-maintainer-script /bin/grep (plain script) [preinst:12]
diff --git a/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..ef39375
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: python3 (>= 3.1), python3 (<< 3.2), dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..dc6b7d5
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,111 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 py3.Xfoo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3.Xfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 py3foo $(tmp)/usr/bin/
+# This uses "env" and should trigger script-in-usr-share-doc
+ install -m 755 py3foo $(tmp)/usr/share/doc/scripts/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/fill-values b/t/recipes/checks/scripts/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3.Xfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3.Xfoo
new file mode 100755
index 0000000..7f105e6
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3.Xfoo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3.7
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3foo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3foo
new file mode 100755
index 0000000..02b0444
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/py3foo
@@ -0,0 +1,4 @@
+#! /usr/bin/env python3
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/scripts/legacy-scripts/build-spec/pre-build b/t/recipes/checks/scripts/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/scripts/legacy-scripts/eval/desc b/t/recipes/checks/scripts/legacy-scripts/eval/desc
new file mode 100644
index 0000000..e190650
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: scripts
diff --git a/t/recipes/checks/scripts/legacy-scripts/eval/hints b/t/recipes/checks/scripts/legacy-scripts/eval/hints
new file mode 100644
index 0000000..cdb9f4b
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/eval/hints
@@ -0,0 +1,20 @@
+scripts (binary): wrong-path-for-interpreter /usr/local/bin/lefty != /usr/bin/lefty [usr/bin/lefty-foo]
+scripts (binary): wrong-path-for-interpreter /bin/ruby1.8 != /usr/bin/ruby1.8 [usr/bin/rubyfoo]
+scripts (binary): unusual-interpreter python3.7 [usr/bin/py3.Xfoo]
+scripts (binary): unusual-interpreter /usr/bin/suidperl [usr/bin/suidperlfoo]
+scripts (binary): script-without-interpreter [prerm]
+scripts (binary): script-uses-bin-env /bin/env [usr/bin/envfoo]
+scripts (binary): python3-script-but-no-python3-dep python3 (does not satisfy python3:any | python3-minimal:any) [usr/bin/py3foo]
+scripts (binary): php-script-with-unusual-interpreter php7.0 [usr/share/scripts/php7.0envfoo]
+scripts (binary): php-script-with-unusual-interpreter /usr/bin/php7.0 [usr/share/scripts/php7.0foo]
+scripts (binary): php-script-but-no-php-cli-dep php7.0 (does not satisfy php-cli:any) [usr/share/scripts/php7.0envfoo]
+scripts (binary): php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/scripts/phpenvfoo]
+scripts (binary): php-script-but-no-php-cli-dep /usr/bin/php7.0 (does not satisfy php-cli:any) [usr/share/scripts/php7.0foo]
+scripts (binary): php-script-but-no-php-cli-dep /usr/bin/php (does not satisfy php-cli:any) [usr/share/scripts/phpfoo]
+scripts (binary): missing-dep-for-interpreter /usr/local/bin/lefty (does not satisfy graphviz:any) [usr/bin/lefty-foo]
+scripts (binary): missing-dep-for-interpreter /usr/bin/jruby (does not satisfy jruby:any | jruby1.0:any | jruby1.1:any | jruby1.2:any) [usr/bin/jruby-broken]
+scripts (binary): maintainer-script-without-set-e [postrm]
+scripts (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts (binary): maintainer-script-ignores-errors [postinst]
diff --git a/t/recipes/checks/scripts/legacy-scripts/eval/post-test b/t/recipes/checks/scripts/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/scripts/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst
new file mode 100644
index 0000000..7004ffc
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst
@@ -0,0 +1,87 @@
+#! /bin/sh -e
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/prerm b/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/prerm
new file mode 100644
index 0000000..84098f7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/prerm
@@ -0,0 +1,186 @@
+#!/bin/sh
+
+set -e
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@() # foo
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
+
+# An example from the X maintainer scripts that used to trigger the trap
+# bashism check.
+trap "message;\
+ message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\
+ message;\
+ exit 1" HUP INT QUIT TERM
+
+# Also allow for extended single quotes containing double quotes.
+trap 'message;
+ message "Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.";
+ message;
+ exit 1' HUP INT QUIT TERM
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values b/t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values
new file mode 100644
index 0000000..ab87d45
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-bashisms
+Description: Check bashism detection
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/scripts/scripts-bashisms/eval/desc b/t/recipes/checks/scripts/scripts-bashisms/eval/desc
new file mode 100644
index 0000000..6063543
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-bashisms/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-bashisms
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-bashisms/eval/hints b/t/recipes/checks/scripts/scripts-bashisms/eval/hints
new file mode 100644
index 0000000..34b6f31
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-bashisms/eval/hints
@@ -0,0 +1,14 @@
+scripts-bashisms (binary): read-in-maintainer-script [prerm:7]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:51]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:50]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:49]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:48]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:47]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:166]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:165]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:164]
+scripts-bashisms (binary): read-in-maintainer-script [prerm:162]
+scripts-bashisms (binary): read-in-maintainer-script [postinst:14]
+scripts-bashisms (binary): maintainer-script-without-set-e [postinst]
+scripts-bashisms (binary): maintainer-script-interpreter /bin/sh [prerm]
+scripts-bashisms (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/install b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/install
new file mode 100644
index 0000000..31e3a9e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/install
@@ -0,0 +1,4 @@
+bad /etc/cron.daily
+other-action /etc/cron.daily
+test-first /etc/cron.daily
+self-invoke /etc/init.d
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postinst
new file mode 100644
index 0000000..3feaa42
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+
+update-rc.d self-invoke defaults >/dev/null
+/etc/init.d/self-invoke start
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postrm
new file mode 100644
index 0000000..acba064
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/debian/postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+if [ "remove" = "$1" ] ; then
+ update-rc.d self-invoke remove >/dev/null
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/fill-values b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/fill-values
new file mode 100644
index 0000000..e5cb95f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-calls-init-script
+Description: Test proper use of invoke-rc.d
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/bad b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/bad
new file mode 100755
index 0000000..86c80a7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/bad
@@ -0,0 +1,2 @@
+#!/bin/sh
+/etc/init.d/ntp restart
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/other-action b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/other-action
new file mode 100755
index 0000000..cd58f75
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/other-action
@@ -0,0 +1,3 @@
+#!/bin/sh
+# Only supported invoke-rc.d actions are required to go through invoke-rc.d.
+/etc/init.d/foo frobnicate-the-bazerator
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/self-invoke b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/self-invoke
new file mode 100755
index 0000000..048f01f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/self-invoke
@@ -0,0 +1,30 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: self-invoke
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Test init script
+# Description: Test init script.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ :
+ ;;
+ stop)
+ :
+ ;;
+ restart)
+ /etc/init.d/self-invoke start
+ ;;
+ status)
+ :
+ ;;
+ force-reload)
+ :
+ ;;
+esac
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/test-first b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/test-first
new file mode 100755
index 0000000..5019218
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/build-spec/orig/test-first
@@ -0,0 +1,6 @@
+#!/bin/sh
+if which invoke-rc.d >/dev/null 2>&1 ; then
+ invoke-rc.d ntp restart
+else
+ /etc/init.d/ntp restart
+fi
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/eval/desc b/t/recipes/checks/scripts/scripts-calls-init-script/eval/desc
new file mode 100644
index 0000000..ce838a4
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/eval/desc
@@ -0,0 +1,3 @@
+Testname: scripts-calls-init-script
+See-Also: Debian Bug#381485
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-calls-init-script/eval/hints b/t/recipes/checks/scripts/scripts-calls-init-script/eval/hints
new file mode 100644
index 0000000..cc918e3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-calls-init-script/eval/hints
@@ -0,0 +1,2 @@
+scripts-calls-init-script (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-calls-init-script (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/control.in
new file mode 100644
index 0000000..db28215
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/control.in
@@ -0,0 +1,63 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-paths
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (paths)
+ Interpreters with bad paths.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-forbidden
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (forbidden)
+ Forbidden control interpreters.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-unknown
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (unknown)
+ Unknown control interpreters.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-python
+Architecture: [% $package_architecture %]
+Depends: python3, ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Python)
+ Python control interpreters with depends.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-prepython
+Architecture: [% $package_architecture %]
+Pre-Depends: python3
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (Python preinst)
+ Python control interpreters with pre-depends.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/POTFILES.in b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/POTFILES.in
new file mode 100644
index 0000000..5da079f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] scripts-control-interpreters-forbidden.templates
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/de.po b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/de.po
new file mode 100644
index 0000000..4ab3a8f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/de.po
@@ -0,0 +1,13 @@
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-28 14:30-0800\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. description
+#: ../scripts-control-interpreters-forbidden.templates:1001
+msgid "Enter something:"
+msgstr "Not really a translation:"
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/templates.pot b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/templates.pot
new file mode 100644
index 0000000..6b4af20
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/po/templates.pot
@@ -0,0 +1,23 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-28 14:30-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. description
+#: ../scripts-control-interpreters-forbidden.templates:1001
+msgid "Enter something:"
+msgstr ""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.config b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.config
new file mode 100644
index 0000000..b571bf6
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.config
@@ -0,0 +1,8 @@
+#!/usr/bin/python3
+import sys
+"""
+This is here to fool Lintian to avoid additional tags about debconf.
+. /usr/share/debconf/confmodule
+db_input low scripts-control-interpreters-forbidden/test
+"""
+sys.exit(0)
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postinst
new file mode 100644
index 0000000..3e496b0
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postinst
@@ -0,0 +1,10 @@
+#!/usr/bin/python3
+import sys
+"""
+This is here to fool Lintian to avoid additional tags about debconf.
+. /usr/share/debconf/confmodule
+"""
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postrm b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postrm
new file mode 100644
index 0000000..34cc3ed
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.postrm
@@ -0,0 +1,10 @@
+#!/usr/bin/python3
+import sys
+"""
+This is here to fool Lintian to avoid additional tags about debconf.
+db_purge
+"""
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates
new file mode 100644
index 0000000..05d97b3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-forbidden.templates
@@ -0,0 +1,3 @@
+Template: scripts-control-interpreters-forbidden/test
+Type: string
+_description: Enter something:
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst
new file mode 100644
index 0000000..39cf003
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.postinst
@@ -0,0 +1,5 @@
+#!/usr/bin/bash
+set -e
+run something
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst
new file mode 100644
index 0000000..542236f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.preinst
@@ -0,0 +1,5 @@
+#!/usr/local/bin/bash
+set -e
+run something
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm
new file mode 100644
index 0000000..90c3983
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-paths.prerm
@@ -0,0 +1,6 @@
+#!/bin/python3
+import sys
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.postinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.postinst
new file mode 100644
index 0000000..d56255c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.postinst
@@ -0,0 +1,6 @@
+#!/usr/bin/python3
+import sys
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.preinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.preinst
new file mode 100644
index 0000000..d56255c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-prepython.preinst
@@ -0,0 +1,6 @@
+#!/usr/bin/python3
+import sys
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.postinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.postinst
new file mode 100644
index 0000000..d56255c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.postinst
@@ -0,0 +1,6 @@
+#!/usr/bin/python3
+import sys
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.preinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.preinst
new file mode 100644
index 0000000..d56255c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-python.preinst
@@ -0,0 +1,6 @@
+#!/usr/bin/python3
+import sys
+sys.exit(0)
+"""
+#DEBHELPER#
+"""
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst
new file mode 100644
index 0000000..a5ded5a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/debian/scripts-control-interpreters-unknown.postinst
@@ -0,0 +1,6 @@
+#!/usr/bin/unknown
+do the unknown thing
+shellicate this stuff (
+#DEBHELPER#
+) yay!
+exit happily
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/fill-values b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/fill-values
new file mode 100644
index 0000000..99b7449
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-control-interpreters
+Description: Check maintainer and config script interpreters
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/eval/desc b/t/recipes/checks/scripts/scripts-control-interpreters/eval/desc
new file mode 100644
index 0000000..9172f4f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/eval/desc
@@ -0,0 +1,3 @@
+Testname: scripts-control-interpreters
+See-Also: Debian Bug#508307
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-control-interpreters/eval/hints b/t/recipes/checks/scripts/scripts-control-interpreters/eval/hints
new file mode 100644
index 0000000..f82d12e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-control-interpreters/eval/hints
@@ -0,0 +1,26 @@
+scripts-control-interpreters-unknown (binary): unknown-control-interpreter /usr/bin/unknown [postinst]
+scripts-control-interpreters-unknown (binary): maintainer-script-interpreter /usr/bin/unknown [postinst]
+scripts-control-interpreters-python (binary): unusual-control-interpreter /usr/bin/python3 [preinst]
+scripts-control-interpreters-python (binary): unusual-control-interpreter /usr/bin/python3 [postinst]
+scripts-control-interpreters-python (binary): maintainer-script-interpreter /usr/bin/python3 [preinst]
+scripts-control-interpreters-python (binary): maintainer-script-interpreter /usr/bin/python3 [postinst]
+scripts-control-interpreters-python (binary): control-interpreter-without-predepends /usr/bin/python3 (does not satisfy python3:any | python3-minimal:any) [preinst]
+scripts-control-interpreters-prepython (binary): unusual-control-interpreter /usr/bin/python3 [preinst]
+scripts-control-interpreters-prepython (binary): unusual-control-interpreter /usr/bin/python3 [postinst]
+scripts-control-interpreters-prepython (binary): maintainer-script-interpreter /usr/bin/python3 [preinst]
+scripts-control-interpreters-prepython (binary): maintainer-script-interpreter /usr/bin/python3 [postinst]
+scripts-control-interpreters-paths (binary): wrong-path-for-interpreter /usr/bin/bash != /bin/bash [postinst]
+scripts-control-interpreters-paths (binary): wrong-path-for-interpreter /bin/python3 != /usr/bin/python3 [prerm]
+scripts-control-interpreters-paths (binary): unusual-control-interpreter /bin/python3 [prerm]
+scripts-control-interpreters-paths (binary): maintainer-script-interpreter /usr/local/bin/bash [preinst]
+scripts-control-interpreters-paths (binary): maintainer-script-interpreter /usr/bin/bash [postinst]
+scripts-control-interpreters-paths (binary): maintainer-script-interpreter /bin/python3 [prerm]
+scripts-control-interpreters-paths (binary): control-interpreter-without-depends /bin/python3 (does not satisfy python3:any | python3-minimal:any) [prerm]
+scripts-control-interpreters-paths (binary): control-interpreter-in-usr-local /usr/local/bin/bash [preinst]
+scripts-control-interpreters-forbidden (binary): unusual-control-interpreter /usr/bin/python3 [postinst]
+scripts-control-interpreters-forbidden (binary): maintainer-script-interpreter /usr/bin/python3 [postrm]
+scripts-control-interpreters-forbidden (binary): maintainer-script-interpreter /usr/bin/python3 [postinst]
+scripts-control-interpreters-forbidden (binary): maintainer-script-interpreter /usr/bin/python3 [config]
+scripts-control-interpreters-forbidden (binary): forbidden-postrm-interpreter /usr/bin/python3 [postrm]
+scripts-control-interpreters-forbidden (binary): forbidden-config-interpreter /usr/bin/python3 [config]
+scripts-control-interpreters-forbidden (binary): control-interpreter-without-depends /usr/bin/python3 (does not satisfy python3:any | python3-minimal:any) [postinst]
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/install b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/install
new file mode 100644
index 0000000..c29cc54
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/install
@@ -0,0 +1,4 @@
+orphan usr/share/scripts/t1
+some-file usr/share/scripts/t1
+orphan usr/share/scripts/t2/foo
+some-file usr/share/scripts/t2/foo
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/postrm
new file mode 100644
index 0000000..73b8ee9
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/postrm
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+if [ remove = "$1" ]; then
+ # Clean up the correct diversion from preinst.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ --divert /usr/share/scripts/t2/foo/some-file.real \
+ "/usr/share/scripts/t2/foo/some-file"
+
+ d=scripts
+ # Clean up some other diversion that we didn't create.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/lib/$d/old-file; echo hi
+
+ # Clean up a diversion we did not create for a non-existent file.
+ dpkg-divert --remove --package scripts-diversions --rename \
+ --divert /usr/share/scripts/$v/no-such-file.real \
+ /usr/share/scripts/$v/no-such-file && echo hello
+
+ # Clean up a diversion we did create for a non-existent file.
+ (dpkg-divert --package foo --remove /etc/scripts/orphan)
+ # another one:
+ { dpkg-divert --package foo --remove /usr/share/foo/$(echo bar); }
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/preinst b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/preinst
new file mode 100644
index 0000000..c311563
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/debian/preinst
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -e
+
+if [ install = "$1" ]; then
+ # This is a correct diversion.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/t2/foo/some-file.real \
+ /usr/share/scripts/t2/foo/some-file
+
+ # This is broken -- can't use local.
+ dpkg-divert --local \
+ --add \
+ --divert \
+ /usr/share/scripts/other-file.real \
+ /usr/share/scripts/other-file
+
+ f=orphan
+ # This is also correct, but we're not going to clean it up.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/t1/$f.real \
+ /usr/share/scripts/t1/"$f"
+
+ # Try to divert a file we don't ship
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /etc/scripts/$f.real \
+ /etc/scripts/$f|| true
+ # Another one
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/foo/$f.real \
+ /usr/share/foo/${f#f}
+
+ # This is correct too.
+ dpkg-divert $SOMETHING --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/t2/foo/some-file.real \
+ /usr/share/scripts/t2/foo/some-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/fill-values b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/fill-values
new file mode 100644
index 0000000..a2852bf
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-diversions-variables
+Description: Tests of dpkg-divert checks with variables
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/orphan b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/orphan
new file mode 100644
index 0000000..934fd74
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/orphan
@@ -0,0 +1 @@
+Some file that we're going to divert and not clean up.
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/some-file b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/some-file
new file mode 100644
index 0000000..649e369
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/build-spec/orig/some-file
@@ -0,0 +1 @@
+Some random file that we're going to install after diverting.
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/eval/desc b/t/recipes/checks/scripts/scripts-diversions-variables/eval/desc
new file mode 100644
index 0000000..a8d79ff
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-diversions-variables
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-diversions-variables/eval/hints b/t/recipes/checks/scripts/scripts-diversions-variables/eval/hints
new file mode 100644
index 0000000..2d4663e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions-variables/eval/hints
@@ -0,0 +1,2 @@
+scripts-diversions-variables (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-diversions-variables (binary): maintainer-script-interpreter /bin/sh [postrm]
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/install b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/install
new file mode 100644
index 0000000..bf6447b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/install
@@ -0,0 +1,5 @@
+orphan usr/share/scripts
+some-file usr/share/scripts
+file.1 usr/share/scripts
+foo usr/bin
+foo.1p usr/share/man/man1
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postinst
new file mode 100644
index 0000000..f397e7d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+# This isn't a diversion we create anywhere, but we're allowed to do this in
+# postinst in case we're cleaning up after a previous version.
+if [ configure = "$1" ] && dpkg-divert --list '*old-file' >/dev/null ; then
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/share/scripts/old-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postrm
new file mode 100644
index 0000000..26128e9
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/postrm
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+if [ remove = "$1" ]; then
+ # Clean up the correct diversion from preinst.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ --divert /usr/share/scripts/some-file.real \
+ /usr/share/scripts/some-file
+
+ # Clean up some other diversion that we didn't create.
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/share/scripts/old-file
+
+ # Clean up a diversion we did create for a non-existent file.
+ dpkg-divert --remove --package scripts-diversions --rename \
+ --divert /usr/share/scripts/no-such-file.real \
+ /usr/share/scripts/no-such-file
+
+ # Regression test for diversions ending in numbers (Bug#534942)
+ dpkg-divert --remove --package scripts-diversions \
+ --divert /usr/share/scripts/file.1.real \
+ /usr/share/scripts/file.1 > /dev/null
+
+ # Clean up the diversion for a binary man page.
+ dpkg-divert --remove --package scripts-diversions \
+ --divert /usr/share/man/man1/foo.real.1.gz \
+ /usr/share/man/man1/foo.1.gz
+
+ # Clean up a local diversion.
+ dpkg-divert --local --remove --divert /usr/share/scripts/other-file.real \
+ /usr/share/scripts/other-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/preinst b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/preinst
new file mode 100644
index 0000000..b590f9d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/debian/preinst
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+
+if [ install = "$1" ]; then
+ # This is a correct diversion.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/some-file.real \
+ /usr/share/scripts/some-file
+
+ # This is broken -- can't use local.
+ dpkg-divert --local --add --divert /usr/share/scripts/other-file.real \
+ /usr/share/scripts/other-file
+
+ # This was broken until dpkg 1.16.0 (Wheezy), see #679132
+ dpkg-divert --add --divert /usr/share/scripts/another-file.real \
+ /usr/share/scripts/another-file
+
+ # This is also correct, but we're not going to clean it up. While we're
+ # at it, make sure we strip trailing redirections.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/orphan.real \
+ /usr/share/scripts/orphan > /dev/null
+
+ # The same one again, but with a different redirection.
+ dpkg-divert --package scripts-diversions --add --rename \
+ --divert /usr/share/scripts/orphan.real \
+ /usr/share/scripts/orphan 2> /dev/null
+
+ # This is broken because the file doesn't exist.
+ dpkg-divert --add --package scripts-diversions --rename \
+ --divert /usr/share/scripts/no-such-file.real \
+ /usr/share/scripts/no-such-file
+
+ # Regression test for diversions ending in numbers (Bug#534942)
+ dpkg-divert --add --rename --package scripts-diversions \
+ --divert /usr/share/scripts/file.1.real \
+ /usr/share/scripts/file.1 > /dev/null
+
+ # We're allowed to divert a man page to install another man page in a
+ # different section but the same numeric section. (Bug#543781)
+ dpkg-divert --add --rename --package scripts-diversions \
+ --divert /usr/share/man/man1/foo.real.1.gz \
+ /usr/share/man/man1/foo.1.gz
+fi
+
+# This isn't a diversion we create anywhere, but we're allowed to do this in
+# preinst in case we're cleaning up after a previous version.
+if [ upgrade = "$1" ] && dpkg-divert --list '*old-file' >/dev/null ; then
+ dpkg-divert --package scripts-diversions --remove --rename \
+ /usr/share/scripts/old-file
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/fill-values b/t/recipes/checks/scripts/scripts-diversions/build-spec/fill-values
new file mode 100644
index 0000000..df30405
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-diversions
+Description: Tests of dpkg-divert checks
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/file.1 b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/file.1
new file mode 100644
index 0000000..a58ae6c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/file.1
@@ -0,0 +1 @@
+Some file ending in a number.
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo
new file mode 100755
index 0000000..adff45d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo 'Fake foo binary'
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo.1p b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo.1p
new file mode 100644
index 0000000..c3088fd
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/foo.1p
@@ -0,0 +1,3 @@
+.TH foo 1p
+.SH NAME
+foo \- a fake man page for a foo
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/orphan b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/orphan
new file mode 100644
index 0000000..934fd74
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/orphan
@@ -0,0 +1 @@
+Some file that we're going to divert and not clean up.
diff --git a/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/some-file b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/some-file
new file mode 100644
index 0000000..649e369
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/build-spec/orig/some-file
@@ -0,0 +1 @@
+Some random file that we're going to install after diverting.
diff --git a/t/recipes/checks/scripts/scripts-diversions/eval/desc b/t/recipes/checks/scripts/scripts-diversions/eval/desc
new file mode 100644
index 0000000..1b2a3f3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-diversions
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-diversions/eval/hints b/t/recipes/checks/scripts/scripts-diversions/eval/hints
new file mode 100644
index 0000000..a18b873
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-diversions/eval/hints
@@ -0,0 +1,3 @@
+scripts-diversions (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-diversions (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-diversions (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postinst
new file mode 100644
index 0000000..9438152
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# This file should not be triggered by script-without-interpreter
+
+set -e
+
+true
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postrm
new file mode 100644
index 0000000..5a2a7e7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/postrm
@@ -0,0 +1,7 @@
+# This file should be triggered by script-without-interpreter
+
+set -e
+
+true
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/rules b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/rules
new file mode 100755
index 0000000..84ab89a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ gcc -o debian/$(shell dh_listpackages)/DEBIAN/preinst true.c
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/fill-values b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/fill-values
new file mode 100644
index 0000000..6958689
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-does-not-start-with-shebang
+Description: Check for maintainer scripts that do not start with #!
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/orig/true.c b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/orig/true.c
new file mode 100644
index 0000000..8479e67
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/build-spec/orig/true.c
@@ -0,0 +1,5 @@
+int
+main(void)
+{
+ return 0;
+}
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/desc b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/desc
new file mode 100644
index 0000000..321fccc
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-does-not-start-with-shebang
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/hints b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/hints
new file mode 100644
index 0000000..61379e0
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-does-not-start-with-shebang/eval/hints
@@ -0,0 +1,3 @@
+scripts-does-not-start-with-shebang (binary): script-without-interpreter [postrm]
+scripts-does-not-start-with-shebang (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-does-not-start-with-shebang (binary): elf-maintainer-script [preinst]
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/debian/clean b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/clean
new file mode 100644
index 0000000..8f76e67
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/clean
@@ -0,0 +1 @@
+man/
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/debian/install b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/install
new file mode 100644
index 0000000..0486c9a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/install
@@ -0,0 +1 @@
+*-script usr/bin/
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/debian/manpages b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/manpages
new file mode 100644
index 0000000..bf519d7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*.1
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/debian/rules b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/rules
new file mode 100755
index 0000000..ef51115
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/debian/rules
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+TMP:=debian/$(shell dh_listpackages)/
+%:
+ dh $@
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod 0755 $(TMP)/usr/bin/01-normal-script
+ chmod 0644 $(TMP)/usr/bin/02-no-exec-script
+ rm -f $(TMP)/usr/bin/03-hardlink-script
+ ln $(TMP)/usr/bin/01-normal-script $(TMP)/usr/bin/03-hardlink-script
+ chmod 0755 $(TMP)/usr/bin/04-not-a-script
+
+override_dh_auto_build:
+ mkdir man
+ for FILE in *-script ; do \
+ sed s/@SCRIPT@/$$FILE/g script.pod | \
+ pod2man --name="$$(echo "$$FILE" | tr a-z A-Z )" \
+ --section=1 > man/$$FILE.1 ; \
+ done
+
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/fill-values b/t/recipes/checks/scripts/scripts-exec/build-spec/fill-values
new file mode 100644
index 0000000..f442e51
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-exec
+Description: Check for exec bit related issues for scripts
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/orig/01-normal-script b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/01-normal-script
new file mode 100644
index 0000000..97fd3b7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/01-normal-script
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo "Hallo world"
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/orig/02-no-exec-script b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/02-no-exec-script
new file mode 100644
index 0000000..98b699f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/02-no-exec-script
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo "Goodbye world"
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/orig/03-hardlink-script b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/03-hardlink-script
new file mode 100644
index 0000000..e7959bb
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/03-hardlink-script
@@ -0,0 +1 @@
+Not actually installed/tested; just here to ensure manpage is generated.
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/orig/04-not-a-script b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/04-not-a-script
new file mode 100644
index 0000000..84cf6d3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/04-not-a-script
@@ -0,0 +1,2 @@
+# This is not a script nor an ELF executable, but yet it will be marked
+# executable. Tsk tsk tsk.
diff --git a/t/recipes/checks/scripts/scripts-exec/build-spec/orig/script.pod b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/script.pod
new file mode 100644
index 0000000..8ffa2d0
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/build-spec/orig/script.pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+@SCRIPT@ - Cool script to do stuff written in some script language.
+
+=head1 SYNOPSIS
+
+@SCRIPT@ --cool-argument
+
+=head1 DESCRIPTION
+
+This script is very awesome and does something you do not even know
+you need.
+
+=head1 AUTHOR
+
+I made this
+
+
diff --git a/t/recipes/checks/scripts/scripts-exec/eval/desc b/t/recipes/checks/scripts/scripts-exec/eval/desc
new file mode 100644
index 0000000..1fc7bcc
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-exec
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-exec/eval/hints b/t/recipes/checks/scripts/scripts-exec/eval/hints
new file mode 100644
index 0000000..8e17f03
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-exec/eval/hints
@@ -0,0 +1 @@
+scripts-exec (binary): script-not-executable [usr/bin/02-no-exec-script]
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/examples b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/examples
new file mode 100644
index 0000000..673fc28
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/examples
@@ -0,0 +1,2 @@
+usr-bin-env-node
+usr-bin-env-nodejs
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/install b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/install
new file mode 100644
index 0000000..2dd5ea8
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/install
@@ -0,0 +1,2 @@
+usr-bin-env-node usr/bin/
+usr-bin-env-nodejs usr/bin/
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/links b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/links
new file mode 100644
index 0000000..512253e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/links
@@ -0,0 +1,2 @@
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-bin-env-node.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-bin-env-nodejs.1
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/manpages b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/manpages
new file mode 100644
index 0000000..74d51b8
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/debian/manpages
@@ -0,0 +1 @@
+interpreters.1
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/fill-values b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/fill-values
new file mode 100644
index 0000000..9fc1348
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-interpreters-nodejs
+Description: Check various NodeJS issues
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/interpreters.1 b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/interpreters.1
new file mode 100644
index 0000000..9e6dd89
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/interpreters.1
@@ -0,0 +1,5 @@
+.TH interpreters 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+interpreters \- test script
+
+Dummy manpage to avoid triggering warnings about it not existing.
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-node b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-node
new file mode 100644
index 0000000..4b8c521
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-node
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+
+This is not a real JS script but sufficient for the testsuite.
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-nodejs b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-nodejs
new file mode 100644
index 0000000..ecd3563
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/build-spec/orig/usr-bin-env-nodejs
@@ -0,0 +1,3 @@
+#!/usr/bin/env nodejs
+
+This is not a real JS script but sufficient for the testsuite.
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/desc b/t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/desc
new file mode 100644
index 0000000..01cdd3d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-interpreters-nodejs
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/hints b/t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/hints
new file mode 100644
index 0000000..ba484e8
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters-nodejs/eval/hints
@@ -0,0 +1,4 @@
+scripts-interpreters-nodejs (binary): script-uses-deprecated-nodejs-location nodejs [usr/bin/usr-bin-env-nodejs]
+scripts-interpreters-nodejs (binary): missing-dep-for-interpreter nodejs (does not satisfy nodejs:any) [usr/bin/usr-bin-env-nodejs]
+scripts-interpreters-nodejs (binary): missing-dep-for-interpreter node (does not satisfy nodejs:any) [usr/bin/usr-bin-env-node]
+scripts-interpreters-nodejs (binary): example-script-uses-deprecated-nodejs-location nodejs [usr/share/doc/scripts-interpreters-nodejs/examples/usr-bin-env-nodejs]
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/control.in
new file mode 100644
index 0000000..24733b6
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, python2.7, csh, cwltool
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/examples b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/examples
new file mode 100644
index 0000000..dbf0e0e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/examples
@@ -0,0 +1,9 @@
+bin-env
+no-interpreter
+not-absolute
+syntax
+unusual
+unversioned-pike
+usr-bin-env-perl
+usr-local
+wrong-perl-path
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/install b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/install
new file mode 100644
index 0000000..eb2fbdd
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/install
@@ -0,0 +1,14 @@
+bin-env usr/bin/
+csh-shell usr/bin/
+cwl-runner usr/bin/
+no-interpreter usr/bin/
+not-absolute usr/bin/
+python2.7 usr/bin/
+syntax usr/bin/
+unusual usr/bin/
+unversioned-pike usr/bin/
+usr-bin-env-perl usr/bin/
+usr-local usr/bin/
+usr-local-bin-perl usr/bin/
+versioned-pike usr/bin/
+wrong-perl-path usr/bin/
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/links b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/links
new file mode 100644
index 0000000..ff8f522
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/links
@@ -0,0 +1,14 @@
+usr/share/man/man1/interpreters.1 usr/share/man/man1/bin-env.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/csh-shell.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/cwl-runner.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/no-interpreter.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/not-absolute.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/python2.7.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/syntax.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/unusual.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/unversioned-pike.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-bin-env-perl.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local-bin-perl.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/versioned-pike.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/wrong-perl-path.1
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/manpages b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/manpages
new file mode 100644
index 0000000..74d51b8
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/debian/manpages
@@ -0,0 +1 @@
+interpreters.1
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/fill-values b/t/recipes/checks/scripts/scripts-interpreters/build-spec/fill-values
new file mode 100644
index 0000000..f92de59
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-interpreters
+Description: Check various script interpreter issues
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/bin-env b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/bin-env
new file mode 100644
index 0000000..005e1a9
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/bin-env
@@ -0,0 +1,2 @@
+#!/bin/env perl
+print "Hello world\n";
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/csh-shell b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/csh-shell
new file mode 100644
index 0000000..3e39c0b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/csh-shell
@@ -0,0 +1 @@
+#!/bin/csh
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/cwl-runner b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/cwl-runner
new file mode 100644
index 0000000..3f3280f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/cwl-runner
@@ -0,0 +1 @@
+#!/usr/bin/cwl-runner
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/interpreters.1 b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/interpreters.1
new file mode 100644
index 0000000..9e6dd89
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/interpreters.1
@@ -0,0 +1,5 @@
+.TH interpreters 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+interpreters \- test script
+
+Dummy manpage to avoid triggering warnings about it not existing.
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/no-interpreter b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/no-interpreter
new file mode 100644
index 0000000..3487806
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/no-interpreter
@@ -0,0 +1,3 @@
+#!
+# Script missing any interpreter.
+true
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/not-absolute b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/not-absolute
new file mode 100644
index 0000000..ee656c6
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/not-absolute
@@ -0,0 +1,2 @@
+#!perl
+print "Hello world\n";
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/python2.7 b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/python2.7
new file mode 100644
index 0000000..1989667
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/python2.7
@@ -0,0 +1,3 @@
+#!/usr/bin/python2.7
+import sys
+sys.exit(0)
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/syntax b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/syntax
new file mode 100644
index 0000000..c04b97f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/syntax
@@ -0,0 +1,4 @@
+#!/bin/sh
+# A shell script with a syntax error.
+if true ; then
+ echo True
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unusual b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unusual
new file mode 100644
index 0000000..8a74f66
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unusual
@@ -0,0 +1,2 @@
+#!/usr/bin/lintian
+use lintian shell to check package
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unversioned-pike b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unversioned-pike
new file mode 100644
index 0000000..f1eaf01
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/unversioned-pike
@@ -0,0 +1,4 @@
+#! /usr/bin/pike
+
+This is not a real pike script but sufficient to trigger a warning that the package
+is missing a dependency for the interpreter.
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-bin-env-perl b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-bin-env-perl
new file mode 100644
index 0000000..069c68b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-bin-env-perl
@@ -0,0 +1,3 @@
+#!/usr/bin/env perl
+
+print "Hello world\n";
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local
new file mode 100644
index 0000000..be79cf8
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local
@@ -0,0 +1,2 @@
+#!/usr/local/bin/special-perl
+print "Hello world\n";
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local-bin-perl b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local-bin-perl
new file mode 100644
index 0000000..3c8f6fa
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/usr-local-bin-perl
@@ -0,0 +1,3 @@
+#!/usr/local/bin/perl
+
+print "Hello world\n";
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/versioned-pike b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/versioned-pike
new file mode 100644
index 0000000..6b3b65b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/versioned-pike
@@ -0,0 +1,4 @@
+#! /usr/bin/pike7.6
+
+This is not a real pike script but sufficient to trigger a warning that the package
+is missing a dependency for the interpreter.
diff --git a/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/wrong-perl-path b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/wrong-perl-path
new file mode 100644
index 0000000..1602d4e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/build-spec/orig/wrong-perl-path
@@ -0,0 +1,2 @@
+#!/bin/perl
+print "Hello world\n";
diff --git a/t/recipes/checks/scripts/scripts-interpreters/eval/desc b/t/recipes/checks/scripts/scripts-interpreters/eval/desc
new file mode 100644
index 0000000..7ee5e3f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/eval/desc
@@ -0,0 +1,3 @@
+Testname: scripts-interpreters
+See-Also: Debian Bug#543873
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-interpreters/eval/hints b/t/recipes/checks/scripts/scripts-interpreters/eval/hints
new file mode 100644
index 0000000..e9858ff
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-interpreters/eval/hints
@@ -0,0 +1,19 @@
+scripts-interpreters (binary): wrong-path-for-interpreter perl != /usr/bin/perl [usr/bin/not-absolute]
+scripts-interpreters (binary): wrong-path-for-interpreter /usr/local/bin/perl != /usr/bin/perl [usr/bin/usr-local-bin-perl]
+scripts-interpreters (binary): wrong-path-for-interpreter /bin/perl != /usr/bin/perl [usr/bin/wrong-perl-path]
+scripts-interpreters (binary): unusual-interpreter /usr/bin/lintian [usr/bin/unusual]
+scripts-interpreters (binary): script-without-interpreter [usr/bin/no-interpreter]
+scripts-interpreters (binary): script-uses-bin-env /bin/env [usr/bin/bin-env]
+scripts-interpreters (binary): missing-dep-for-interpreter /usr/bin/pike7.6 (does not satisfy pike7.6:any | pike7.6-core:any) [usr/bin/versioned-pike]
+scripts-interpreters (binary): missing-dep-for-interpreter /usr/bin/pike (does not satisfy pike7.6:any | pike7.6-core:any | pike7.8:any | pike7.8-core:any) [usr/bin/unversioned-pike]
+scripts-interpreters (binary): interpreter-not-absolute perl [usr/bin/not-absolute]
+scripts-interpreters (binary): interpreter-in-usr-local /usr/local/bin/special-perl [usr/bin/usr-local]
+scripts-interpreters (binary): incorrect-path-for-interpreter /usr/bin/env perl != /usr/bin/perl [usr/bin/usr-bin-env-perl]
+scripts-interpreters (binary): example-wrong-path-for-interpreter perl != /usr/bin/perl [usr/share/doc/scripts-interpreters/examples/not-absolute]
+scripts-interpreters (binary): example-wrong-path-for-interpreter /bin/perl != /usr/bin/perl [usr/share/doc/scripts-interpreters/examples/wrong-perl-path]
+scripts-interpreters (binary): example-unusual-interpreter /usr/bin/lintian [usr/share/doc/scripts-interpreters/examples/unusual]
+scripts-interpreters (binary): example-script-without-interpreter [usr/share/doc/scripts-interpreters/examples/no-interpreter]
+scripts-interpreters (binary): example-script-uses-bin-env /bin/env [usr/share/doc/scripts-interpreters/examples/bin-env]
+scripts-interpreters (binary): example-interpreter-not-absolute perl [usr/share/doc/scripts-interpreters/examples/not-absolute]
+scripts-interpreters (binary): example-interpreter-in-usr-local /usr/local/bin/special-perl [usr/share/doc/scripts-interpreters/examples/usr-local]
+scripts-interpreters (binary): example-incorrect-path-for-interpreter /usr/bin/env perl != /usr/bin/perl [usr/share/doc/scripts-interpreters/examples/usr-bin-env-perl]
diff --git a/t/recipes/checks/scripts/scripts-killall/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-killall/build-spec/debian/postinst
new file mode 100644
index 0000000..0e052fe
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-killall/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+killall fish
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/scripts/scripts-killall/build-spec/fill-values b/t/recipes/checks/scripts/scripts-killall/build-spec/fill-values
new file mode 100644
index 0000000..7d78e3c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-killall/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-killall
+Description: Test for killall usage in maint script
diff --git a/t/recipes/checks/scripts/scripts-killall/eval/desc b/t/recipes/checks/scripts/scripts-killall/eval/desc
new file mode 100644
index 0000000..f791e4c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-killall/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-killall
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-killall/eval/hints b/t/recipes/checks/scripts/scripts-killall/eval/hints
new file mode 100644
index 0000000..27cfd7d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-killall/eval/hints
@@ -0,0 +1 @@
+scripts-killall (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/maintscript b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/maintscript
new file mode 100644
index 0000000..c3dcfac
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/maintscript
@@ -0,0 +1 @@
+mv_conffile /etc/foo/old.conf /etc/foo/new.conf 0~
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postinst
new file mode 100755
index 0000000..492f84a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postinst
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# This file contains a pile of random junk in maintainer scripts that we
+# should be checking for in checks/scripts. Don't put bashisms in this file,
+# though; those should go into scripts-bashisms.
+
+set -e
+
+print "Hit enter to continue"
+read foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated and not allowed except the second one.
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+# The first should not trigger an error about a command with a path, but the
+# second should.
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+/usr/bin/baz; echo bar
+
+# fc-cache shouldn't be called directly, but make sure we don't see it in a
+# heredoc.
+fc-cache
+cat <<EOF
+fc-cache
+EOF
+
+# Obsolete suidregister program.
+suidregister /usr/bin/foo
+
+# install-info is now handled through triggers.
+install-info --quiet --section Development Development \
+ /usr/share/info/foobar.info
+
+# Packages don't get to modify /etc/ld.so.conf
+echo '/usr/local/lib' >> /etc/ld.so.conf
+( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new
+mv /etc/ld.so.conf.new /etc/ld.so.conf
+
+# Further tests for commands with paths in maintainer scripts. The following
+# should not trigger a tag (Bug#536397).
+chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2
+
+# These, however, should.
+true `basename "$0"` `/usr/bin/foo bar`
+true `/usr/bin/foo "$0"`
+
+# This line should not trigger a warning about no dependency on ucf because of
+# the || true. (Bug#541372)
+ucf -p /etc/sensors3.conf || true
+
+if false ; then
+ mknod some thing
+fi
+
+# Calling update alternative --set see #643602
+update-alternatives --set editor /usr/bin/nano
+
+# false positive
+start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo
+
+# false positive
+start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo
+
+# false negative
+start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo
+
+# remove device file
+rm /dev/null
+
+# false positive
+rm /dev/shm/test
+rm /dev/.hiddenfile
+
+# adduser system
+adduser --system foo
+adduser --system foo2 --home /home/foo2
+adduser --system bar --home /var/lib/bar
+adduser --home /var/lib/fnord --system fnord
+adduser --home /home/fnord2 --system fnord2
+
+# other test case for gconftool
+/usr/bin/gconftool-2 --makefile-install-rule foo.schema
+
+# service
+service apache2 start
+
+# adduser through variable
+DEVNULL=/dev/null
+adduser --system bar1 --home $DEVNULL
+adduser --system bar2 --home ${DEVNULL}
+
+# this is a false positive due to quoting
+adduser --system bar2 --home "${DEVNULL}"
+adduser --system --ingroup smmta --home "/var/lib/sendmail" \
+ --disabled-password \
+ --quiet --gecos 'Mail Transfer Agent' smmta;
+
+# false positive
+echo "You can use update-alternatives --config runsystem to select"
+echo "the runsystem to use."
+
+# false negative
+DIVERSIONS=`env LC_ALL=C /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL="C" /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+DIVERSIONS=`env LC_ALL='C' /usr/sbin/dpkg-divert --list | grep -E 'by amule(-utils)?$'` || true
+
+if [ ! -x /usr/sbin/dpkg-state-override ] || \
+ ! dpkg-state-override > /dev/null
+then
+ true;
+fi
+
+# bad
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html/ \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# good
+dpkg-maintscript-helper symlink_to_dir \
+ /usr/share/autoconf-archive/html \
+ ../../autoconf-archive/html \
+ 20111221-2~ -- "$@"
+
+# true positive
+adduser --system --quiet --ingroup ntp --no-create-home ntp
+adduser festival --quiet --system --ingroup audio --no-create-home
+
+# detect usage that could be replaced by dpkg-maintscript-helper
+if [ -d /usr/share/doc/tworld ]; then
+ if rmdir /usr/share/doc/tworld 2>/dev/null; then
+ ln -s tworld-data /usr/share/doc/tworld
+ fi
+fi
+
+chown root:root /good
+chmod 777 /good
+chown -R root:root /bad
+chown root:root -R /bad
+chown root:root --recursive /bad
+chown --recursive root:root /bad
+chmod -R 777 /bad
+chmod 777 -R /bad
+chmod 777 --recursive /bad
+chmod --recursive 777 /bad
+find /bad -maxdepth 2 -type d -exec chown root:root {} \; # (#895370)
+find /bad -maxdepth 2 -type d -exec chmod 777 # (#895370)
+
+echo /var/lib/dpkg/info/other-package.conffiles
+echo /var/lib/dpkg/info/other-package.md5sums
+echo /var/lib/dpkg/info/other-package.shlibs
+echo /var/lib/dpkg/info/other-package.postinst
+echo /var/lib/dpkg/info/other-package.preinst
+echo /var/lib/dpkg/info/other-package.list
+echo /var/lib/dpkg/triggers/other-package
+
+getent passwd good || true
+getent group good || true
+getent passwd good || true # grep /etc/passwd false-positive
+getent group good || true # grep /etc/group false-positive
+grep bad /etc/passwd || true
+grep bad /etc/group || true
+grep -E bad /etc/passwd || true
+grep -E bad /etc/passwd || true
+grep -F bad /etc/group || true
+grep -F bad /etc/group || true
+# grep /etc/passwd false-positive
+# grep /etc/group false-positive
+
+echo $PIUPARTS_TEST # bad
+echo ${PIUPARTS_OBJECTS}
+echo ${PIUPARTS_PHASE}
+echo ${PIUPARTS_DISTRIBUTION}
+echo ${PIUPARTS_DISTRIBUTION_NEXT}
+echo ${PIUPARTS_DISTRIBUTION_PREV}
+echo $PIUPARTS_IS_AWESOME # good
+
+#DEBHELPER#
+
+# Automatically added by dh_dummy/12
+true `/usr/bin/false-positive "$0"`
+# End automatically added section
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postrm
new file mode 100644
index 0000000..21ce89e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh
+# we do not set -e
+
+echo "ok" > /dev/null
+
+# not allowed
+update-alternatives --remove foo
+
+#DEBHELPER# \ No newline at end of file
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/prerm b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/prerm
new file mode 100644
index 0000000..fcbd64e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+# This script should fail a syntax check
+
+if [ "$1" = configure ] then # oh look - I forgot a ;
+ echo "Hallo world"
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/rules b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/rules
new file mode 100644
index 0000000..6f66b82
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installdeb:
+ dh_installdeb
+ echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/fill-values b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/fill-values
new file mode 100644
index 0000000..111edec
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-general
+Distribution: precise
+Description: Check general problems in maintainer scripts
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/eval/desc b/t/recipes/checks/scripts/scripts-maintainer-general/eval/desc
new file mode 100644
index 0000000..1d06365
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-maintainer-general
+Profile: ubuntu/main
+Check: scripts
+See-Also:
+ Bug#532984
diff --git a/t/recipes/checks/scripts/scripts-maintainer-general/eval/hints b/t/recipes/checks/scripts/scripts-maintainer-general/eval/hints
new file mode 100644
index 0000000..c8e171c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-general/eval/hints
@@ -0,0 +1,83 @@
+scripts-maintainer-general (binary): trailing-slash-for-dpkg-maintscript-helper-symlink_to_dir "dpkg-maintscript-helper symlink_to_dir /usr/share/autoconf-archive/html/" [postinst:190]
+scripts-maintainer-general (binary): recursive-privilege-change "find /bad -maxdepth 2 -type d -exec chown" [postinst:219]
+scripts-maintainer-general (binary): recursive-privilege-change "find /bad -maxdepth 2 -type d -exec chmod" [postinst:220]
+scripts-maintainer-general (binary): recursive-privilege-change "chown root:root -R" [postinst:212]
+scripts-maintainer-general (binary): recursive-privilege-change "chown root:root --recursive" [postinst:213]
+scripts-maintainer-general (binary): recursive-privilege-change "chown -R" [postinst:84]
+scripts-maintainer-general (binary): recursive-privilege-change "chown -R" [postinst:211]
+scripts-maintainer-general (binary): recursive-privilege-change "chown --recursive" [postinst:214]
+scripts-maintainer-general (binary): recursive-privilege-change "chmod 777 -R" [postinst:216]
+scripts-maintainer-general (binary): recursive-privilege-change "chmod 777 --recursive" [postinst:217]
+scripts-maintainer-general (binary): recursive-privilege-change "chmod -R" [postinst:215]
+scripts-maintainer-general (binary): recursive-privilege-change "chmod --recursive" [postinst:218]
+scripts-maintainer-general (binary): read-in-maintainer-script [postinst:10]
+scripts-maintainer-general (binary): postrm-removes-alternative "update-alternatives --remove" [postrm:7]
+scripts-maintainer-general (binary): maintainer-script-updates-fontconfig-cache-improperly "fc-cache" [postinst:97]
+scripts-maintainer-general (binary): maintainer-script-updates-fontconfig-cache-improperly "fc-cache" [postinst:95]
+scripts-maintainer-general (binary): maintainer-script-switches-dir-to-symlink-unsafely "ln -s tworld-data /usr/share/doc" [postinst:205]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-piuparts-variable "PIUPARTS_TEST" [postinst:243]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-piuparts-variable "PIUPARTS_PHASE" [postinst:245]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-piuparts-variable "PIUPARTS_OBJECTS" [postinst:244]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-piuparts-variable "PIUPARTS_DISTRIBUTION_PREV" [postinst:248]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-piuparts-variable "PIUPARTS_DISTRIBUTION_NEXT" [postinst:247]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-piuparts-variable "PIUPARTS_DISTRIBUTION" [postinst:246]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-dpkg-maintscript-helper "dpkg-maintscript-helper" [postinst:196]
+scripts-maintainer-general (binary): maintainer-script-should-not-use-dpkg-maintscript-helper "dpkg-maintscript-helper" [postinst:190]
+scripts-maintainer-general (binary): maintainer-script-should-not-parse-etc-passwd-or-group "grep bad /etc/passwd" [postinst:234]
+scripts-maintainer-general (binary): maintainer-script-should-not-parse-etc-passwd-or-group "grep bad /etc/group" [postinst:235]
+scripts-maintainer-general (binary): maintainer-script-should-not-parse-etc-passwd-or-group "grep -F bad /etc/group" [postinst:239]
+scripts-maintainer-general (binary): maintainer-script-should-not-parse-etc-passwd-or-group "grep -F bad /etc/group" [postinst:238]
+scripts-maintainer-general (binary): maintainer-script-should-not-parse-etc-passwd-or-group "grep -E bad /etc/passwd" [postinst:237]
+scripts-maintainer-general (binary): maintainer-script-should-not-parse-etc-passwd-or-group "grep -E bad /etc/passwd" [postinst:236]
+scripts-maintainer-general (binary): maintainer-script-sets-alternative-improperly "update-alternatives --set" [postinst:129]
+scripts-maintainer-general (binary): maintainer-script-removes-device-files "rm /dev/null" [postinst:141]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-xml-core update-xmlcatalog (does not satisfy xml-core) [postinst:51]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-ucf ucf (does not satisfy ucf) [postinst:41]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-gconf2 gconf-schemas (does not satisfy gconf2) [postinst:47]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:200]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:199]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:169]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:166]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:163]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:162]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:152]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:151]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:150]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:149]
+scripts-maintainer-general (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:148]
+scripts-maintainer-general (binary): maintainer-script-modifies-inetd-conf [postinst:68]
+scripts-maintainer-general (binary): maintainer-script-modifies-inetd-conf [postinst:67]
+scripts-maintainer-general (binary): maintainer-script-lacks-home-in-adduser "adduser festival --quiet --system --ingroup audio --no-create-home" [postinst:200]
+scripts-maintainer-general (binary): maintainer-script-lacks-home-in-adduser "adduser --system foo2 --home /home/foo2" [postinst:149]
+scripts-maintainer-general (binary): maintainer-script-lacks-home-in-adduser "adduser --system foo" [postinst:148]
+scripts-maintainer-general (binary): maintainer-script-lacks-home-in-adduser "adduser --system --quiet --ingroup ntp --no-create-home ntp" [postinst:199]
+scripts-maintainer-general (binary): maintainer-script-lacks-home-in-adduser "adduser --home /home/fnord2 --system fnord2" [postinst:152]
+scripts-maintainer-general (binary): maintainer-script-interpreter /bin/sh [prerm]
+scripts-maintainer-general (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-maintainer-general (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-maintainer-general (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-maintainer-general (binary): maintainer-script-ignores-errors [postrm]
+scripts-maintainer-general (binary): maintainer-script-hides-init-failure "invoke-rc.d foo start || exit 0" [postinst:31]
+scripts-maintainer-general (binary): maintainer-script-changes-netbase "mv /usr/share/doc/rpc /etc/rpc" [postinst:61]
+scripts-maintainer-general (binary): maintainer-script-changes-netbase "cp /nonexistent /etc/protocols" [postinst:60]
+scripts-maintainer-general (binary): maintainer-script-changes-netbase "> /etc/services" [postinst:59]
+scripts-maintainer-general (binary): maintainer-script-changes-ld-so-conf "mv /etc/ld.so.conf.new /etc/ld.so.conf" [postinst:110]
+scripts-maintainer-general (binary): maintainer-script-changes-ld-so-conf "> /etc/ld.so.conf" [postinst:108]
+scripts-maintainer-general (binary): maintainer-script-calls-start-stop-daemon "start-stop-daemon" [postinst:78]
+scripts-maintainer-general (binary): maintainer-script-calls-start-stop-daemon "start-stop-daemon" [postinst:138]
+scripts-maintainer-general (binary): maintainer-script-calls-service "service" [postinst:158]
+scripts-maintainer-general (binary): maintainer-script-calls-install-sgmlcatalog "install-sgmlcatalog" [postinst:75]
+scripts-maintainer-general (binary): maintainer-script-calls-install-sgmlcatalog "install-sgmlcatalog" [postinst:74]
+scripts-maintainer-general (binary): maintainer-script-calls-gconftool "gconftool-2" [postinst:44]
+scripts-maintainer-general (binary): maintainer-script-calls-gconftool "/usr/bin/gconftool-2" [postinst:155]
+scripts-maintainer-general (binary): maintainer-script-calls-chown-improperly "chown root.root" [postinst:14]
+scripts-maintainer-general (binary): maintainer-script-calls-chown-improperly "chown -R root.root" [postinst:84]
+scripts-maintainer-general (binary): install-info-used-in-maintainer-script "install-info" [postinst:105]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/sbin/dpkg-state-override (in test syntax) [postinst:181]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/sbin/dpkg-divert (in backticks) [postinst:178]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/sbin/dpkg-divert (in backticks) [postinst:177]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/sbin/dpkg-divert (in backticks) [postinst:176]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/bin/gconftool-2 (plain script) [postinst:155]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/bin/foo (in backticks) [postinst:118]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/bin/foo (in backticks) [postinst:117]
+scripts-maintainer-general (binary): command-with-path-in-maintainer-script /usr/bin/baz (plain script) [postinst:91]
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postinst
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postinst
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postrm
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/postrm
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/preinst b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/preinst
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/preinst
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/prerm b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/prerm
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/debian/prerm
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/fill-values b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/fill-values
new file mode 100644
index 0000000..bcdea9d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-script-empty
+Description: Test for empty maintainer scripts
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/desc b/t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/desc
new file mode 100644
index 0000000..e46ad94
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-maintainer-script-empty
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/hints b/t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/hints
new file mode 100644
index 0000000..b7acd7b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-empty/eval/hints
@@ -0,0 +1,4 @@
+scripts-maintainer-script-empty (binary): maintainer-script-interpreter /bin/sh [prerm]
+scripts-maintainer-script-empty (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-maintainer-script-empty (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-maintainer-script-empty (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/debian/postinst
new file mode 100644
index 0000000..11ee280
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/debian/postinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ # Bad
+ update-inetd --group foo
+ update-inetd --pattern --add foo
+ update-inetd --add --pattern foo
+
+ # Good
+ update-inetd --add --group foo
+ update-inetd --group --add foo
+ update-inetd --pattern foo
+fi
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/fill-values b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/fill-values
new file mode 100644
index 0000000..c00f52c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-script-invalid-update-inetd-options
+Description: Check for incorrect calls to update-inetd
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/desc b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/desc
new file mode 100644
index 0000000..88974b3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-maintainer-script-invalid-update-inetd-options
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/hints b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/hints
new file mode 100644
index 0000000..a2703a5
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-invalid-update-inetd-options/eval/hints
@@ -0,0 +1,10 @@
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:9]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:8]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:15]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:14]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:13]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:10]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-has-invalid-update-inetd-options (--pattern with --add) [postinst:9]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-has-invalid-update-inetd-options (--pattern with --add) [postinst:10]
+scripts-maintainer-script-invalid-update-inetd-options (binary): maintainer-script-has-invalid-update-inetd-options (--group without --add) [postinst:8]
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/debian/postinst
new file mode 100644
index 0000000..dc11a43
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = configure ] ; then
+ frobnicate something
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/fill-values b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/fill-values
new file mode 100644
index 0000000..ecd5058
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-maintainer-script-set-e
+Description: Test for using set -e in script body
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/desc b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/desc
new file mode 100644
index 0000000..e199498
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-maintainer-script-set-e
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/hints b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/hints
new file mode 100644
index 0000000..aa82b7a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-maintainer-script-set-e/eval/hints
@@ -0,0 +1,2 @@
+scripts-maintainer-script-set-e (binary): maintainer-script-without-set-e [postinst]
+scripts-maintainer-script-set-e (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst
new file mode 100644
index 0000000..fb6d516
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+dpkg-maintscript-helper symlink_to_dir /path/name /old/target 1.0-1 scripts-missing-call-to-dpkg-maintscript-helper
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst
new file mode 100644
index 0000000..fb6d516
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/debian/preinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+dpkg-maintscript-helper symlink_to_dir /path/name /old/target 1.0-1 scripts-missing-call-to-dpkg-maintscript-helper
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values
new file mode 100644
index 0000000..cbe62e2
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-dpkg-maintscript-helper
+Description: Test for packages that miss calls to dpkg-maintscript-helper(1)
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc
new file mode 100644
index 0000000..4693358
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-dpkg-maintscript-helper
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints
new file mode 100644
index 0000000..91d3f9b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-dpkg-maintscript-helper/eval/hints
@@ -0,0 +1,4 @@
+scripts-missing-call-to-dpkg-maintscript-helper (binary): maintainer-script-should-not-use-dpkg-maintscript-helper "dpkg-maintscript-helper" [preinst:7]
+scripts-missing-call-to-dpkg-maintscript-helper (binary): maintainer-script-should-not-use-dpkg-maintscript-helper "dpkg-maintscript-helper" [postinst:7]
+scripts-missing-call-to-dpkg-maintscript-helper (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-missing-call-to-dpkg-maintscript-helper (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install
new file mode 100644
index 0000000..4690206
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/install
@@ -0,0 +1 @@
+foo.afm usr/share/fonts/X11/Type1
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst
new file mode 100644
index 0000000..ea5884d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ update-fonts-dir manual
+ update-fonts-scale manual
+fi
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values
new file mode 100644
index 0000000..37d3c47
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-update-fonts-unrel
+Description: Check missing calls to update-fonts (false-positives)
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/build-spec/orig/foo.afm
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/desc b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/desc
new file mode 100644
index 0000000..51f7efd
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-update-fonts-unrel
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/hints b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/hints
new file mode 100644
index 0000000..09cb814
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts-unrel/eval/hints
@@ -0,0 +1,2 @@
+scripts-missing-call-to-update-fonts-unrel (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-missing-call-to-update-fonts-unrel (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/install b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/install
new file mode 100644
index 0000000..4690206
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/install
@@ -0,0 +1 @@
+foo.afm usr/share/fonts/X11/Type1
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/postinst
new file mode 100644
index 0000000..72a8dfb
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+if false
+then
+ echo "Deliberately not including DEBHELPER snippet."
+fi
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/fill-values b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/fill-values
new file mode 100644
index 0000000..4b17473
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-call-to-update-fonts
+Description: Check missing calls to update-fonts
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/build-spec/orig/foo.afm
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/desc b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/desc
new file mode 100644
index 0000000..fe7fa11
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-call-to-update-fonts
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/hints b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/hints
new file mode 100644
index 0000000..599bdd6
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-call-to-update-fonts/eval/hints
@@ -0,0 +1,2 @@
+scripts-missing-call-to-update-fonts (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-missing-call-to-update-fonts (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/clean b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/clean
new file mode 100644
index 0000000..8f76e67
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/clean
@@ -0,0 +1 @@
+man/
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/control.in
new file mode 100644
index 0000000..c105cba
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ gawk:any, mawk:any, php5:any, python2:any, python3:any,
+ ruby:any
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/install b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/install
new file mode 100644
index 0000000..0486c9a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/install
@@ -0,0 +1 @@
+*-script usr/bin/
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/manpages b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/manpages
new file mode 100644
index 0000000..bf519d7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*.1
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/rules b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/rules
new file mode 100755
index 0000000..7cbf8b1
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ mkdir man
+ for FILE in *-script ; do \
+ sed s/@SCRIPT@/$$FILE/g script.pod | \
+ pod2man --name="$$(echo "$$FILE" | tr a-z A-Z )" \
+ --section=1 > man/$$FILE.1 ; \
+ done
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/fill-values b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/fill-values
new file mode 100644
index 0000000..2c7ad7a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-dep-fp
+Description: Check F-P missing dep on various script interpreters
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python2-script b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python2-script
new file mode 100755
index 0000000..21fdd57
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python2-script
@@ -0,0 +1,4 @@
+#!/usr/bin/python2
+
+# whatever
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python3-script b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python3-script
new file mode 100755
index 0000000..607e68d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/python3-script
@@ -0,0 +1,4 @@
+#!/usr/bin/python3
+
+# whatever
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/script.pod b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/script.pod
new file mode 100644
index 0000000..8ffa2d0
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/build-spec/orig/script.pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+@SCRIPT@ - Cool script to do stuff written in some script language.
+
+=head1 SYNOPSIS
+
+@SCRIPT@ --cool-argument
+
+=head1 DESCRIPTION
+
+This script is very awesome and does something you do not even know
+you need.
+
+=head1 AUTHOR
+
+I made this
+
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/eval/desc b/t/recipes/checks/scripts/scripts-missing-dep-fp/eval/desc
new file mode 100644
index 0000000..4d74cd6
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/eval/desc
@@ -0,0 +1,5 @@
+Testname: scripts-missing-dep-fp
+Test-Against:
+ python2-script-but-no-python2-dep
+ python3-script-but-no-python3-dep
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-missing-dep-fp/eval/hints b/t/recipes/checks/scripts/scripts-missing-dep-fp/eval/hints
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep-fp/eval/hints
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/clean b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/clean
new file mode 100644
index 0000000..8f76e67
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/clean
@@ -0,0 +1 @@
+man/
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/install b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/install
new file mode 100644
index 0000000..0486c9a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/install
@@ -0,0 +1 @@
+*-script usr/bin/
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/manpages b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/manpages
new file mode 100644
index 0000000..bf519d7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*.1
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/postinst
new file mode 100644
index 0000000..0c43c2e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+if false ; then
+ adduser some user lalal
+ update-inetd some stuff
+ update-fonts-alias blah
+ update-fonts-dir blah
+ update-fonts-scale blah
+fi
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/rules b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/rules
new file mode 100755
index 0000000..7cbf8b1
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_auto_build:
+ mkdir man
+ for FILE in *-script ; do \
+ sed s/@SCRIPT@/$$FILE/g script.pod | \
+ pod2man --name="$$(echo "$$FILE" | tr a-z A-Z )" \
+ --section=1 > man/$$FILE.1 ; \
+ done
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/fill-values b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/fill-values
new file mode 100644
index 0000000..6889e1b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-dep
+Description: Check missing dep on various script interpreters
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/gawk-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/gawk-script
new file mode 100755
index 0000000..b66729e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/gawk-script
@@ -0,0 +1,3 @@
+#!/usr/bin/gawk -f
+
+# do something.
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/mawk-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/mawk-script
new file mode 100755
index 0000000..fbb3316
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/mawk-script
@@ -0,0 +1,3 @@
+#!/usr/bin/mawk -f
+
+# do something.
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/php-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/php-script
new file mode 100755
index 0000000..fc77cb9
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/php-script
@@ -0,0 +1,4 @@
+#!/usr/bin/php
+<?php
+ echo "Hallo\n";
+?>
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python2-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python2-script
new file mode 100755
index 0000000..21fdd57
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python2-script
@@ -0,0 +1,4 @@
+#!/usr/bin/python2
+
+# whatever
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python3-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python3-script
new file mode 100755
index 0000000..607e68d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/python3-script
@@ -0,0 +1,4 @@
+#!/usr/bin/python3
+
+# whatever
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/ruby-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/ruby-script
new file mode 100755
index 0000000..4700685
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/ruby-script
@@ -0,0 +1,3 @@
+#!/usr/bin/ruby
+
+# do something.
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/script.pod b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/script.pod
new file mode 100644
index 0000000..8ffa2d0
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/script.pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+@SCRIPT@ - Cool script to do stuff written in some script language.
+
+=head1 SYNOPSIS
+
+@SCRIPT@ --cool-argument
+
+=head1 DESCRIPTION
+
+This script is very awesome and does something you do not even know
+you need.
+
+=head1 AUTHOR
+
+I made this
+
+
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/tclsh-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/tclsh-script
new file mode 100755
index 0000000..2e6707a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/tclsh-script
@@ -0,0 +1,3 @@
+#!/usr/bin/tclsh
+
+# do something.
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/wish-script b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/wish-script
new file mode 100755
index 0000000..5a2cd12
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/build-spec/orig/wish-script
@@ -0,0 +1,3 @@
+#!/usr/bin/wish
+
+# do something.
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/eval/desc b/t/recipes/checks/scripts/scripts-missing-dep/eval/desc
new file mode 100644
index 0000000..9a46d04
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-dep
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-missing-dep/eval/hints b/t/recipes/checks/scripts/scripts-missing-dep/eval/hints
new file mode 100644
index 0000000..f76dd5b
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-dep/eval/hints
@@ -0,0 +1,14 @@
+scripts-missing-dep (binary): wish-script-but-no-wish-dep /usr/bin/wish (does not satisfy wish:any | tk:any | tk8.3:any | tk8.4:any | tk8.5:any | tk8.6:any) [usr/bin/wish-script]
+scripts-missing-dep (binary): tclsh-script-but-no-tclsh-dep /usr/bin/tclsh (does not satisfy tclsh:any | tcl:any | tcl8.3:any | tcl8.4:any | tcl8.5:any | tcl8.6:any) [usr/bin/tclsh-script]
+scripts-missing-dep (binary): ruby-script-but-no-ruby-dep /usr/bin/ruby (does not satisfy ruby:any) [usr/bin/ruby-script]
+scripts-missing-dep (binary): python3-script-but-no-python3-dep /usr/bin/python3 (does not satisfy python3:any | python3-minimal:any) [usr/bin/python3-script]
+scripts-missing-dep (binary): python2-script-but-no-python2-dep /usr/bin/python2 (does not satisfy python2:any | python2-minimal:any) [usr/bin/python2-script]
+scripts-missing-dep (binary): php-script-but-no-php-cli-dep /usr/bin/php (does not satisfy php-cli:any) [usr/bin/php-script]
+scripts-missing-dep (binary): mawk-script-but-no-mawk-dep /usr/bin/mawk (does not satisfy mawk:any) [usr/bin/mawk-script]
+scripts-missing-dep (binary): maintainer-script-needs-depends-on-xfonts-utils update-fonts-scale (does not satisfy xfonts-utils) [postinst:10]
+scripts-missing-dep (binary): maintainer-script-needs-depends-on-xfonts-utils update-fonts-dir (does not satisfy xfonts-utils) [postinst:9]
+scripts-missing-dep (binary): maintainer-script-needs-depends-on-xfonts-utils update-fonts-alias (does not satisfy xfonts-utils) [postinst:8]
+scripts-missing-dep (binary): maintainer-script-needs-depends-on-update-inetd update-inetd (does not satisfy update-inetd | inet-superserver | openbsd-inetd | inetutils-inetd | rlinetd | xinetd) [postinst:7]
+scripts-missing-dep (binary): maintainer-script-needs-depends-on-adduser adduser (does not satisfy adduser) [postinst:6]
+scripts-missing-dep (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-missing-dep (binary): gawk-script-but-no-gawk-dep /usr/bin/gawk (does not satisfy gawk:any) [usr/bin/gawk-script]
diff --git a/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/control.in
new file mode 100644
index 0000000..63cd49d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/control.in
@@ -0,0 +1,29 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-with
+Architecture: all
+Depends: ${misc:Depends}, init-system-helpers (>= 1.50)
+Description: [% $description %] (with)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has the dependency.
+
+Package: [% $source %]-without
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (without)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package is missing the dependency.
diff --git a/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-with.postinst b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-with.postinst
new file mode 100644
index 0000000..e54396c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-with.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+update-rc.d
+update-rc.d defaults-disabled
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-without.postinst b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-without.postinst
new file mode 100644
index 0000000..e54396c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/debian/scripts-missing-versioned-depends-on-init-system-helpers-without.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+update-rc.d
+update-rc.d defaults-disabled
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/fill-values b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/fill-values
new file mode 100644
index 0000000..f305c81
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-missing-versioned-depends-on-init-system-helpers
+Description: Test for packages that are missing init-system-helpers depends
diff --git a/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/desc b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/desc
new file mode 100644
index 0000000..708eec0
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-missing-versioned-depends-on-init-system-helpers
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/hints b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/hints
new file mode 100644
index 0000000..f7162ae
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-missing-versioned-depends-on-init-system-helpers/eval/hints
@@ -0,0 +1,2 @@
+scripts-missing-versioned-depends-on-init-system-helpers-without (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-missing-versioned-depends-on-init-system-helpers-with (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/control.in
new file mode 100644
index 0000000..741b688
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: pkg-same
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Multi-Arch: same
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/postinst
new file mode 100644
index 0000000..7b293dc
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/debian/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+pycompile || true
+py3compile || true
diff --git a/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/fill-values b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/fill-values
new file mode 100644
index 0000000..7025f52
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-multi-arch-same-calls-pycompile
+Package-Architecture: any
+Description: Check for calls to pycompile in MA: same packages
diff --git a/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/desc b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/desc
new file mode 100644
index 0000000..82c15c7
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-multi-arch-same-calls-pycompile
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/hints b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/hints
new file mode 100644
index 0000000..871e2f4
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-multi-arch-same-calls-pycompile/eval/hints
@@ -0,0 +1,3 @@
+pkg-same (binary): multi-arch-same-package-calls-pycompile [postinst:8]
+pkg-same (binary): multi-arch-same-package-calls-pycompile [postinst:7]
+pkg-same (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/debian/control.in
new file mode 100644
index 0000000..d2ec26d
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ocaml-nox-3.10.2, ${shlib:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/fill-values b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/fill-values
new file mode 100644
index 0000000..5e05c96
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-ocamlrun
+Description: Test correct handling of ocamlrun scripts
diff --git a/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/Makefile b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/Makefile
new file mode 100644
index 0000000..54fa3ef
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/Makefile
@@ -0,0 +1,8 @@
+default:
+ :
+
+install:
+ install -d $(DESTDIR)/usr/bin
+ install -m755 script1 $(DESTDIR)/usr/bin/
+
+.PHONY: distclean realclean clean install test check
diff --git a/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/script1 b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/script1
new file mode 100644
index 0000000..49c50f2
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-ocamlrun/build-spec/orig/script1
@@ -0,0 +1 @@
+#!/usr/bin/ocamlrun
diff --git a/t/recipes/checks/scripts/scripts-ocamlrun/eval/desc b/t/recipes/checks/scripts/scripts-ocamlrun/eval/desc
new file mode 100644
index 0000000..ab7dee3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-ocamlrun/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-ocamlrun
+Test-Against: missing-dep-for-interpreter
+See-Also: Debian Bug#495431
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-ocamlrun/eval/hints b/t/recipes/checks/scripts/scripts-ocamlrun/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-ocamlrun/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/control.in
new file mode 100644
index 0000000..ecbbc46
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-with
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Pre-Depends: init-system-helpers (>= 1.54~)
+Description: [% $description %] (with)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has the dependency.
+
+Package: [% $source %]-without
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (without)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package is missing the dependency.
diff --git a/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst
new file mode 100644
index 0000000..732f9fc
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+invoke-rc.d
+invoke-rc.d --skip-systemd-native
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst
new file mode 100644
index 0000000..732f9fc
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+invoke-rc.d
+invoke-rc.d --skip-systemd-native
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/fill-values b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/fill-values
new file mode 100644
index 0000000..06a0533
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-skip-systemd-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-skip-systemd-native
+Description: Test for packages that use --skip-systemd-native
diff --git a/t/recipes/checks/scripts/scripts-skip-systemd-native/eval/desc b/t/recipes/checks/scripts/scripts-skip-systemd-native/eval/desc
new file mode 100644
index 0000000..2bac3f3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-skip-systemd-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-skip-systemd-native
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-skip-systemd-native/eval/hints b/t/recipes/checks/scripts/scripts-skip-systemd-native/eval/hints
new file mode 100644
index 0000000..bc70b78
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-skip-systemd-native/eval/hints
@@ -0,0 +1,2 @@
+scripts-skip-systemd-native-without (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-skip-systemd-native-with (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/changelog.in b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/changelog.in
new file mode 100644
index 0000000..d25031a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/changelog.in
@@ -0,0 +1,20 @@
+[% $source %] ([% $version %]) unstable; urgency=low
+
+ * Version reused, new source package name.
+
+ -- [% $author %] [% $date %]
+
+[% $source %] (0.5) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ -- [% $author %] Fri, 06 Feb 2009 22:22:37 -0800
+
+[% $source %] (0) unstable; urgency=low
+
+ * Lintian Test Suite.
+ * Should be ignored.
+ * Test: [% $testname %]
+
+ -- [% $author %] Fri, 06 Feb 2008 22:22:37 -0800
diff --git a/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/postinst
new file mode 100644
index 0000000..9a9a79c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/debian/postinst
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+# Bad
+dpkg --compare-versions "$2" lt "0.5"
+dpkg --compare-versions "$2" lt 0.5~
+dpkg --compare-versions "$2" lt 0.5-1~
+dpkg --compare-versions "$2" lt '0.5-1~'
+dpkg --compare-versions '0.5-1~' gt "$2"
+if dpkg --compare-versions '0.5-1~' gt "$2"; then :; fi
+
+# Good
+dpkg --compare-versions "$2" lt "0"
+dpkg --compare-versions "$2" lt "0~"
+dpkg --compare-versions "$2" lt 0.50.5
+# This is a false-positive for 0.5
+# dpkg --compare-versions "$2" lt 0.5~
+
+#DEBHELPER#
diff --git a/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/fill-values b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/fill-values
new file mode 100644
index 0000000..6036e51
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: scripts-supports-ancient-package-version
+Skeleton: upload-non-native
+Description: Check for maintainer scripts supporting old versions
diff --git a/t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/desc b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/desc
new file mode 100644
index 0000000..36cdfa5
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-supports-ancient-package-version
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/hints b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/hints
new file mode 100644
index 0000000..9a2126a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-supports-ancient-package-version/eval/hints
@@ -0,0 +1 @@
+scripts-supports-ancient-package-version (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/control.in b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/control.in
new file mode 100644
index 0000000..2de8dd3
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: devel
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, udev
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/postinst
new file mode 100644
index 0000000..9f5660e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/debian/postinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+udevadm positive
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/fill-values b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/fill-values
new file mode 100644
index 0000000..e13ae24
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-udevadm-called-without-guard-unrel
+Description: Test for packages that call udevadm without a guard
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/desc b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/desc
new file mode 100644
index 0000000..b8f5a2e
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-udevadm-called-without-guard-unrel
+Test-Against:
+ udevadm-called-without-guard
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/hints b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/hints
new file mode 100644
index 0000000..259612a
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard-unrel/eval/hints
@@ -0,0 +1 @@
+scripts-udevadm-called-without-guard-unrel (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postinst
new file mode 100644
index 0000000..ee508c4
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postinst
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+udevadm positive
+
+udevadm false-positive || true
+udevadm false-positive || echo "Warning message"
+
+if udevadm false-positive
+then
+ udevadm false-positive
+fi
+
+# We don't actually catch this one as our test is too naive
+udevadm positive
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postrm b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postrm
new file mode 100644
index 0000000..445cfe2
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/postrm
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+udevadm positive
+
+if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1
+then
+ udevadm false-positive
+fi
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/preinst b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/preinst
new file mode 100644
index 0000000..70e0741
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+#DEBHELPER#
+
+udevadm positive
+
+udevadm false-positive || true
+udevadm false-positive || echo "Warning message"
+
+if udevadm false-positive
+then
+ udevadm false-positive
+fi
+
+# We don't actually catch this one as our test is too naive
+udevadm positive
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/prerm b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/prerm
new file mode 100644
index 0000000..d0d4d19
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/debian/prerm
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+udevadm positive
+
+if which udevadm >/dev/null 2>&1
+then
+ udevadm false-positive
+fi
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/fill-values b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/fill-values
new file mode 100644
index 0000000..fbcb04f
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-udevadm-called-without-guard
+Description: Test for packages that call udevadm without a guard
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/desc b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/desc
new file mode 100644
index 0000000..371f793
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-udevadm-called-without-guard
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/hints b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/hints
new file mode 100644
index 0000000..f18ee9c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-udevadm-called-without-guard/eval/hints
@@ -0,0 +1,8 @@
+scripts-udevadm-called-without-guard (binary): udevadm-called-without-guard [prerm:7]
+scripts-udevadm-called-without-guard (binary): udevadm-called-without-guard [postrm:7]
+scripts-udevadm-called-without-guard (binary): udevadm-called-without-guard [postinst:7]
+scripts-udevadm-called-without-guard (binary): maintainer-script-interpreter /bin/sh [prerm]
+scripts-udevadm-called-without-guard (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-udevadm-called-without-guard (binary): maintainer-script-interpreter /bin/sh [postrm]
+scripts-udevadm-called-without-guard (binary): maintainer-script-interpreter /bin/sh [postinst]
+scripts-udevadm-called-without-guard (binary): maintainer-script-ignores-errors [preinst]
diff --git a/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst
new file mode 100644
index 0000000..0c2e31c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+# Unconditional use of dpkg-statoverride --add
+dpkg-statoverride --update --add root crontab 2755 /usr/bin/crontab
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst
new file mode 100644
index 0000000..7c00d9c
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/debian/preinst
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+# Conditional use of dpkg-statoverride --add
+if ! dpkg-statoverride --list /usr/bin/crontab >/dev/null 2>&1
+then
+ dpkg-statoverride --update --add root crontab 2755 /usr/bin/crontab
+fi
+
+exit 0
diff --git a/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values
new file mode 100644
index 0000000..a2c2e15
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-unconditional-use-of-dpkg-statoverride
+Description: Test for maintscripts that call dpkg-statoverride without calling --list
diff --git a/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/desc b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/desc
new file mode 100644
index 0000000..edcdc31
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-unconditional-use-of-dpkg-statoverride
+Check: scripts
diff --git a/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/hints b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/hints
new file mode 100644
index 0000000..d414ebd
--- /dev/null
+++ b/t/recipes/checks/scripts/scripts-unconditional-use-of-dpkg-statoverride/eval/hints
@@ -0,0 +1,2 @@
+scripts-unconditional-use-of-dpkg-statoverride (binary): maintainer-script-interpreter /bin/sh [preinst]
+scripts-unconditional-use-of-dpkg-statoverride (binary): maintainer-script-interpreter /bin/sh [postinst]
diff --git a/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/debian/install b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/debian/install
new file mode 100644
index 0000000..f61094c
--- /dev/null
+++ b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/debian/install
@@ -0,0 +1 @@
+has-hashbang usr/share/bash-completion/completions/
diff --git a/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/fill-values b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/fill-values
new file mode 100644
index 0000000..23238ad
--- /dev/null
+++ b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: bash-completion-with-hashbang
+Description: A bash completion script that designates an interpreter.
diff --git a/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/orig/has-hashbang b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/orig/has-hashbang
new file mode 100644
index 0000000..5f3d1be
--- /dev/null
+++ b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/build-spec/orig/has-hashbang
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+This would be a bash-completion script. They are intended to be
+sourced and should not designate an interpreter via a hashbang.
diff --git a/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/desc b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/desc
new file mode 100644
index 0000000..776a730
--- /dev/null
+++ b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/desc
@@ -0,0 +1,4 @@
+Testname: bash-completion-with-hashbang
+Check: shell/bash/completion
+See-Also:
+ https://salsa.debian.org/lintian/lintian/-/merge_requests/292#note_139494
diff --git a/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/hints b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/hints
new file mode 100644
index 0000000..9a24bdc
--- /dev/null
+++ b/t/recipes/checks/shell/bash/completion/bash-completion-with-hashbang/eval/hints
@@ -0,0 +1 @@
+bash-completion-with-hashbang (binary): bash-completion-with-hashbang /bin/sh [usr/share/bash-completion/completions/has-hashbang:1]
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/control.in b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/control.in
new file mode 100644
index 0000000..24733b6
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}, python2.7, csh, cwltool
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/examples b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/examples
new file mode 100644
index 0000000..dbf0e0e
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/examples
@@ -0,0 +1,9 @@
+bin-env
+no-interpreter
+not-absolute
+syntax
+unusual
+unversioned-pike
+usr-bin-env-perl
+usr-local
+wrong-perl-path
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/install b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/install
new file mode 100644
index 0000000..eb2fbdd
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/install
@@ -0,0 +1,14 @@
+bin-env usr/bin/
+csh-shell usr/bin/
+cwl-runner usr/bin/
+no-interpreter usr/bin/
+not-absolute usr/bin/
+python2.7 usr/bin/
+syntax usr/bin/
+unusual usr/bin/
+unversioned-pike usr/bin/
+usr-bin-env-perl usr/bin/
+usr-local usr/bin/
+usr-local-bin-perl usr/bin/
+versioned-pike usr/bin/
+wrong-perl-path usr/bin/
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/links b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/links
new file mode 100644
index 0000000..ff8f522
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/links
@@ -0,0 +1,14 @@
+usr/share/man/man1/interpreters.1 usr/share/man/man1/bin-env.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/csh-shell.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/cwl-runner.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/no-interpreter.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/not-absolute.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/python2.7.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/syntax.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/unusual.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/unversioned-pike.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-bin-env-perl.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local-bin-perl.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/versioned-pike.1
+usr/share/man/man1/interpreters.1 usr/share/man/man1/wrong-perl-path.1
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/manpages b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/manpages
new file mode 100644
index 0000000..74d51b8
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/debian/manpages
@@ -0,0 +1 @@
+interpreters.1
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/fill-values b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/fill-values
new file mode 100644
index 0000000..f92de59
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-interpreters
+Description: Check various script interpreter issues
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/bin-env b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/bin-env
new file mode 100644
index 0000000..005e1a9
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/bin-env
@@ -0,0 +1,2 @@
+#!/bin/env perl
+print "Hello world\n";
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/csh-shell b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/csh-shell
new file mode 100644
index 0000000..3e39c0b
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/csh-shell
@@ -0,0 +1 @@
+#!/bin/csh
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/cwl-runner b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/cwl-runner
new file mode 100644
index 0000000..3f3280f
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/cwl-runner
@@ -0,0 +1 @@
+#!/usr/bin/cwl-runner
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/interpreters.1 b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/interpreters.1
new file mode 100644
index 0000000..9e6dd89
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/interpreters.1
@@ -0,0 +1,5 @@
+.TH interpreters 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+interpreters \- test script
+
+Dummy manpage to avoid triggering warnings about it not existing.
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/no-interpreter b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/no-interpreter
new file mode 100644
index 0000000..3487806
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/no-interpreter
@@ -0,0 +1,3 @@
+#!
+# Script missing any interpreter.
+true
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/not-absolute b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/not-absolute
new file mode 100644
index 0000000..ee656c6
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/not-absolute
@@ -0,0 +1,2 @@
+#!perl
+print "Hello world\n";
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/python2.7 b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/python2.7
new file mode 100644
index 0000000..1989667
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/python2.7
@@ -0,0 +1,3 @@
+#!/usr/bin/python2.7
+import sys
+sys.exit(0)
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/syntax b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/syntax
new file mode 100644
index 0000000..c04b97f
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/syntax
@@ -0,0 +1,4 @@
+#!/bin/sh
+# A shell script with a syntax error.
+if true ; then
+ echo True
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unusual b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unusual
new file mode 100644
index 0000000..8a74f66
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unusual
@@ -0,0 +1,2 @@
+#!/usr/bin/lintian
+use lintian shell to check package
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unversioned-pike b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unversioned-pike
new file mode 100644
index 0000000..f1eaf01
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/unversioned-pike
@@ -0,0 +1,4 @@
+#! /usr/bin/pike
+
+This is not a real pike script but sufficient to trigger a warning that the package
+is missing a dependency for the interpreter.
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-bin-env-perl b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-bin-env-perl
new file mode 100644
index 0000000..069c68b
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-bin-env-perl
@@ -0,0 +1,3 @@
+#!/usr/bin/env perl
+
+print "Hello world\n";
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local
new file mode 100644
index 0000000..be79cf8
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local
@@ -0,0 +1,2 @@
+#!/usr/local/bin/special-perl
+print "Hello world\n";
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local-bin-perl b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local-bin-perl
new file mode 100644
index 0000000..3c8f6fa
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/usr-local-bin-perl
@@ -0,0 +1,3 @@
+#!/usr/local/bin/perl
+
+print "Hello world\n";
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/versioned-pike b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/versioned-pike
new file mode 100644
index 0000000..6b3b65b
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/versioned-pike
@@ -0,0 +1,4 @@
+#! /usr/bin/pike7.6
+
+This is not a real pike script but sufficient to trigger a warning that the package
+is missing a dependency for the interpreter.
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/wrong-perl-path b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/wrong-perl-path
new file mode 100644
index 0000000..1602d4e
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/build-spec/orig/wrong-perl-path
@@ -0,0 +1,2 @@
+#!/bin/perl
+print "Hello world\n";
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/eval/desc b/t/recipes/checks/shell/csh/scripts-interpreters/eval/desc
new file mode 100644
index 0000000..4d07dd2
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/eval/desc
@@ -0,0 +1,4 @@
+Testname: scripts-interpreters
+Check: shell/csh
+See-Also:
+ Bug#543873
diff --git a/t/recipes/checks/shell/csh/scripts-interpreters/eval/hints b/t/recipes/checks/shell/csh/scripts-interpreters/eval/hints
new file mode 100644
index 0000000..1ce9224
--- /dev/null
+++ b/t/recipes/checks/shell/csh/scripts-interpreters/eval/hints
@@ -0,0 +1 @@
+scripts-interpreters (binary): csh-considered-harmful /bin/csh [usr/bin/csh-shell:1]
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/config
new file mode 100644
index 0000000..29abeba
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/config
@@ -0,0 +1,3 @@
+#!/usr/bin/python
+
+# I use python, but that's not what I'm supposed to be allowed to use
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..de4161e
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,36 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/config debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..6653368
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: shell/non-posix/bash-centric
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..d0656ee
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,97 @@
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '{a,b}' [prerm:158]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'unalias -a' [prerm:126]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'ulimit' [prerm:131]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'typeset' [prerm:121]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'time' [prerm:134]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'test -a' [postinst:155]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'suspend' [prerm:112]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'source ~/bar' [prerm:187]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'source a' [prerm:188]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'source /bar/baz/bat' [prerm:15]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'source '$BAR'' [prerm:186]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'source $FOO' [prerm:29]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'source "$BAR"' [prerm:185]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'shopt' [prerm:132]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'sh -D' [prerm:153]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'sh --foo' [prerm:154]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'sh +O' [prerm:155]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'set -B' [prerm:124]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'select foo' [postinst:147]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'readonly -f' [prerm:145]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read' [prerm:66]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read' [prerm:14]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read' [postinst:20]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read -x' [prerm:63]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read -x' [prerm:62]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read -r' [prerm:179]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read -p' [prerm:180]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'read --fish' [prerm:181]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'pushd' [prerm:138]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'popd' [prerm:143]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'local -x' [prerm:141]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'let' [postinst:154]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'function foo(' [prerm:23]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'foobar@()' [prerm:171]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'foobar.() {' [prerm:111]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'foo.bar()' [prerm:166]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'export -x' [prerm:149]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'exec -l' [postinst:150]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'exec -c' [postinst:151]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'exec -a' [postinst:152]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -ne' [prerm:90]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -ne' [prerm:107]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -n -e' [prerm:87]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -en' [prerm:89]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -e' [prerm:88]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -e' [prerm:108]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -e' [prerm:106]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo -e' [postinst:144]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo 'xyz\rabc'' [prerm:103]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo 'a\nb'' [prerm:69]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo "abc\nxyz"' [prerm:102]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'echo "a\\b"' [prerm:68]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'ech.os() {' [prerm:95]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'disown' [prerm:122]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'dirs' [prerm:135]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'declare' [prerm:117]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'complete' [prerm:115]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'compgen' [prerm:116]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'caller' [prerm:114]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'builtin' [prerm:123]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'alias -p' [prerm:125]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '[[' [prerm:33]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '[ "$2" ==' [prerm:19]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'VAR+=' [prerm:84]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script 'H[0]=' [postinst:22]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '>&bar' [prerm:97]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '>& bar' [prerm:98]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '<<<' [prerm:81]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '<(tac a)' [prerm:136]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '/dev/tcp' [prerm:147]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '.foobar() {' [prerm:120]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '. /usr/share/lintian/shell foo' [postinst:16]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '. "$(dirname $0)/shell"' [postinst:17]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '&>' [prerm:26]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${line:3:1}' [prerm:52]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${UID' [prerm:71]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:25]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:136]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:131]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:124]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:119]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:114]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:109]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:104]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${H[0]}' [postinst:23]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${#H[0]}' [postinst:24]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '${!foo}' [postinst:145]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$SHLVL' [prerm:73]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$SHELLOPTS' [prerm:78]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$SECONDS' [prerm:75]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$RANDOM' [postinst:176]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$RANDOM' [postinst:156]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$PIPESTATUS' [prerm:79]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$HOSTNAME' [postinst:126]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$EUID' [prerm:72]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$DIRSTACK' [prerm:74]
+maintainer-scripts (binary): possible-bashism-in-maintainer-script '$BASH_FOO' [prerm:77]
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/debian/install b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/debian/install
new file mode 100644
index 0000000..aaad16b
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/debian/install
@@ -0,0 +1 @@
+scripts/* usr/bin
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/fill-values b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/fill-values
new file mode 100644
index 0000000..8efbbf3
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: regular-shipped
+Skeleton: upload-non-native
+Description: Check bashism detection
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/one b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/one
new file mode 100644
index 0000000..7004ffc
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/one
@@ -0,0 +1,87 @@
+#! /bin/sh -e
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
+
+#DEBHELPER#
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/two b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/two
new file mode 100644
index 0000000..84098f7
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/build-spec/orig/scripts/two
@@ -0,0 +1,186 @@
+#!/bin/sh
+
+set -e
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@() # foo
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
+
+# An example from the X maintainer scripts that used to trigger the trap
+# bashism check.
+trap "message;\
+ message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\
+ message;\
+ exit 1" HUP INT QUIT TERM
+
+# Also allow for extended single quotes containing double quotes.
+trap 'message;
+ message "Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.";
+ message;
+ exit 1' HUP INT QUIT TERM
+
+#DEBHELPER#
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/desc b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/desc
new file mode 100644
index 0000000..aa7af08
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/desc
@@ -0,0 +1,2 @@
+Testname: regular-shipped
+Check: shell/non-posix/bash-centric
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/hints b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/hints
new file mode 100644
index 0000000..94e10dc
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/regular-shipped/eval/hints
@@ -0,0 +1,97 @@
+regular-shipped (binary): bash-term-in-posix-shell '{a,b}' [usr/bin/two:143]
+regular-shipped (binary): bash-term-in-posix-shell 'unalias -a' [usr/bin/two:111]
+regular-shipped (binary): bash-term-in-posix-shell 'ulimit' [usr/bin/two:116]
+regular-shipped (binary): bash-term-in-posix-shell 'typeset' [usr/bin/two:106]
+regular-shipped (binary): bash-term-in-posix-shell 'time' [usr/bin/two:119]
+regular-shipped (binary): bash-term-in-posix-shell 'test -a' [usr/bin/one:74]
+regular-shipped (binary): bash-term-in-posix-shell 'suspend' [usr/bin/two:97]
+regular-shipped (binary): bash-term-in-posix-shell 'source ~/bar' [usr/bin/two:170]
+regular-shipped (binary): bash-term-in-posix-shell 'source a' [usr/bin/two:171]
+regular-shipped (binary): bash-term-in-posix-shell 'source /bar/baz/bat' [usr/bin/two:8]
+regular-shipped (binary): bash-term-in-posix-shell 'source '$BAR'' [usr/bin/two:169]
+regular-shipped (binary): bash-term-in-posix-shell 'source $FOO' [usr/bin/two:22]
+regular-shipped (binary): bash-term-in-posix-shell 'source "$BAR"' [usr/bin/two:168]
+regular-shipped (binary): bash-term-in-posix-shell 'shopt' [usr/bin/two:117]
+regular-shipped (binary): bash-term-in-posix-shell 'sh -D' [usr/bin/two:138]
+regular-shipped (binary): bash-term-in-posix-shell 'sh --foo' [usr/bin/two:139]
+regular-shipped (binary): bash-term-in-posix-shell 'sh +O' [usr/bin/two:140]
+regular-shipped (binary): bash-term-in-posix-shell 'set -B' [usr/bin/two:109]
+regular-shipped (binary): bash-term-in-posix-shell 'select foo' [usr/bin/one:66]
+regular-shipped (binary): bash-term-in-posix-shell 'readonly -f' [usr/bin/two:130]
+regular-shipped (binary): bash-term-in-posix-shell 'read' [usr/bin/two:7]
+regular-shipped (binary): bash-term-in-posix-shell 'read' [usr/bin/two:51]
+regular-shipped (binary): bash-term-in-posix-shell 'read' [usr/bin/one:14]
+regular-shipped (binary): bash-term-in-posix-shell 'read -x' [usr/bin/two:48]
+regular-shipped (binary): bash-term-in-posix-shell 'read -x' [usr/bin/two:47]
+regular-shipped (binary): bash-term-in-posix-shell 'read -r' [usr/bin/two:164]
+regular-shipped (binary): bash-term-in-posix-shell 'read -p' [usr/bin/two:165]
+regular-shipped (binary): bash-term-in-posix-shell 'read --fish' [usr/bin/two:166]
+regular-shipped (binary): bash-term-in-posix-shell 'pushd' [usr/bin/two:123]
+regular-shipped (binary): bash-term-in-posix-shell 'popd' [usr/bin/two:128]
+regular-shipped (binary): bash-term-in-posix-shell 'local -x' [usr/bin/two:126]
+regular-shipped (binary): bash-term-in-posix-shell 'let' [usr/bin/one:73]
+regular-shipped (binary): bash-term-in-posix-shell 'function foo(' [usr/bin/two:16]
+regular-shipped (binary): bash-term-in-posix-shell 'foobar@()' [usr/bin/two:156]
+regular-shipped (binary): bash-term-in-posix-shell 'foobar.() {' [usr/bin/two:96]
+regular-shipped (binary): bash-term-in-posix-shell 'foo.bar()' [usr/bin/two:151]
+regular-shipped (binary): bash-term-in-posix-shell 'export -x' [usr/bin/two:134]
+regular-shipped (binary): bash-term-in-posix-shell 'exec -l' [usr/bin/one:69]
+regular-shipped (binary): bash-term-in-posix-shell 'exec -c' [usr/bin/one:70]
+regular-shipped (binary): bash-term-in-posix-shell 'exec -a' [usr/bin/one:71]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -ne' [usr/bin/two:92]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -ne' [usr/bin/two:75]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -n -e' [usr/bin/two:72]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -en' [usr/bin/two:74]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -e' [usr/bin/two:93]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -e' [usr/bin/two:91]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -e' [usr/bin/two:73]
+regular-shipped (binary): bash-term-in-posix-shell 'echo -e' [usr/bin/one:63]
+regular-shipped (binary): bash-term-in-posix-shell 'echo 'xyz\rabc'' [usr/bin/two:88]
+regular-shipped (binary): bash-term-in-posix-shell 'echo 'a\nb'' [usr/bin/two:54]
+regular-shipped (binary): bash-term-in-posix-shell 'echo "abc\nxyz"' [usr/bin/two:87]
+regular-shipped (binary): bash-term-in-posix-shell 'echo "a\\b"' [usr/bin/two:53]
+regular-shipped (binary): bash-term-in-posix-shell 'ech.os() {' [usr/bin/two:80]
+regular-shipped (binary): bash-term-in-posix-shell 'disown' [usr/bin/two:107]
+regular-shipped (binary): bash-term-in-posix-shell 'dirs' [usr/bin/two:120]
+regular-shipped (binary): bash-term-in-posix-shell 'declare' [usr/bin/two:102]
+regular-shipped (binary): bash-term-in-posix-shell 'complete' [usr/bin/two:100]
+regular-shipped (binary): bash-term-in-posix-shell 'compgen' [usr/bin/two:101]
+regular-shipped (binary): bash-term-in-posix-shell 'caller' [usr/bin/two:99]
+regular-shipped (binary): bash-term-in-posix-shell 'builtin' [usr/bin/two:108]
+regular-shipped (binary): bash-term-in-posix-shell 'alias -p' [usr/bin/two:110]
+regular-shipped (binary): bash-term-in-posix-shell '[[' [usr/bin/two:26]
+regular-shipped (binary): bash-term-in-posix-shell '[ "$2" ==' [usr/bin/two:12]
+regular-shipped (binary): bash-term-in-posix-shell 'VAR+=' [usr/bin/two:69]
+regular-shipped (binary): bash-term-in-posix-shell 'H[0]=' [usr/bin/one:16]
+regular-shipped (binary): bash-term-in-posix-shell '>&bar' [usr/bin/two:82]
+regular-shipped (binary): bash-term-in-posix-shell '>& bar' [usr/bin/two:83]
+regular-shipped (binary): bash-term-in-posix-shell '<<<' [usr/bin/two:66]
+regular-shipped (binary): bash-term-in-posix-shell '<(tac a)' [usr/bin/two:121]
+regular-shipped (binary): bash-term-in-posix-shell '/dev/tcp' [usr/bin/two:132]
+regular-shipped (binary): bash-term-in-posix-shell '.foobar() {' [usr/bin/two:105]
+regular-shipped (binary): bash-term-in-posix-shell '. /usr/share/lintian/shell foo' [usr/bin/one:10]
+regular-shipped (binary): bash-term-in-posix-shell '. "$(dirname $0)/shell"' [usr/bin/one:11]
+regular-shipped (binary): bash-term-in-posix-shell '&>' [usr/bin/two:19]
+regular-shipped (binary): bash-term-in-posix-shell '${line:3:1}' [usr/bin/two:43]
+regular-shipped (binary): bash-term-in-posix-shell '${UID' [usr/bin/two:56]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:55]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:50]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:43]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:38]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:33]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:28]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:23]
+regular-shipped (binary): bash-term-in-posix-shell '${H[@]}' [usr/bin/one:19]
+regular-shipped (binary): bash-term-in-posix-shell '${H[0]}' [usr/bin/one:17]
+regular-shipped (binary): bash-term-in-posix-shell '${#H[0]}' [usr/bin/one:18]
+regular-shipped (binary): bash-term-in-posix-shell '${!foo}' [usr/bin/one:64]
+regular-shipped (binary): bash-term-in-posix-shell '$SHLVL' [usr/bin/two:58]
+regular-shipped (binary): bash-term-in-posix-shell '$SHELLOPTS' [usr/bin/two:63]
+regular-shipped (binary): bash-term-in-posix-shell '$SECONDS' [usr/bin/two:60]
+regular-shipped (binary): bash-term-in-posix-shell '$RANDOM' [usr/bin/one:80]
+regular-shipped (binary): bash-term-in-posix-shell '$RANDOM' [usr/bin/one:75]
+regular-shipped (binary): bash-term-in-posix-shell '$PIPESTATUS' [usr/bin/two:64]
+regular-shipped (binary): bash-term-in-posix-shell '$HOSTNAME' [usr/bin/one:45]
+regular-shipped (binary): bash-term-in-posix-shell '$EUID' [usr/bin/two:57]
+regular-shipped (binary): bash-term-in-posix-shell '$DIRSTACK' [usr/bin/two:59]
+regular-shipped (binary): bash-term-in-posix-shell '$BASH_FOO' [usr/bin/two:62]
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/postinst b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/postinst
new file mode 100644
index 0000000..7004ffc
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/postinst
@@ -0,0 +1,87 @@
+#! /bin/sh -e
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
+
+#DEBHELPER#
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/prerm b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/prerm
new file mode 100644
index 0000000..84098f7
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/debian/prerm
@@ -0,0 +1,186 @@
+#!/bin/sh
+
+set -e
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@() # foo
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
+
+# An example from the X maintainer scripts that used to trigger the trap
+# bashism check.
+trap "message;\
+ message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\
+ message;\
+ exit 1" HUP INT QUIT TERM
+
+# Also allow for extended single quotes containing double quotes.
+trap 'message;
+ message "Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.";
+ message;
+ exit 1' HUP INT QUIT TERM
+
+#DEBHELPER#
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/fill-values b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/fill-values
new file mode 100644
index 0000000..ab87d45
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: scripts-bashisms
+Description: Check bashism detection
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/desc b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/desc
new file mode 100644
index 0000000..ea622da
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-bashisms
+Check: shell/non-posix/bash-centric
diff --git a/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/hints b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/hints
new file mode 100644
index 0000000..a1208c1
--- /dev/null
+++ b/t/recipes/checks/shell/non-posix/bash-centric/scripts-bashisms/eval/hints
@@ -0,0 +1,97 @@
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '{a,b}' [prerm:143]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'unalias -a' [prerm:111]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'ulimit' [prerm:116]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'typeset' [prerm:106]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'time' [prerm:119]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'test -a' [postinst:74]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'suspend' [prerm:97]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'source ~/bar' [prerm:170]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'source a' [prerm:171]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'source /bar/baz/bat' [prerm:8]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'source '$BAR'' [prerm:169]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'source $FOO' [prerm:22]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'source "$BAR"' [prerm:168]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'shopt' [prerm:117]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'sh -D' [prerm:138]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'sh --foo' [prerm:139]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'sh +O' [prerm:140]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'set -B' [prerm:109]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'select foo' [postinst:66]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'readonly -f' [prerm:130]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read' [prerm:7]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read' [prerm:51]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read' [postinst:14]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read -x' [prerm:48]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read -x' [prerm:47]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read -r' [prerm:164]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read -p' [prerm:165]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'read --fish' [prerm:166]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'pushd' [prerm:123]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'popd' [prerm:128]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'local -x' [prerm:126]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'let' [postinst:73]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'function foo(' [prerm:16]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'foobar@()' [prerm:156]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'foobar.() {' [prerm:96]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'foo.bar()' [prerm:151]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'export -x' [prerm:134]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'exec -l' [postinst:69]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'exec -c' [postinst:70]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'exec -a' [postinst:71]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -ne' [prerm:92]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -ne' [prerm:75]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -n -e' [prerm:72]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -en' [prerm:74]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -e' [prerm:93]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -e' [prerm:91]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -e' [prerm:73]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo -e' [postinst:63]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo 'xyz\rabc'' [prerm:88]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo 'a\nb'' [prerm:54]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo "abc\nxyz"' [prerm:87]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'echo "a\\b"' [prerm:53]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'ech.os() {' [prerm:80]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'disown' [prerm:107]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'dirs' [prerm:120]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'declare' [prerm:102]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'complete' [prerm:100]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'compgen' [prerm:101]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'caller' [prerm:99]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'builtin' [prerm:108]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'alias -p' [prerm:110]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '[[' [prerm:26]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '[ "$2" ==' [prerm:12]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'VAR+=' [prerm:69]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script 'H[0]=' [postinst:16]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '>&bar' [prerm:82]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '>& bar' [prerm:83]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '<<<' [prerm:66]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '<(tac a)' [prerm:121]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '/dev/tcp' [prerm:132]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '.foobar() {' [prerm:105]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '. /usr/share/lintian/shell foo' [postinst:10]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '. "$(dirname $0)/shell"' [postinst:11]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '&>' [prerm:19]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${line:3:1}' [prerm:43]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${UID' [prerm:56]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:55]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:50]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:43]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:38]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:33]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:28]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:23]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[@]}' [postinst:19]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${H[0]}' [postinst:17]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${#H[0]}' [postinst:18]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '${!foo}' [postinst:64]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$SHLVL' [prerm:58]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$SHELLOPTS' [prerm:63]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$SECONDS' [prerm:60]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$RANDOM' [postinst:80]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$RANDOM' [postinst:75]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$PIPESTATUS' [prerm:64]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$HOSTNAME' [postinst:45]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$EUID' [prerm:57]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$DIRSTACK' [prerm:59]
+scripts-bashisms (binary): possible-bashism-in-maintainer-script '$BASH_FOO' [prerm:62]
diff --git a/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/debian/control.in b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/debian/control.in
new file mode 100644
index 0000000..eb888ce
--- /dev/null
+++ b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: libc0.1
+Depends: ${shlibs:Depends}, ${misc:Depends}, libc6
+Recommends: libc6.1
+Suggests: libc0.3
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/fill-values b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/fill-values
new file mode 100644
index 0000000..998526e
--- /dev/null
+++ b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-hardcoded-libc
+Description: Test hard-coded dependencies on libc
diff --git a/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/desc b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/desc
new file mode 100644
index 0000000..f599f0f
--- /dev/null
+++ b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-file-hardcoded-libc
+Check: substvars/libc
+See-Also:
+ Debian Bug#512196
diff --git a/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/hints b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/hints
new file mode 100644
index 0000000..538f810
--- /dev/null
+++ b/t/recipes/checks/substvars/libc/control-file-hardcoded-libc/eval/hints
@@ -0,0 +1,4 @@
+control-file-hardcoded-libc (source): package-depends-on-hardcoded-libc (in section for control-file-hardcoded-libc) Suggests libc0.3 [debian/control:14]
+control-file-hardcoded-libc (source): package-depends-on-hardcoded-libc (in section for control-file-hardcoded-libc) Recommends libc6.1 [debian/control:13]
+control-file-hardcoded-libc (source): package-depends-on-hardcoded-libc (in section for control-file-hardcoded-libc) Pre-Depends libc0.1 [debian/control:11]
+control-file-hardcoded-libc (source): package-depends-on-hardcoded-libc (in section for control-file-hardcoded-libc) Depends ${shlibs:Depends}, ${misc:Depends}, libc6 [debian/control:12]
diff --git a/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/debian/control.in b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/debian/control.in
new file mode 100644
index 0000000..dbcfee8
--- /dev/null
+++ b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, ${misc:Pre-Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/fill-values b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/fill-values
new file mode 100644
index 0000000..2455541
--- /dev/null
+++ b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: depends-on-misc-pre-depends
+Description: Check for packages Depending on ${misc:Pre-Depends}
diff --git a/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/desc b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/desc
new file mode 100644
index 0000000..abebba6
--- /dev/null
+++ b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: depends-on-misc-pre-depends
+Check: substvars/misc/pre-depends
diff --git a/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/hints b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/hints
new file mode 100644
index 0000000..383ccdb
--- /dev/null
+++ b/t/recipes/checks/substvars/misc/pre-depends/depends-on-misc-pre-depends/eval/hints
@@ -0,0 +1 @@
+depends-on-misc-pre-depends (source): depends-on-misc-pre-depends ${misc:Depends}, ${misc:Pre-Depends} (in section for depends-on-misc-pre-depends) [debian/control:12]
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/control.in b/t/recipes/checks/systemd/init.d-general/build-spec/debian/control.in
new file mode 100644
index 0000000..80dcc37
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/control.in
@@ -0,0 +1,61 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-bugs
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- bugs
+ Test some simple bugs in the check
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-interpreter-in-usr-dir
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- bad script interpreter
+ Test a check for a /usr dir interpreter used in an init script
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-sourcing-without-test
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] -- sourcing without test
+ Test a check for . /etc/default/foo without checking the existence of
+ the file beforehand.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+
+Package: [% $source %]-new-style
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] -- "new style"
+ New style of init.d. (#919604)
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.init b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.init
new file mode 100644
index 0000000..55305ab
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.init
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+### BEGIN INIT INFO
+# Provides: init.d-general-bugs
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+# start stop force-reload restart status
+
+. /lib/lsb/init-functions
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.postinst b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.postinst
new file mode 100644
index 0000000..e3bb515
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-bugs.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+if [ "$1" = "configure" ] ; then
+ # duplicate call as debhelper will add one for us
+ update-rc.d init.d-general-bugs word
+fi
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init
new file mode 100644
index 0000000..ff7698c
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init
@@ -0,0 +1,14 @@
+#!/usr/bin/perl -w
+
+### BEGIN INIT INFO
+# Provides: init.d-general-interpreter-in-usr-dir
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start daemon at boot time
+# Description: Enable service provided by daemon.
+### END INIT INFO
+
+printf "start status stop reload restart force-reload\n";
+
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-new-style.init b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-new-style.init
new file mode 100644
index 0000000..e815337
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-new-style.init
@@ -0,0 +1,31 @@
+#!/usr/bin/env /lib/init/init-d-script
+### BEGIN INIT INFO
+# Provides: init.d-general-new-style
+# Should-Start: $syslog
+# Required-Start: $time $local_fs
+# Required-Stop: $time
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: init.d-general-new-style
+### END INIT INFO
+NAME='init.d-general-new-style'
+DESC='init.d-general-new-style description here'
+DAEMON=/usr/sbin/init.d-general-new-styl
+
+daemon_ () { /usr/bin/daemon --noconfig --name "${NAME}" "$@"; }
+if ! test -x '/usr/bin/daemon' ; then
+ log_failure_msg "install \`daemon' package to use ${NAME} script"
+ exit 1
+fi
+
+do_start_cmd_override () {
+ daemon_ "${DAEMON}"
+}
+
+do_stop_cmd_override () {
+ if daemon_ --running ; then
+ daemon_ --stop
+ fi
+}
+
+# vim: ft=sh
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init
new file mode 100644
index 0000000..7046ed9
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init
@@ -0,0 +1,52 @@
+#!/bin/sh -e
+
+### BEGIN INIT INFO
+# Provides: init.d-general-sourcing-without-test
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start daemon at boot time
+# Description: Enable service provided by daemon.
+### END INIT INFO
+
+echo start stop reload restart force-reload status
+
+. /lib/lsb/init-functions
+
+. /etc/default/rcS
+
+[ ! -f /etc/default/foo ] || . /etc/default/foo
+
+[ -f /etc/default/bar ] && . /etc/default/bar
+
+if [ -e /etc/default/locale ]; then
+ . /etc/default/locale
+fi
+
+if [ -f /etc/default/moo ]; then
+ . /etc/default/moo
+fi
+
+if [ -r /etc/default/tmpfs ]; then
+ . /etc/default/tmpfs
+fi
+
+PACKAGE=moo
+[ -f /etc/default/$PACKAGE ] && . /etc/default/$PACKAGE
+
+if [ -f /etc/default/$PACKAGE ]; then
+ . /etc/default/$PACKAGE
+fi
+
+if test -f /etc/default/$PACKAGE; then
+ . /etc/default/$PACKAGE
+fi
+
+# This is not sourcing without a test and shouldn't produce an error.
+if [ ! -f /etc/default/$PACKAGE ] ; then
+ # do something else
+ :
+else
+ . /etc/default/$PACKAGE
+fi
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.default b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.default
new file mode 100644
index 0000000..c1d7f21
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.default
@@ -0,0 +1,17 @@
+ENABLED="false"
+ENABLED=false
+DISABLED="true"
+DISABLED=true
+RUN="true"
+RUN=true
+PREFIXRUN="true"
+PREFIXRUN=true
+
+# ENABLED="false"
+# ENABLED=false
+# DISABLED="true"
+# DISABLED=true
+# RUN="true"
+# RUN=true
+# PREFIXRUN="true"
+# PREFIXRUN=true
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.init b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.init
new file mode 100644
index 0000000..b3e8ae7
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/debian/init.d-general.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: init.d-general
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/init.d-general/build-spec/fill-values b/t/recipes/checks/systemd/init.d-general/build-spec/fill-values
new file mode 100644
index 0000000..e567c49
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: init.d-general
+Description: Test tags related to the init.d checks
diff --git a/t/recipes/checks/systemd/init.d-general/eval/desc b/t/recipes/checks/systemd/init.d-general/eval/desc
new file mode 100644
index 0000000..9f2f714
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: init.d-general
+Check: systemd
diff --git a/t/recipes/checks/systemd/init.d-general/eval/hints b/t/recipes/checks/systemd/init.d-general/eval/hints
new file mode 100644
index 0000000..e13be56
--- /dev/null
+++ b/t/recipes/checks/systemd/init.d-general/eval/hints
@@ -0,0 +1,6 @@
+init.d-general-sourcing-without-test (binary): missing-systemd-service-for-init.d-script init.d-general-sourcing-without-test [etc/init.d/init.d-general-sourcing-without-test]
+init.d-general-new-style (binary): missing-systemd-service-for-init.d-script init.d-general-new-style [etc/init.d/init.d-general-new-style]
+init.d-general-interpreter-in-usr-dir (binary): missing-systemd-service-for-init.d-script init.d-general-interpreter-in-usr-dir [etc/init.d/init.d-general-interpreter-in-usr-dir]
+init.d-general-interpreter-in-usr-dir (binary): init.d-script-does-not-source-init-functions [etc/init.d/init.d-general-interpreter-in-usr-dir]
+init.d-general-bugs (binary): missing-systemd-service-for-init.d-script init.d-general-bugs [etc/init.d/init.d-general-bugs]
+init.d-general (binary): missing-systemd-service-for-init.d-script init.d-general [etc/init.d/init.d-general]
diff --git a/t/recipes/checks/systemd/kill-mode-none/build-spec/debian/service b/t/recipes/checks/systemd/kill-mode-none/build-spec/debian/service
new file mode 100644
index 0000000..62e8eda
--- /dev/null
+++ b/t/recipes/checks/systemd/kill-mode-none/build-spec/debian/service
@@ -0,0 +1,13 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/run/$NAME.pid
+StandardOutput=null
+StandardError=null
+KillMode=none
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/kill-mode-none/build-spec/fill-values b/t/recipes/checks/systemd/kill-mode-none/build-spec/fill-values
new file mode 100644
index 0000000..0b884f1
--- /dev/null
+++ b/t/recipes/checks/systemd/kill-mode-none/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: kill-mode-none
+Description: KKillMode=none in systemd service file
diff --git a/t/recipes/checks/systemd/kill-mode-none/eval/desc b/t/recipes/checks/systemd/kill-mode-none/eval/desc
new file mode 100644
index 0000000..0061a5b
--- /dev/null
+++ b/t/recipes/checks/systemd/kill-mode-none/eval/desc
@@ -0,0 +1,2 @@
+Testname: kill-mode-none
+Check: systemd
diff --git a/t/recipes/checks/systemd/kill-mode-none/eval/hints b/t/recipes/checks/systemd/kill-mode-none/eval/hints
new file mode 100644
index 0000000..2b96e3f
--- /dev/null
+++ b/t/recipes/checks/systemd/kill-mode-none/eval/hints
@@ -0,0 +1,2 @@
+kill-mode-none (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/kill-mode-none.service]
+kill-mode-none (binary): kill-mode-none usr/lib/systemd/system/kill-mode-none.service [usr/lib/systemd/system/kill-mode-none.service]
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..935c633
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,41 @@
+scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * I'm also not able to write my name.
+ * Added a script in /etc/Xsession.d
+ * Bizarre version number courtesy of
+ https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare
+
+ -- Mark 'HE' Brokschmitt <he@debian.org> Thu, 23 Jun 2005 14:32:39 +0200
+
+scripts (5-1) unstable; urgency=low
+
+ * I'm making a typo in my own name... And I want lintian to warn me about
+ it.
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:26:34 +0200
+
+scripts (4-1) unstable; urgency=low
+
+ * Add new example to check that not executable files with a shebang line
+ called *in don't trigger the script-not-executable warning.
+
+ -- Marc 'HE' Brockschmidt <he@debian.org> Wed, 14 Apr 2004 19:44:04 +0200
+
+scripts (3-3) unstable; urgency=low
+
+ * Add suidperlfoo and some code in debian/rules to
+ check the new suidperl checks
+
+ -- Frank Lichtenheld <djpig@debian.org> Wed, 31 Mar 2004 21:06:20 +0000
+
+scripts (2-1) unstable; urgency=low
+
+ * Add tkfoo script for tk checkings
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 21 Feb 2004 17:13:36 +0100
+
+scripts (1-0) unstable; urgency=low
+
+ * Initial version
+
+ -- Lintian Maintainers <lintian-maint@debian.org> Sat, 10 Feb 2001 15:37:31 -0800
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..75a521f
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: scripts
+Section: interpreters
+Priority: optional
+Maintainer: Lintian Maintainers <lintian-maint@debian.org>
+Uploaders: Jeroen van Wolfelaar <jeroen@wolffelaar.nl>, Marc 'HE' Brockschmidt <he@debian.org>
+Build-Depends-Indep: dpatch
+Standards-Version: 3.2.1
+
+Package: scripts
+Architecture: [% $package_architecture %]
+Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli
+Recommends: tk8.4 | wish
+Description: test lintian's script file checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/copyright
new file mode 100644
index 0000000..ad8a119
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/copyright
@@ -0,0 +1,5 @@
+This file contains the phrase "under the same terms as Perl itself" to
+trigger warnings about not having common-licenses references.
+
+This file contains the phrase "public domain" which should suppress
+warnings about no copyright date.
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list
new file mode 100644
index 0000000..3b9d37e
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list
@@ -0,0 +1,11 @@
+01_not_here_right_now.dpatch
+
+# some comment
+/* some more
+ elaborate comment
+ which needs DPATCH_OPTION_CPP=1
+ */02_i_dont_have_a_description.patch 03_specified_without_dpatch
+
+// and again a comment
+
+04_i_dont_have_a_description_either.patch
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list.sparc
new file mode 100644
index 0000000..8b47ab3
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00list.sparc
@@ -0,0 +1 @@
+01_some_other_patch_thats_not_in_the_package.dpatch
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00options
new file mode 100644
index 0000000..57ffeb6
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/00options
@@ -0,0 +1 @@
+DPATCH_OPTION_CPP=1
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
new file mode 100644
index 0000000..9279c1b
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt <Marc 'HE' Brockschmidt <he@debian.org>>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
new file mode 100644
index 0000000..8303ac6
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch
@@ -0,0 +1,5 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Listed in 00list without .dpatch suffix.
+
+@DPATCH@
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
new file mode 100644
index 0000000..b603f16
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch
@@ -0,0 +1,7 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_i_dont_have_a_description_either.patch by Adam D. Barratt <adam@adam-barratt.org.uk>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP:
+
+@DPATCH@
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..7c5baf1
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -x "/etc/init.d/lsb-broken" ] ; then
+ update-rc.d lsb-broken defaults >/dev/null
+fi
+if [ -x "/etc/init.d/no-lsb" ] ; then
+ update-rc.d no-lsb defaults >/dev/null
+fi
+if [ -x "/etc/init.d/skeleton" ] ; then
+ update-rc.d skeleton defaults >/dev/null
+fi
+if [ -x "/etc/init.d/lsb-other" ] ; then
+ update-rc.d lsb-other defaults >/dev/null
+fi
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..8fa75a2
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/postrm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ "$1" = purge ] ; then
+ update-rc.d lsb-broken remove >/dev/null
+ update-rc.d no-lsb remove >/dev/null
+ update-rc.d skeleton remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+ update-rc.d lsb-other remove >/dev/null
+fi
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..0799557
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+set -x
+
+#
+# Some comments here
+#
+
+# This serves as an example of an "empty" script, so
+# please do not add any real code here, thank you :)
+
+#DEBHELPER#
+
+exit 0
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..ee3677e
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/rules
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+
+tmp=debian/tmp
+
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+binary-indep:
+ install -d $(tmp)/usr/bin/
+ install -d $(tmp)/etc/X11/Xsession.d/
+ install -d $(tmp)/etc/init.d/
+ install -d $(tmp)/etc/csh/login.d/
+ install -d $(tmp)/etc/fish.d/
+ install -d $(tmp)/usr/share/scripts/
+ install -d $(tmp)/usr/share/doc/scripts/
+ install -d $(tmp)/usr/lib/cgi-bin
+ install -d $(tmp)/usr/src/scripts
+ install -d $(tmp)/DEBIAN
+
+ install -m 755 csh-foo $(tmp)/etc/csh/login.d/
+ install -m 755 envfoo $(tmp)/usr/bin/
+ install -m 755 fish-foo $(tmp)/etc/fish.d/
+ install -m 755 jruby-broken $(tmp)/usr/bin/
+ install -m 755 perlfoo $(tmp)/usr/bin/
+ install -m 755 rubyfoo $(tmp)/usr/bin/
+# This doesn't use "env" but should also trigger script-in-usr-share-doc
+ install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/
+ install -m 755 make-foo $(tmp)/usr/bin/
+ install -m 755 lefty-foo $(tmp)/usr/bin/
+ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2
+ install -m 755 sh-broken $(tmp)/usr/bin/
+ install -m 4555 suidperlfoo $(tmp)/usr/bin/
+ install -m 755 tkfoo $(tmp)/usr/bin/
+ install -m 755 wishfoo $(tmp)/usr/bin/
+ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/
+
+# Permissions here aren't part of what's being tested, but let us exercise
+# some other errors.
+ install -m 755 perl-bizarre-1 $(tmp)/usr/bin/
+ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/
+ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/
+ install -m 705 guile-bizarre $(tmp)/usr/bin/
+
+# First one should produce a warning; second one shouldn't.
+ install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/
+ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/
+
+ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton
+ install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb
+ install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken
+ install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other
+
+ install -m 755 phpfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0foo
+
+ install -m 755 phpenvfoo $(tmp)/usr/share/scripts/
+ sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo
+ chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo
+
+ echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in
+ chmod 644 $(tmp)/usr/share/scripts/foobar.in
+
+ touch $(tmp)/usr/share/scripts/mono.exe
+ chmod 755 $(tmp)/usr/share/scripts/mono.exe
+
+ echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar
+ chmod 755 $(tmp)/usr/share/scripts/foo\$$bar
+
+ echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script
+ chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script
+
+ echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh
+ chmod 755 $(tmp)/usr/bin/test.sh
+
+
+ dh_testroot # dummy to test missing debhelper dependency
+
+
+ install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian
+ gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian
+ install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright
+
+ install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles
+ install -m 755 debian/preinst $(tmp)/DEBIAN/preinst
+ install -m 755 debian/postinst $(tmp)/DEBIAN/postinst
+ install -m 755 debian/postrm $(tmp)/DEBIAN/postrm
+ touch $(tmp)/DEBIAN/prerm
+ chmod 755 $(tmp)/DEBIAN/prerm
+ dpkg-gencontrol -isp
+ dpkg --build $(tmp) ..
+
+binary: binary-arch binary-indep
+
+clean:
+ rm -rf debian/files $(tmp) debian/substvars
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/scripts.conffiles
new file mode 100644
index 0000000..01a371a
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/scripts.conffiles
@@ -0,0 +1,6 @@
+/etc/init.d/lsb-broken
+/etc/init.d/lsb-other
+/etc/init.d/no-lsb
+/etc/X11/Xsession.d/xsession-test
+/etc/csh/login.d/csh-foo
+/etc/fish.d/fish-foo
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..dba5815
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/debian/watch
@@ -0,0 +1,8 @@
+# watch file with upstream version mangling
+
+version=2
+opts="uversionmangle=s/$/ds/" \
+http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate
+
+version=3
+http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/fill-values b/t/recipes/checks/systemd/legacy-scripts/build-spec/fill-values
new file mode 100644
index 0000000..8a68457
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: legacy-scripts
+Source: scripts
+Version: 6ds-1ubuntu0.5.10.1
+Package-Architecture: all
+Skeleton: upload-non-native
+Description: Legacy test "scripts"
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/csh-foo
new file mode 100644
index 0000000..eaf47a1
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/csh-foo
@@ -0,0 +1,2 @@
+#! /bin/csh
+
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/envfoo
new file mode 100755
index 0000000..e005037
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/envfoo
@@ -0,0 +1,4 @@
+#! /bin/env python
+
+if __name__ == '__main__':
+ print 'Hi there'
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/fish-foo
new file mode 100644
index 0000000..7f59139
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/fish-foo
@@ -0,0 +1,2 @@
+#! /usr/bin/fish
+
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/gccbug.dpatch
new file mode 100755
index 0000000..65cbf37
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/gccbug.dpatch
@@ -0,0 +1,39 @@
+#! /bin/sh -e
+
+# DP: Use sensible-editor instead of vi as fallback editor
+
+# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being
+# a valid dpatch, so don't warn about it if it's in /usr/src.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100
++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100
+@@ -134,7 +134,7 @@
+ # If they don't have a preferred editor set, then use
+ if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+- EDIT=vi
++ EDIT=/usr/bin/sensible-editor
+ else
+ EDIT="$EDITOR"
+ fi
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/guile-bizarre
new file mode 100644
index 0000000..70e2c74
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/guile-bizarre
@@ -0,0 +1,6 @@
+#! /bin/sh
+# -*- scheme -*-
+exec guile -s $0 $*
+# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1)
+# Tests script_is_evil_and_wrong
+!#
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-broken
new file mode 100644
index 0000000..e4dfa92
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-broken
@@ -0,0 +1,34 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: bad-lsb
+# Required-Start: $local_fs $remote_fs
+# Required-Stop:
+# Default-Start: 1 2 3 4 5
+# Default-Stop: S 0 1 6 X
+# Short-Description: Example Lintian initscript
+# but this can't be continued
+# Description: An example of a bad LSB section in an init script.
+# This continuation is allowed (with spaces).
+# This one is too (with tabs).
+# X-Debian-Foo: Some unknown but valid keyword.
+# Foo: Some invalid keyword.
+
+# Whoops, no terminating line.
+
+# And then we have this duplicate section.
+### BEGIN INIT INFO
+# Required-Start: This one doesn't count.
+### END INIT INFO
+
+# Hey, look at all of those missing actions! But stop isn't missing.
+case "$1" in
+ start|stop)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-other
new file mode 100644
index 0000000..adb4795
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-lsb-other
@@ -0,0 +1,22 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lsb-other
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: This is another LSB script test, which has a missing
+# Short-Description.
+### END INIT INFO
+
+case "$1" in
+ start|stop|restart|reload|force-reload)
+ echo "Blah"
+ ;;
+ *)
+ echo "Usage: foo start" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-no-lsb
new file mode 100644
index 0000000..6b994dd
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-no-lsb
@@ -0,0 +1,17 @@
+#! /bin/sh
+# No LSB section, but otherwise okay. (Well, the messages are bad, but we
+# don't check that yet.)
+
+case "$1" in
+ start)
+ echo "Blah starting"
+ ;;
+ stop)
+ echo "Blah stopping"
+ ;;
+ restart|force-reload)
+ echo "Blah restarting"
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-skeleton
new file mode 100644
index 0000000..c868508
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/init-skeleton
@@ -0,0 +1,150 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: skeleton
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: S 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/jruby-broken
new file mode 100644
index 0000000..56f574d
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/jruby-broken
@@ -0,0 +1,2 @@
+#!/usr/bin/jruby
+# There's no non-versioned jruby, so this should be an error.
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/lefty-foo
new file mode 100644
index 0000000..52c003e
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/lefty-foo
@@ -0,0 +1,2 @@
+#!/usr/local/bin/lefty
+
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/make-foo
new file mode 100644
index 0000000..6b787b5
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/make-foo
@@ -0,0 +1,3 @@
+#!/usr/bin/make
+
+
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-1
new file mode 100644
index 0000000..fc632c8
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-1
@@ -0,0 +1,11 @@
+#! /bin/sh
+eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \
+;exec perl -x -S -- "$0" ${1+"$@"};#'if 0;
+eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+
+#!perl -w
+package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1;
+# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003.
+# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib
+
+# The above was actually seen in the wild and stresses the
+# script_is_evil_and_wrong test.
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-2
new file mode 100644
index 0000000..afd9cfe
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-2
@@ -0,0 +1,7 @@
+#!/bin/sh
+eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# I'm someone following perlrun except without using the Perl #! line.
+# Now something to choke bash.
+while (<>) { if (/%#/) { print } }
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-3
new file mode 100644
index 0000000..44baf75
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perl-bizarre-3
@@ -0,0 +1,6 @@
+eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
+& eval 'exec /usr/bin/perl -wS $0 $argv:q'
+ if $running_under_some_shell;
+
+# More utterly bizarreness from perlrun. This one even doesn't work if
+# there's a valid #! line on the first line. I don't understand why....
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perlfoo
new file mode 100644
index 0000000..5b27ed0
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/perlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/perl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpenvfoo
new file mode 100644
index 0000000..cbbfb2e
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpenvfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/env php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpfoo
new file mode 100644
index 0000000..e0595e6
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/phpfoo
@@ -0,0 +1,7 @@
+#!/usr/bin/php
+<html>
+<head>
+<title>Dumb PHP script</title>
+</head>
+<body><? print(Date("l F d, Y")); ?></body>
+</html>
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/rubyfoo
new file mode 100644
index 0000000..8024605
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/rubyfoo
@@ -0,0 +1,4 @@
+#!/bin/ruby1.8
+
+# Ok, that example is really pathetic, but until we have
+# some better code in checks/scripts, it will do
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/sh-broken
new file mode 100644
index 0000000..7b79074
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/sh-broken
@@ -0,0 +1,2 @@
+#!/bin/sh
+if fi
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/suidperlfoo
new file mode 100644
index 0000000..bcbc471
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/suidperlfoo
@@ -0,0 +1,3 @@
+#! /usr/bin/suidperl
+
+print "Hello, World!";
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/tkfoo
new file mode 100755
index 0000000..533595a
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/tkfoo
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Insane amount of empty lines and comments
+
+#
+#
+#
+#
+
+#
+#
+
+#
+#
+#
+
+#
+#
+
+#
+# This line makes the next one a comment in Tcl \
+exec wish "$0" -- ${1+"$@"}
+
+# lintian should not check the following for syntax
+# if it detects the line above correctly
+# Code snippet taken from eTkTab
+
+if { [array names prefs keybindings] != "" } {
+ # Read in the file
+ array set unparsed_bindings [ read_settings_file $prefs(keybindings)]
+}
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/wishfoo
new file mode 100644
index 0000000..035c9ad
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/wishfoo
@@ -0,0 +1,4 @@
+#!/usr/bin/wish
+#
+# This is not actually a wish script, here to force a test of wish
+# dependencies.
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/xsession-test
new file mode 100644
index 0000000..ca49d72
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/orig/xsession-test
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Foo."
diff --git a/t/recipes/checks/systemd/legacy-scripts/build-spec/pre-build b/t/recipes/checks/systemd/legacy-scripts/build-spec/pre-build
new file mode 100755
index 0000000..b5649a8
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/build-spec/pre-build
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DIR="$1"
+
+rm -f "$DIR/debian/compat"
diff --git a/t/recipes/checks/systemd/legacy-scripts/eval/desc b/t/recipes/checks/systemd/legacy-scripts/eval/desc
new file mode 100644
index 0000000..32e5996
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-scripts
+Check: systemd
diff --git a/t/recipes/checks/systemd/legacy-scripts/eval/hints b/t/recipes/checks/systemd/legacy-scripts/eval/hints
new file mode 100644
index 0000000..5351e04
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/eval/hints
@@ -0,0 +1,6 @@
+scripts (binary): missing-systemd-service-for-init.d-script no-lsb [etc/init.d/no-lsb]
+scripts (binary): missing-systemd-service-for-init.d-script lsb-other [etc/init.d/lsb-other]
+scripts (binary): missing-systemd-service-for-init.d-script lsb-broken [etc/init.d/lsb-broken]
+scripts (binary): init.d-script-does-not-source-init-functions [etc/init.d/no-lsb]
+scripts (binary): init.d-script-does-not-source-init-functions [etc/init.d/lsb-other]
+scripts (binary): init.d-script-does-not-source-init-functions [etc/init.d/lsb-broken]
diff --git a/t/recipes/checks/systemd/legacy-scripts/eval/post-test b/t/recipes/checks/systemd/legacy-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/systemd/legacy-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/control.in b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/control.in
new file mode 100644
index 0000000..ecbbc46
--- /dev/null
+++ b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/control.in
@@ -0,0 +1,30 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-with
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Pre-Depends: init-system-helpers (>= 1.54~)
+Description: [% $description %] (with)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has the dependency.
+
+Package: [% $source %]-without
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}
+Description: [% $description %] (without)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package is missing the dependency.
diff --git a/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst
new file mode 100644
index 0000000..732f9fc
--- /dev/null
+++ b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-with.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+invoke-rc.d
+invoke-rc.d --skip-systemd-native
+
+exit 0
diff --git a/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst
new file mode 100644
index 0000000..732f9fc
--- /dev/null
+++ b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/debian/scripts-skip-systemd-native-without.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+invoke-rc.d
+invoke-rc.d --skip-systemd-native
+
+exit 0
diff --git a/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/fill-values b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/fill-values
new file mode 100644
index 0000000..06a0533
--- /dev/null
+++ b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: scripts-skip-systemd-native
+Description: Test for packages that use --skip-systemd-native
diff --git a/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/desc b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/desc
new file mode 100644
index 0000000..e52ad20
--- /dev/null
+++ b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/desc
@@ -0,0 +1,2 @@
+Testname: scripts-skip-systemd-native
+Check: systemd/native/prerequisites
diff --git a/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/hints b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/hints
new file mode 100644
index 0000000..a40a9d1
--- /dev/null
+++ b/t/recipes/checks/systemd/native/prerequisites/scripts-skip-systemd-native/eval/hints
@@ -0,0 +1 @@
+scripts-skip-systemd-native-without (binary): skip-systemd-native-flag-missing-pre-depends (does not satisfy init-system-helpers:any) [postinst:8]
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/control.in b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/control.in
new file mode 100644
index 0000000..680c2f2
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/init b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/init
new file mode 100644
index 0000000..54cb8b1
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: no-systemd-service-for-init-script
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.other.init b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.other.init
new file mode 100644
index 0000000..217ea92
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.other.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: other
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.service b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.service
new file mode 100644
index 0000000..7972526
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/no-systemd-service-for-init-script.service
@@ -0,0 +1,9 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/rules b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/rules
new file mode 100755
index 0000000..d49d149
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/debian/rules
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+override_dh_installinit:
+ dh_installinit
+ dh_installinit --name=other
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/fill-values b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/fill-values
new file mode 100644
index 0000000..7f48d70
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: no-systemd-service-for-init-script
+Skeleton: upload-native
+Description: Test package with init.d script but no systemd service file
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/desc b/t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/desc
new file mode 100644
index 0000000..11df1f6
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-systemd-service-for-init-script
+Check: systemd
diff --git a/t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/hints b/t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/hints
new file mode 100644
index 0000000..64d8d8f
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-service-for-init-script/eval/hints
@@ -0,0 +1,2 @@
+no-systemd-service-for-init-script (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/no-systemd-service-for-init-script.service]
+no-systemd-service-for-init-script (binary): omitted-systemd-service-for-init.d-script other [etc/init.d/other]
diff --git a/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/debian/rules b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/debian/rules
new file mode 100755
index 0000000..7e0203d
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/debian/rules
@@ -0,0 +1,10 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_installcron:
+ set -e; for X in daily weekly monthly hourly; do \
+ echo "#!/bin/sh\n\nexit 0" > debian/$(shell dh_listpackages).cron.$$X; \
+ done
+ dh_installcron
diff --git a/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/fill-values b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/fill-values
new file mode 100644
index 0000000..0d73f04
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: no-systemd-timer-for-cron-script
+Skeleton: upload-native
+Description: Test package with cron scripts but no systemd timer file
diff --git a/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/desc b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/desc
new file mode 100644
index 0000000..b720e7f
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-systemd-timer-for-cron-script
+Check: systemd
diff --git a/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/hints b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/hints
new file mode 100644
index 0000000..db8c71b
--- /dev/null
+++ b/t/recipes/checks/systemd/no-systemd-timer-for-cron-script/eval/hints
@@ -0,0 +1,4 @@
+no-systemd-timer-for-cron-script (binary): missing-systemd-timer-for-cron-script [etc/cron.weekly/no-systemd-timer-for-cron-script]
+no-systemd-timer-for-cron-script (binary): missing-systemd-timer-for-cron-script [etc/cron.monthly/no-systemd-timer-for-cron-script]
+no-systemd-timer-for-cron-script (binary): missing-systemd-timer-for-cron-script [etc/cron.hourly/no-systemd-timer-for-cron-script]
+no-systemd-timer-for-cron-script (binary): missing-systemd-timer-for-cron-script [etc/cron.daily/no-systemd-timer-for-cron-script]
diff --git a/t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/install b/t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/install
new file mode 100644
index 0000000..67712f2
--- /dev/null
+++ b/t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/install
@@ -0,0 +1 @@
+debian/no-install.service usr/lib/systemd/system/
diff --git a/t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/no-install.service b/t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/no-install.service
new file mode 100644
index 0000000..80468ef
--- /dev/null
+++ b/t/recipes/checks/systemd/service-file-no-install-key/build-spec/debian/no-install.service
@@ -0,0 +1,8 @@
+[Unit]
+Documentation=https://www.freedesktop.org/wiki/Software/dbus/
+
+[Service]
+ExecStart=/usr/bin/test
+PrivateNetwork=yes
+
+[Install]
diff --git a/t/recipes/checks/systemd/service-file-no-install-key/build-spec/fill-values b/t/recipes/checks/systemd/service-file-no-install-key/build-spec/fill-values
new file mode 100644
index 0000000..9cbed20
--- /dev/null
+++ b/t/recipes/checks/systemd/service-file-no-install-key/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: service-file-no-install-key
+Description: Service file lacks the required Install key
diff --git a/t/recipes/checks/systemd/service-file-no-install-key/eval/desc b/t/recipes/checks/systemd/service-file-no-install-key/eval/desc
new file mode 100644
index 0000000..d6651f0
--- /dev/null
+++ b/t/recipes/checks/systemd/service-file-no-install-key/eval/desc
@@ -0,0 +1,2 @@
+Testname: service-file-no-install-key
+Check: systemd
diff --git a/t/recipes/checks/systemd/service-file-no-install-key/eval/hints b/t/recipes/checks/systemd/service-file-no-install-key/eval/hints
new file mode 100644
index 0000000..65448a8
--- /dev/null
+++ b/t/recipes/checks/systemd/service-file-no-install-key/eval/hints
@@ -0,0 +1 @@
+service-file-no-install-key (binary): systemd-service-file-missing-install-key [usr/lib/systemd/system/no-install.service]
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/install b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/install
new file mode 100644
index 0000000..41c700e
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/install
@@ -0,0 +1,6 @@
+debian/test.service usr/lib/systemd/system/
+debian/test2.service usr/lib/systemd/system/
+debian/test3.service usr/lib/systemd/system/
+debian/test4.service usr/lib/systemd/system/
+debian/test5.service usr/lib/systemd/system/
+debian/test@.service usr/lib/systemd/system/
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test.service b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test.service
new file mode 100644
index 0000000..60f401a
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test.service
@@ -0,0 +1,9 @@
+[Unit]
+After=dbus.target
+Documentation=https://www.freedesktop.org/wiki/Software/dbus/
+
+[Service]
+ExecStart=/usr/bin/test
+
+[Install]
+RequiredBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test2.service b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test2.service
new file mode 100644
index 0000000..d98eb9f
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test2.service
@@ -0,0 +1,4 @@
+[Unit]
+After=
+After=syslog.target
+Documentation=https://www.freedesktop.org/wiki/Software/dbus/
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test3.service b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test3.service
new file mode 100644
index 0000000..88e5f4e
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test3.service
@@ -0,0 +1,6 @@
+[Unit]
+After=
+After = syslog.target
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test4.service b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test4.service
new file mode 100644
index 0000000..d63a719
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test4.service
@@ -0,0 +1,8 @@
+[Unit]
+Documentation=https://www.example.com/
+
+[Service]
+ExecStart=/usr/bin/test
+
+[Install]
+Also=test3
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test5.service b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test5.service
new file mode 100644
index 0000000..d26713a
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test5.service
@@ -0,0 +1,11 @@
+[Unit]
+Documentation=https://www.example.com/
+
+[Service]
+Type=oneshot
+ExecStart=/etc/init.d/test5 start
+ExecStartPre=/etc/init.d/test5 start-pre
+ExecStartPost=/etc/init.d/test5 start-post
+ExecReload=/etc/init.d/test5 reload
+ExecStop=/etc/init.d/test5 stop
+ExecStopPost=/etc/init.d/test5 stop-post
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test@.service b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test@.service
new file mode 100644
index 0000000..d54ea5d
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/debian/test@.service
@@ -0,0 +1,5 @@
+[Unit]
+Documentation=https://www.example.com/
+
+[Service]
+ExecStart=/usr/bin/test
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/fill-values b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/fill-values
new file mode 100644
index 0000000..dad1cdf
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: systemd-complex-service-file
+Dh-Compat-Level: 9
+Description: Long ago tested the dropped .include directive; now another general purpose test
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/eval/desc b/t/recipes/checks/systemd/systemd-complex-service-file/eval/desc
new file mode 100644
index 0000000..1482531
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/eval/desc
@@ -0,0 +1,2 @@
+Testname: systemd-complex-service-file
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-complex-service-file/eval/hints b/t/recipes/checks/systemd/systemd-complex-service-file/eval/hints
new file mode 100644
index 0000000..de49b8d
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-complex-service-file/eval/hints
@@ -0,0 +1,15 @@
+systemd-complex-service-file (binary): systemd-service-file-wraps-init-script ExecStopPost [usr/lib/systemd/system/test5.service]
+systemd-complex-service-file (binary): systemd-service-file-wraps-init-script ExecStop [usr/lib/systemd/system/test5.service]
+systemd-complex-service-file (binary): systemd-service-file-wraps-init-script ExecStartPre [usr/lib/systemd/system/test5.service]
+systemd-complex-service-file (binary): systemd-service-file-wraps-init-script ExecStartPost [usr/lib/systemd/system/test5.service]
+systemd-complex-service-file (binary): systemd-service-file-wraps-init-script ExecStart [usr/lib/systemd/system/test5.service]
+systemd-complex-service-file (binary): systemd-service-file-wraps-init-script ExecReload [usr/lib/systemd/system/test5.service]
+systemd-complex-service-file (binary): systemd-service-file-refers-to-obsolete-target syslog.target [usr/lib/systemd/system/test2.service]
+systemd-complex-service-file (binary): systemd-service-file-refers-to-obsolete-target dbus.target [usr/lib/systemd/system/test.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-install-key [usr/lib/systemd/system/test2.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/test@.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/test4.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/test3.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/test2.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/test.service]
+systemd-complex-service-file (binary): systemd-service-file-missing-documentation-key [usr/lib/systemd/system/test3.service]
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/bootmisc.sh b/t/recipes/checks/systemd/systemd-general/build-spec/debian/bootmisc.sh
new file mode 100755
index 0000000..5c73683
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/bootmisc.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: bootmisc
+# Required-Start: $remote_fs
+# Required-Stop:
+# Should-Start: udev
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Miscellaneous things to be done during bootup.
+# Description: Some cleanup. Note, it need to run after mountnfs-bootclean.sh.
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+[ "$DELAYLOGIN" ] || DELAYLOGIN=yes
+. /lib/init/vars.sh
+
+do_start () {
+ #
+ # If login delaying is enabled then create the flag file
+ # which prevents logins before startup is complete
+ #
+ case "$DELAYLOGIN" in
+ Y*|y*)
+ echo "System bootup in progress - please wait" > /var/lib/initscripts/nologin
+ ;;
+ esac
+
+ # Create /var/run/utmp so we can login.
+ : > /var/run/utmp
+ if grep -q ^utmp: /etc/group
+ then
+ chmod 664 /var/run/utmp
+ chgrp utmp /var/run/utmp
+ fi
+
+ # Remove bootclean's flag files.
+ # Don't run bootclean again after this!
+ rm -f /tmp/.clean /run/.clean /run/lock/.clean
+ rm -f /tmp/.tmpfs /run/.tmpfs /run/lock/.tmpfs
+}
+
+case "$1" in
+ start|"")
+ do_start
+ ;;
+ restart|reload|force-reload)
+ echo "Error: argument '$1' not supported" >&2
+ exit 3
+ ;;
+ stop|status)
+ # No-op
+ ;;
+ *)
+ echo "Usage: bootmisc.sh [start|stop]" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/init b/t/recipes/checks/systemd/systemd-general/build-spec/debian/init
new file mode 100644
index 0000000..96f6ed2
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/init
@@ -0,0 +1,153 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: systemd-general
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: S 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/install b/t/recipes/checks/systemd/systemd-general/build-spec/debian/install
new file mode 100644
index 0000000..eb4680b
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/install
@@ -0,0 +1,3 @@
+debian/systemd-general.test.service etc/systemd/system/
+debian/systemd-general.test.service usr/lib/systemd/system/
+debian/test.conf etc/tmpfiles.d/
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/links b/t/recipes/checks/systemd/systemd-general/build-spec/debian/links
new file mode 100644
index 0000000..c022cff
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/links
@@ -0,0 +1 @@
+/dev/null /lib/systemd/system/masked.service
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/postrm b/t/recipes/checks/systemd/systemd-general/build-spec/debian/postrm
new file mode 100644
index 0000000..6e5813a
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/postrm
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "purge" ] && which systemctl >/dev/null 2>&1; then
+ systemctl || true
+fi
+
+#DEBHELPER#
+
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/rules b/t/recipes/checks/systemd/systemd-general/build-spec/debian/rules
new file mode 100644
index 0000000..68b3e30
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/rules
@@ -0,0 +1,30 @@
+#!/usr/bin/make -f
+
+ETC_DIR=debian/$(shell dh_listpackages)/etc/
+INITD_DIR=$(ETC_DIR)/init.d
+SYSD_DIR=$(ETC_DIR)/systemd/system
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ install -m 0755 -d $(INITD_DIR) $(SYSD_DIR)
+ mkfifo $(INITD_DIR)/fifo-pipe-as-init
+ mkfifo $(SYSD_DIR)/fifo-pipe-as-init.service
+ install -m 0755 debian/bootmisc.sh $(INITD_DIR)
+ install -m 0755 debian/systemd-general.masked.init $(INITD_DIR)/masked
+ touch $(INITD_DIR)/README
+
+override_dh_fixperms:
+ dh_fixperms
+ chmod -x $(INITD_DIR)/README
+
+override_dh_installinit:
+ dh_installinit
+ dh_installinit --name systemd-aliasd
+ dh_installinit --name sourced.sh
+
+override_dh_installsystemd:
+ dh_installsystemd
+ dh_installsystemd --name sourced
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.masked.init b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.masked.init
new file mode 100644
index 0000000..b884a82
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.masked.init
@@ -0,0 +1,22 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+ set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides: masked
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d. This example start a
+# single forking daemon capable of writing a pid
+# file. To get other behaviors, implement
+# do_start(), do_stop() or other functions to
+# override the defaults in /lib/init/init-d-script.
+### END INIT INFO
+
+DESC="Description of the service"
+DAEMON=/usr/sbin/daemonexecutablename
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.service b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.service
new file mode 100644
index 0000000..f3775af
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.service
@@ -0,0 +1,9 @@
+[Unit]
+After=network.target
+Documentation=man:sourced(1)
+
+[Service]
+ExecStart=/usr/bin/test
+
+[Install]
+WantedBy=sleep.target
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.sh.init b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.sh.init
new file mode 100644
index 0000000..6657c99
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.sourced.sh.init
@@ -0,0 +1,22 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+ set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides: sourced
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d. This example start a
+# single forking daemon capable of writing a pid
+# file. To get other behaviors, implement
+# do_start(), do_stop() or other functions to
+# override the defaults in /lib/init/init-d-script.
+### END INIT INFO
+
+DESC="Description of the service"
+DAEMON=/usr/sbin/daemonexecutablename
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init
new file mode 100644
index 0000000..95e791c
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.systemd-aliasd.init
@@ -0,0 +1,152 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: systemd-aliasd
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example Lintian initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Description of the service"
+NAME=daemonexecutablename
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--options args"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+. /lib/lsb/init-functionsh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.test.service b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.test.service
new file mode 100644
index 0000000..a456a3d
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/systemd-general.test.service
@@ -0,0 +1,13 @@
+[Unit]
+After=network.target \
+syslog.target
+BindTo=foo
+
+[Service]
+ExecStartPre = /bin/true
+ExecStart=/usr/bin/test
+
+[Install]
+WantedBy=multi-user.target unusual.target
+Alias=systemd-aliasd.service
+Alias=anothertest
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/debian/test.conf b/t/recipes/checks/systemd/systemd-general/build-spec/debian/test.conf
new file mode 100644
index 0000000..b0c4604
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/debian/test.conf
@@ -0,0 +1,2 @@
+# See tmpfiles.d(5) for details
+d /var/run/bacula 2775 bacula bacula -
diff --git a/t/recipes/checks/systemd/systemd-general/build-spec/fill-values b/t/recipes/checks/systemd/systemd-general/build-spec/fill-values
new file mode 100644
index 0000000..eee4826
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-general
+Description: General systemd tests
diff --git a/t/recipes/checks/systemd/systemd-general/eval/desc b/t/recipes/checks/systemd/systemd-general/eval/desc
new file mode 100644
index 0000000..ea97618
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: systemd-general
+Test-Against:
+ omitted-systemd-service-for-init.d-script
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-general/eval/hints b/t/recipes/checks/systemd/systemd-general/eval/hints
new file mode 100644
index 0000000..fee5413
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-general/eval/hints
@@ -0,0 +1,19 @@
+systemd-general (binary): systemd-service-in-odd-location [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-in-odd-location [etc/systemd/system/fifo-pipe-as-init.service]
+systemd-general (binary): systemd-service-file-refers-to-unusual-wantedby-target unusual.target [usr/lib/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-refers-to-unusual-wantedby-target unusual.target [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-refers-to-obsolete-target syslog.target [usr/lib/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-refers-to-obsolete-target syslog.target [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-refers-to-obsolete-bindto [usr/lib/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-refers-to-obsolete-bindto [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-missing-hardening-features [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-missing-documentation-key [usr/lib/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-file-missing-documentation-key [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-alias-without-extension [usr/lib/systemd/system/systemd-general.test.service]
+systemd-general (binary): systemd-service-alias-without-extension [etc/systemd/system/systemd-general.test.service]
+systemd-general (binary): service-file-is-not-a-file [etc/systemd/system/fifo-pipe-as-init.service]
+systemd-general (binary): missing-systemd-service-for-init.d-rcS-script systemd-general [etc/init.d/systemd-general]
+systemd-general (binary): init.d-script-does-not-source-init-functions [etc/init.d/systemd-general]
+systemd-general (binary): init.d-script-does-not-source-init-functions [etc/init.d/bootmisc.sh]
+systemd-general (binary): init-script-is-not-a-file [etc/init.d/fifo-pipe-as-init]
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/control.in b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/control.in
new file mode 100644
index 0000000..1b8c645
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/control.in
@@ -0,0 +1,55 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-with
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] - with .service file
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a .service file for its initscript.
+
+Package: [% $source %]-template
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] - with @.service template file
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package has a @.service template file for its initscript.
+
+Package: [% $source %]-without
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] - without .service file
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package does not have a .service file for its initscript.
+
+Package: [% $source %]-without-rcs
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends}, lsb-base (>= 3.0-6)
+Description: [% $description %] - rcS script without .service file
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ This package does not have a .service file for its rcS initscript.
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template.init b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template.init
new file mode 100644
index 0000000..022b722
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: systemd-missing-services-template
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template@.service b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template@.service
new file mode 100644
index 0000000..01dc11d
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-template@.service
@@ -0,0 +1,11 @@
+[Unit]
+After=network.target
+Description=Test %I
+Documentation=https://example.com/%i/
+
+[Service]
+ExecStart=/bin/test %i
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.init b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.init
new file mode 100644
index 0000000..cfecc36
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: systemd-missing-services-with
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.service b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.service
new file mode 100644
index 0000000..7972526
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-with.service
@@ -0,0 +1,9 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without-rcs.init b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without-rcs.init
new file mode 100644
index 0000000..2f93d19
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without-rcs.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: systemd-missing-services-without-rcs
+# Required-Start:
+# Required-Stop:
+# Default-Start: S 2 3 4 5
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without.init b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without.init
new file mode 100644
index 0000000..1425d83
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/debian/systemd-missing-services-without.init
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+. /lib/lsb/init-functions
+
+### BEGIN INIT INFO
+# Provides: systemd-missing-services-without
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Do nothing at all
+# Description: The short description pretty much covers it.
+### END INIT INFO
+
+case "$1" in
+ start|stop|force-reload|restart|status|*)
+ echo hello world!
+ ;;
+esac
diff --git a/t/recipes/checks/systemd/systemd-missing-services/build-spec/fill-values b/t/recipes/checks/systemd/systemd-missing-services/build-spec/fill-values
new file mode 100644
index 0000000..879420a
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-missing-services
+Description: Check for missing service files
diff --git a/t/recipes/checks/systemd/systemd-missing-services/eval/desc b/t/recipes/checks/systemd/systemd-missing-services/eval/desc
new file mode 100644
index 0000000..425a261
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/eval/desc
@@ -0,0 +1,4 @@
+Testname: systemd-missing-services
+Test-Against:
+ omitted-systemd-service-for-init.d-script
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-missing-services/eval/hints b/t/recipes/checks/systemd/systemd-missing-services/eval/hints
new file mode 100644
index 0000000..f32bba0
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-missing-services/eval/hints
@@ -0,0 +1,4 @@
+systemd-missing-services-without-rcs (binary): missing-systemd-service-for-init.d-rcS-script systemd-missing-services-without-rcs [etc/init.d/systemd-missing-services-without-rcs]
+systemd-missing-services-without (binary): missing-systemd-service-for-init.d-script systemd-missing-services-without [etc/init.d/systemd-missing-services-without]
+systemd-missing-services-with (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-missing-services-with.service]
+systemd-missing-services-template (binary): invalid-systemd-documentation https://example.com/%i/ [usr/lib/systemd/system/systemd-missing-services-template@.service]
diff --git a/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/control.in b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/control.in
new file mode 100644
index 0000000..d42ecbb
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: misc
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-good
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (good)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Good case.
+
+Package: [% $source %]-bad
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (bad)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Bad case.
diff --git a/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-bad.service b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-bad.service
new file mode 100644
index 0000000..9ee687e
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-bad.service
@@ -0,0 +1,10 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/run/$NAME.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-good.service b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-good.service
new file mode 100644
index 0000000..b1eda4a
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/debian/systemd-service-file-refers-to-var-run-good.service
@@ -0,0 +1,10 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/var/run/$NAME.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/fill-values b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/fill-values
new file mode 100644
index 0000000..fb822d7
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-service-file-refers-to-var-run
+Description: Check for PIDFile=/var/run/foo
diff --git a/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/desc b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/desc
new file mode 100644
index 0000000..07b2247
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/desc
@@ -0,0 +1,2 @@
+Testname: systemd-service-file-refers-to-var-run
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/hints b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/hints
new file mode 100644
index 0000000..40b11fc
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-refers-to-var-run/eval/hints
@@ -0,0 +1,3 @@
+systemd-service-file-refers-to-var-run-good (binary): systemd-service-file-refers-to-var-run PIDFile /var/run/$NAME.pid [usr/lib/systemd/system/systemd-service-file-refers-to-var-run-good.service]
+systemd-service-file-refers-to-var-run-good (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-refers-to-var-run-good.service]
+systemd-service-file-refers-to-var-run-bad (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-refers-to-var-run-bad.service]
diff --git a/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/control.in b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/control.in
new file mode 100644
index 0000000..d42ecbb
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: misc
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-good
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (good)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Good case.
+
+Package: [% $source %]-bad
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (bad)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Bad case.
diff --git a/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-bad.service b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-bad.service
new file mode 100644
index 0000000..e9b1171
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-bad.service
@@ -0,0 +1,12 @@
+[Unit]
+After=network.target
+Before=shutdown.target
+Conflicts=shutdown.target
+DefaultDependencies=no
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-good.service b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-good.service
new file mode 100644
index 0000000..b069d2b
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/debian/systemd-service-file-shutdown-problems-good.service
@@ -0,0 +1,11 @@
+[Unit]
+After=network.target
+Conflicts=shutdown.target
+DefaultDependencies=no
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/fill-values b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/fill-values
new file mode 100644
index 0000000..6c4865d
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-service-file-shutdown-problems
+Description: Check for DefaultDependencies=no and Conflicts=shutdown.target but not Before=shutdown.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/desc b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/desc
new file mode 100644
index 0000000..c89c800
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/desc
@@ -0,0 +1,2 @@
+Testname: systemd-service-file-shutdown-problems
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/hints b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/hints
new file mode 100644
index 0000000..ba01ae3
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-shutdown-problems/eval/hints
@@ -0,0 +1,3 @@
+systemd-service-file-shutdown-problems-good (binary): systemd-service-file-shutdown-problems [usr/lib/systemd/system/systemd-service-file-shutdown-problems-good.service]
+systemd-service-file-shutdown-problems-good (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-shutdown-problems-good.service]
+systemd-service-file-shutdown-problems-bad (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-shutdown-problems-bad.service]
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/control.in b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/control.in
new file mode 100644
index 0000000..d42ecbb
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: misc
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-good
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (good)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Good case.
+
+Package: [% $source %]-bad
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (bad)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Bad case.
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-bad.service b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-bad.service
new file mode 100644
index 0000000..748a16a
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-bad.service
@@ -0,0 +1,12 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/run/$NAME.pid
+StandardOutput=syslog
+StandardError=syslog-console
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-good.service b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-good.service
new file mode 100644
index 0000000..30adb06
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/debian/systemd-service-file-uses-deprecated-syslog-facility-good.service
@@ -0,0 +1,12 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/run/$NAME.pid
+StandardOutput=null
+StandardError=null
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/fill-values b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/fill-values
new file mode 100644
index 0000000..5e50e83
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-service-file-uses-deprecated-syslog-facility
+Description: Check for StandardOutput=syslog etc.
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/desc b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/desc
new file mode 100644
index 0000000..dc5a226
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/desc
@@ -0,0 +1,2 @@
+Testname: systemd-service-file-uses-deprecated-syslog-facility
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/hints b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/hints
new file mode 100644
index 0000000..41b3248
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-deprecated-syslog-facility/eval/hints
@@ -0,0 +1,4 @@
+systemd-service-file-uses-deprecated-syslog-facility-good (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-uses-deprecated-syslog-facility-good.service]
+systemd-service-file-uses-deprecated-syslog-facility-bad (binary): systemd-service-file-uses-deprecated-syslog-facility StandardOutput=syslog [usr/lib/systemd/system/systemd-service-file-uses-deprecated-syslog-facility-bad.service]
+systemd-service-file-uses-deprecated-syslog-facility-bad (binary): systemd-service-file-uses-deprecated-syslog-facility StandardError=syslog-console [usr/lib/systemd/system/systemd-service-file-uses-deprecated-syslog-facility-bad.service]
+systemd-service-file-uses-deprecated-syslog-facility-bad (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-uses-deprecated-syslog-facility-bad.service]
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/control.in b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/control.in
new file mode 100644
index 0000000..d42ecbb
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/control.in
@@ -0,0 +1,27 @@
+Source: [% $source %]
+Priority: optional
+Section: misc
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]-good
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (good)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Good case.
+
+Package: [% $source %]-bad
+Architecture: all
+Depends: ${misc:Depends}
+Description: [% $description %] (bad)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ Bad case.
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-bad.service b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-bad.service
new file mode 100644
index 0000000..96ada25
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-bad.service
@@ -0,0 +1,12 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/run/$NAME.pid
+User=nobody
+Group=nogroup
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-good.service b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-good.service
new file mode 100644
index 0000000..461e14b
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/debian/systemd-service-file-uses-nobody-or-nogroup-good.service
@@ -0,0 +1,12 @@
+[Unit]
+After=network.target
+Documentation=https://example.com/
+
+[Service]
+ExecStart=/bin/test
+PIDFile=/run/$NAME.pid
+User=gooduser
+Group=goodgroup
+
+[Install]
+WantedBy=multi-user.target
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/fill-values b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/fill-values
new file mode 100644
index 0000000..1b65cfa
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: systemd-service-file-uses-nobody-or-nogroup
+Description: Check for User=nobody or Group=nogroup
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/desc b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/desc
new file mode 100644
index 0000000..3e687ed
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/desc
@@ -0,0 +1,2 @@
+Testname: systemd-service-file-uses-nobody-or-nogroup
+Check: systemd
diff --git a/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/hints b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/hints
new file mode 100644
index 0000000..f569899
--- /dev/null
+++ b/t/recipes/checks/systemd/systemd-service-file-uses-nobody-or-nogroup/eval/hints
@@ -0,0 +1,4 @@
+systemd-service-file-uses-nobody-or-nogroup-good (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-uses-nobody-or-nogroup-good.service]
+systemd-service-file-uses-nobody-or-nogroup-bad (binary): systemd-service-file-uses-nobody-or-nogroup User=nobody [usr/lib/systemd/system/systemd-service-file-uses-nobody-or-nogroup-bad.service]
+systemd-service-file-uses-nobody-or-nogroup-bad (binary): systemd-service-file-uses-nobody-or-nogroup Group=nogroup [usr/lib/systemd/system/systemd-service-file-uses-nobody-or-nogroup-bad.service]
+systemd-service-file-uses-nobody-or-nogroup-bad (binary): systemd-service-file-missing-hardening-features [usr/lib/systemd/system/systemd-service-file-uses-nobody-or-nogroup-bad.service]
diff --git a/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/install b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/install
new file mode 100644
index 0000000..dacd7da
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/install
@@ -0,0 +1 @@
+debian/test.conf etc/tmpfiles.d/
diff --git a/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/test.conf b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/test.conf
new file mode 100644
index 0000000..81f27df
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/debian/test.conf
@@ -0,0 +1,2 @@
+# See tmpfiles.d(5) for details
+d /run/bacula 2775 bacula bacula -
diff --git a/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/fill-values b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/fill-values
new file mode 100644
index 0000000..c35d14d
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: declared-in-etc
+Description: Systemd tmpfiles declared in /etc
diff --git a/t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/desc b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/desc
new file mode 100644
index 0000000..a64e115
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/desc
@@ -0,0 +1,2 @@
+Testname: declared-in-etc
+Check: systemd/tmpfiles
diff --git a/t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/hints b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/hints
new file mode 100644
index 0000000..8f55abd
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/declared-in-etc/eval/hints
@@ -0,0 +1 @@
+declared-in-etc (binary): misplaced-systemd-tmpfiles [etc/tmpfiles.d/test.conf]
diff --git a/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/install b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/install
new file mode 100644
index 0000000..6d21d99
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/install
@@ -0,0 +1 @@
+debian/test.conf usr/lib/tmpfiles.d/
diff --git a/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/test.conf b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/test.conf
new file mode 100644
index 0000000..b0c4604
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/debian/test.conf
@@ -0,0 +1,2 @@
+# See tmpfiles.d(5) for details
+d /var/run/bacula 2775 bacula bacula -
diff --git a/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/fill-values b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/fill-values
new file mode 100644
index 0000000..6d66752
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: tmpfile-in-var-run
+Description: Systemd places a teporary file in /var/run
+See-Also:
+ Bug#984678
diff --git a/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/desc b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/desc
new file mode 100644
index 0000000..9126436
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/desc
@@ -0,0 +1,2 @@
+Testname: tmpfile-in-var-run
+Check: systemd/tmpfiles
diff --git a/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/hints b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/hints
new file mode 100644
index 0000000..c5889a2
--- /dev/null
+++ b/t/recipes/checks/systemd/tmpfiles/tmpfile-in-var-run/eval/hints
@@ -0,0 +1 @@
+tmpfile-in-var-run (binary): systemd-tmpfile-in-var-run [usr/lib/tmpfiles.d/test.conf]
diff --git a/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/debian/install b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/debian/install
new file mode 100644
index 0000000..90c4a72
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/debian/install
@@ -0,0 +1 @@
+nodejs/* /usr/share/javascript/
diff --git a/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/fill-values b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/fill-values
new file mode 100644
index 0000000..16aa812
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: old-buffer
+Description: Uses old NodeJS buffer
+Author: Javascript Team <pkg-javascript-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/orig/nodejs/buffer.js b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/orig/nodejs/buffer.js
new file mode 100644
index 0000000..4b16188
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/build-spec/orig/nodejs/buffer.js
@@ -0,0 +1,3 @@
+NODEJS FILE WITH OLD BUFFER USAGE
+
+new Buffer()
diff --git a/t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/desc b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/desc
new file mode 100644
index 0000000..a324147
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/desc
@@ -0,0 +1,2 @@
+Testname: old-buffer
+Check: team/pkg-js/deprecated
diff --git a/t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/hints b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/hints
new file mode 100644
index 0000000..f568f12
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/deprecated/old-buffer/eval/hints
@@ -0,0 +1 @@
+old-buffer (binary): team/pkg-js/deprecated/nodejs-bad-buffer-usage [usr/share/javascript/buffer.js]
diff --git a/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/debian/control.in b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/debian/control.in
new file mode 100644
index 0000000..d9609cd
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Testsuite: autopkgtest-another
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/fill-values b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/fill-values
new file mode 100644
index 0000000..8818559
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: foreign-testsuite
+Description: Testsuite field with a foreign, non-team test suite
+Author: Javascript Team <pkg-javascript-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/pre-build b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/pre-build
new file mode 100755
index 0000000..1829c91
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/build-spec/pre-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+
+rm -rf "$DIR/debian/tests"
diff --git a/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/desc b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/desc
new file mode 100644
index 0000000..73d4abd
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/desc
@@ -0,0 +1,2 @@
+Testname: foreign-testsuite
+Check: team/pkg-js/testsuite
diff --git a/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/hints b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/hints
new file mode 100644
index 0000000..e70001d
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/foreign-testsuite/eval/hints
@@ -0,0 +1 @@
+foreign-testsuite (source): team/pkg-js/testsuite/no-team-tests
diff --git a/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/fill-values b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/fill-values
new file mode 100644
index 0000000..baf96a0
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: no-testsuite
+Description: Missing Testsuite field
+Author: Javascript Team <pkg-javascript-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/pre-build b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/pre-build
new file mode 100755
index 0000000..1829c91
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/build-spec/pre-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+
+rm -rf "$DIR/debian/tests"
diff --git a/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/desc b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/desc
new file mode 100644
index 0000000..64cff82
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-testsuite
+Check: team/pkg-js/testsuite
diff --git a/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/hints b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/hints
new file mode 100644
index 0000000..e9c9456
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/testsuite/no-testsuite/eval/hints
@@ -0,0 +1 @@
+no-testsuite (source): team/pkg-js/testsuite/no-testsuite-header
diff --git a/t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/debian/control.in b/t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/debian/control.in
new file mode 100644
index 0000000..5691aa8
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Vcs-Git: https://github.com/lechner/some-perl-package
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/fill-values b/t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/fill-values
new file mode 100644
index 0000000..e935b0f
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/personal-github/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: personal-github
+Description: Personal github as VCS
+Author: Javascript Team <pkg-javascript-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-js/vcs/personal-github/eval/desc b/t/recipes/checks/team/pkg-js/vcs/personal-github/eval/desc
new file mode 100644
index 0000000..c4c9dfd
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/personal-github/eval/desc
@@ -0,0 +1,2 @@
+Testname: personal-github
+Check: team/pkg-js/vcs
diff --git a/t/recipes/checks/team/pkg-js/vcs/personal-github/eval/hints b/t/recipes/checks/team/pkg-js/vcs/personal-github/eval/hints
new file mode 100644
index 0000000..6b5b6f0
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/personal-github/eval/hints
@@ -0,0 +1 @@
+personal-github (source): team/pkg-js/vcs/no-team-url Vcs-Git https://github.com/lechner/some-perl-package
diff --git a/t/recipes/checks/team/pkg-js/vcs/svn/build-spec/debian/control.in b/t/recipes/checks/team/pkg-js/vcs/svn/build-spec/debian/control.in
new file mode 100644
index 0000000..08f0e40
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/svn/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Vcs-Svn: https://svn.debian.org/svn/some-perl-package
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-js/vcs/svn/build-spec/fill-values b/t/recipes/checks/team/pkg-js/vcs/svn/build-spec/fill-values
new file mode 100644
index 0000000..d942986
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/svn/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: svn
+Description: Declares SVN as VCS.
+Author: Javascript Team <pkg-javascript-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-js/vcs/svn/eval/desc b/t/recipes/checks/team/pkg-js/vcs/svn/eval/desc
new file mode 100644
index 0000000..72a13e0
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/svn/eval/desc
@@ -0,0 +1,2 @@
+Testname: svn
+Check: team/pkg-js/vcs
diff --git a/t/recipes/checks/team/pkg-js/vcs/svn/eval/hints b/t/recipes/checks/team/pkg-js/vcs/svn/eval/hints
new file mode 100644
index 0000000..726fb25
--- /dev/null
+++ b/t/recipes/checks/team/pkg-js/vcs/svn/eval/hints
@@ -0,0 +1,2 @@
+svn (source): team/pkg-js/vcs/no-team-url Vcs-Svn https://svn.debian.org/svn/some-perl-package
+svn (source): team/pkg-js/vcs/no-git Vcs-Svn
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/debian/control.in b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/debian/control.in
new file mode 100644
index 0000000..d9609cd
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Testsuite: autopkgtest-another
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/fill-values b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/fill-values
new file mode 100644
index 0000000..3573717
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: foreign-testsuite
+Description: Testsuite field with a foreign, non-team test suite
+Author: Perl Team <pkg-perl-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/pre-build b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/pre-build
new file mode 100755
index 0000000..1829c91
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/build-spec/pre-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+
+rm -rf "$DIR/debian/tests"
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/desc b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/desc
new file mode 100644
index 0000000..3e86a28
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/desc
@@ -0,0 +1,2 @@
+Testname: foreign-testsuite
+Check: team/pkg-perl/testsuite
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/hints b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/hints
new file mode 100644
index 0000000..b021bb5
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/foreign-testsuite/eval/hints
@@ -0,0 +1 @@
+foreign-testsuite (source): team/pkg-perl/testsuite/no-team-tests
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/fill-values b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/fill-values
new file mode 100644
index 0000000..cda0f47
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: no-testsuite
+Description: Missing Testsuite field
+Author: Perl Team <pkg-perl-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/pre-build b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/pre-build
new file mode 100755
index 0000000..1829c91
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/build-spec/pre-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+
+rm -rf "$DIR/debian/tests"
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/desc b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/desc
new file mode 100644
index 0000000..59be4a6
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-testsuite
+Check: team/pkg-perl/testsuite
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/hints b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/hints
new file mode 100644
index 0000000..3a7b720
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-testsuite/eval/hints
@@ -0,0 +1 @@
+no-testsuite (source): team/pkg-perl/testsuite/no-testsuite-header
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/debian/control.in b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/debian/control.in
new file mode 100644
index 0000000..8d1894d
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Testsuite: autopkgtest-pkg-perl
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/fill-values b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/fill-values
new file mode 100644
index 0000000..23d0aae
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: no-use-name
+Description: Testsuite autopkgtest-pkg-perl but use-name not available
+Author: Perl Team <pkg-perl-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/pre-build b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/pre-build
new file mode 100755
index 0000000..1829c91
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/build-spec/pre-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+
+rm -rf "$DIR/debian/tests"
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/desc b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/desc
new file mode 100644
index 0000000..3947a05
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/desc
@@ -0,0 +1,2 @@
+Testname: no-use-name
+Check: team/pkg-perl/testsuite
diff --git a/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/hints b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/hints
new file mode 100644
index 0000000..3ca7aec
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/testsuite/no-use-name/eval/hints
@@ -0,0 +1 @@
+no-use-name (source): team/pkg-perl/testsuite/autopkgtest-needs-use-name
diff --git a/t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/debian/control.in b/t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/debian/control.in
new file mode 100644
index 0000000..5691aa8
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Vcs-Git: https://github.com/lechner/some-perl-package
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/fill-values b/t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/fill-values
new file mode 100644
index 0000000..ced901f
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/personal-github/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: personal-github
+Description: Personal github as VCS
+Author: Perl Team <pkg-perl-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/desc b/t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/desc
new file mode 100644
index 0000000..3b7370a
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/desc
@@ -0,0 +1,2 @@
+Testname: personal-github
+Check: team/pkg-perl/vcs
diff --git a/t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/hints b/t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/hints
new file mode 100644
index 0000000..07509df
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/personal-github/eval/hints
@@ -0,0 +1 @@
+personal-github (source): team/pkg-perl/vcs/no-team-url Vcs-Git https://github.com/lechner/some-perl-package
diff --git a/t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/debian/control.in b/t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/debian/control.in
new file mode 100644
index 0000000..08f0e40
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Vcs-Svn: https://svn.debian.org/svn/some-perl-package
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/fill-values b/t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/fill-values
new file mode 100644
index 0000000..5d146d8
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/svn/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: svn
+Description: Declares SVN as VCS.
+Author: Perl Team <pkg-perl-maintainers@lists.alioth.debian.org>
diff --git a/t/recipes/checks/team/pkg-perl/vcs/svn/eval/desc b/t/recipes/checks/team/pkg-perl/vcs/svn/eval/desc
new file mode 100644
index 0000000..47ee2b2
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/svn/eval/desc
@@ -0,0 +1,2 @@
+Testname: svn
+Check: team/pkg-perl/vcs
diff --git a/t/recipes/checks/team/pkg-perl/vcs/svn/eval/hints b/t/recipes/checks/team/pkg-perl/vcs/svn/eval/hints
new file mode 100644
index 0000000..5524bf0
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/vcs/svn/eval/hints
@@ -0,0 +1,2 @@
+svn (source): team/pkg-perl/vcs/no-team-url Vcs-Svn https://svn.debian.org/svn/some-perl-package
+svn (source): team/pkg-perl/vcs/no-git Vcs-Svn
diff --git a/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/control.in b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/control.in
new file mode 100644
index 0000000..515ef5e
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+# bump the value here and in fill-values for building with newer releases
+Depends: ${shlibs:Depends}, ${misc:Depends}, perlapi-5.30.0
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/install b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/install
new file mode 100644
index 0000000..8331ab3
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/debian/install
@@ -0,0 +1 @@
+perl5/* /usr/lib/perl5
diff --git a/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/fill-values b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/fill-values
new file mode 100644
index 0000000..9744ae1
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: ships-legacy-vendorarch
+Description: Modern module ships legacy vendor-arch
+Package-Architecture: any
+# bump value here and the Depends in d/control.in to build on newer systems
+Extra-Build-Depends: perlapi-5.30.0
diff --git a/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/orig/perl5/Legacy/Module.pm b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/orig/perl5/Legacy/Module.pm
new file mode 100644
index 0000000..84182cf
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/build-spec/orig/perl5/Legacy/Module.pm
@@ -0,0 +1 @@
+A LEGACY XS MODULE
diff --git a/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/desc b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/desc
new file mode 100644
index 0000000..41287e1
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/desc
@@ -0,0 +1,2 @@
+Testname: ships-legacy-vendorarch
+Check: team/pkg-perl/xs-abi
diff --git a/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/hints b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/hints
new file mode 100644
index 0000000..f89a997
--- /dev/null
+++ b/t/recipes/checks/team/pkg-perl/xs-abi/ships-legacy-vendorarch/eval/hints
@@ -0,0 +1 @@
+ships-legacy-vendorarch (binary): team/pkg-perl/xs-abi/legacy-vendorarch-directory usr/lib/perl5/Legacy/Module.pm
diff --git a/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/control.in b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/control.in
new file mode 100644
index 0000000..3058e5a
--- /dev/null
+++ b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/control.in
@@ -0,0 +1,118 @@
+Source: [% $source %]
+Priority: optional
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %],
+ fiddle [amd64 powerpc mips mipsel hppa s390],
+ faddle
+ (>>
+ 2) [
+ sparc i386 amd64
+ ]
+Build-Depends-Indep: perl (> 5.8)
+Rules-Requires-Root: no
+XS-Vcs-Svn: https://svn.example.com/[% $source %]/trunk
+#Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git
+#Vcs-Browser: http://git.debian.org/?p=collab-maint/<pkg>.git;a=summary
+
+Package: [% $source %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Build-Conflicts: foo
+Architecture: all
+Pre-depends: ${misc:Pre-depends}, multiarch-support
+Depends: [% $source %], foo, baz, ${shlibs:Depends} ${some:Depends}, ${misc:Depends}
+Recommends: foo, bar, no-match${lintian:Foo}, match${lintian:Match}, no-match${lintian:Bar}-foo
+Suggests: bar | baz, no-match${lintian:Bar}, match${lintian:Match}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-1
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: libsqlite3-0 (< 3.6.12)
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-2
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (two)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-3
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>= 1),
+ baz (<< 2),
+ fizz (= 2.0), gcc-${pv:gcc} ${reqv:gcc}
+Description: [% $description %] (three)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-4
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, foo |
+ bar (>= 1), baz
+Description: [% $description %] (four)
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-5
+Section: [% $section %]
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbgsym
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: dbg-sym
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-dbg
+Section: debug
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Description: debug
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
+Package: [% $source %]-udeb
+Section: debian-installer
+Package-Type: udeb
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %] (udeb)
+ udeb tests.
+ .
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/rules b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/rules
new file mode 100644
index 0000000..f5db4bb
--- /dev/null
+++ b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/debian/rules
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_gencontrol:
+ echo 'pv:gcc=4.3' >> debian/substvars
+ echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars
+ dh_gencontrol
diff --git a/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/fill-values b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/fill-values
new file mode 100644
index 0000000..7338a95
--- /dev/null
+++ b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: control-file-general
+Description: Various problems with debian/control
diff --git a/t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/desc b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/desc
new file mode 100644
index 0000000..ce82f94
--- /dev/null
+++ b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/desc
@@ -0,0 +1,11 @@
+Testname: control-file-general
+Check: template/dh-make/control/vcs
+See-Also:
+ Debian Bug#30020,
+ Debian Bug#409099,
+ Debian Bug#516706,
+ Debian Bug#533202,
+ Debian Bug#557971,
+ Debian Bug#573399,
+ Debian Bug#580494,
+ Debian Bug#657110
diff --git a/t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/hints b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/hints
new file mode 100644
index 0000000..d17baa0
--- /dev/null
+++ b/t/recipes/checks/template/dh-make/control/vcs/control-file-general/eval/hints
@@ -0,0 +1 @@
+control-file-general (source): control-file-contains-dh-make-vcs-comment #Vcs-Git: git://git.debian.org/collab-maint/<pkg>.git [debian/control:15]
diff --git a/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/control b/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/control
new file mode 100644
index 0000000..25b6eb5
--- /dev/null
+++ b/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/control
@@ -0,0 +1,7 @@
+Tests: test-1
+Restrictions:
+ superficial
+
+Tests: test-2
+Restrictions:
+ superficial
diff --git a/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-1 b/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-1
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-2 b/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-2
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/all-superficial/build-spec/debian/tests/test-2
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/all-superficial/build-spec/fill-values b/t/recipes/checks/testsuite/all-superficial/build-spec/fill-values
new file mode 100644
index 0000000..026f42f
--- /dev/null
+++ b/t/recipes/checks/testsuite/all-superficial/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: all-superficial
+Description: All declared tests carry Restrictions: superficial
diff --git a/t/recipes/checks/testsuite/all-superficial/eval/desc b/t/recipes/checks/testsuite/all-superficial/eval/desc
new file mode 100644
index 0000000..cad04a2
--- /dev/null
+++ b/t/recipes/checks/testsuite/all-superficial/eval/desc
@@ -0,0 +1,2 @@
+Testname: all-superficial
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/all-superficial/eval/hints b/t/recipes/checks/testsuite/all-superficial/eval/hints
new file mode 100644
index 0000000..cf6c186
--- /dev/null
+++ b/t/recipes/checks/testsuite/all-superficial/eval/hints
@@ -0,0 +1 @@
+all-superficial (source): superficial-tests [debian/tests/control]
diff --git a/t/recipes/checks/testsuite/command-with-ampersand/build-spec/debian/tests/control b/t/recipes/checks/testsuite/command-with-ampersand/build-spec/debian/tests/control
new file mode 100644
index 0000000..883acb9
--- /dev/null
+++ b/t/recipes/checks/testsuite/command-with-ampersand/build-spec/debian/tests/control
@@ -0,0 +1,2 @@
+Test-Command: /bin/true &
+Depends: @
diff --git a/t/recipes/checks/testsuite/command-with-ampersand/build-spec/fill-values b/t/recipes/checks/testsuite/command-with-ampersand/build-spec/fill-values
new file mode 100644
index 0000000..cd31281
--- /dev/null
+++ b/t/recipes/checks/testsuite/command-with-ampersand/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: command-with-ampersand
+Description: Ampersand at the end of an autopkgtest command
diff --git a/t/recipes/checks/testsuite/command-with-ampersand/eval/desc b/t/recipes/checks/testsuite/command-with-ampersand/eval/desc
new file mode 100644
index 0000000..45c62f3
--- /dev/null
+++ b/t/recipes/checks/testsuite/command-with-ampersand/eval/desc
@@ -0,0 +1,4 @@
+Testname: command-with-ampersand
+Check: testsuite
+See-Also:
+ Bug#988591
diff --git a/t/recipes/checks/testsuite/command-with-ampersand/eval/hints b/t/recipes/checks/testsuite/command-with-ampersand/eval/hints
new file mode 100644
index 0000000..9396019
--- /dev/null
+++ b/t/recipes/checks/testsuite/command-with-ampersand/eval/hints
@@ -0,0 +1 @@
+command-with-ampersand (source): backgrounded-test-command /bin/true & [debian/tests/control:1]
diff --git a/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/control.in b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/control.in
new file mode 100644
index 0000000..6d6a7c3
--- /dev/null
+++ b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+X-Python3-Version: >= 3.4
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package probably has no meaningful contents.
diff --git a/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/control b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/control
new file mode 100644
index 0000000..d6ccd9d
--- /dev/null
+++ b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: script
+Depends: python3-all
diff --git a/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/script b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/script
new file mode 100644
index 0000000..4a0ba92
--- /dev/null
+++ b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/debian/tests/script
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Good
+echo $(py3versions -r)
+echo $(py3versions -vr)
+echo $(py3versions --requested)
+echo $(py3versions --verbose --requested)
+
+# Bad
+echo $(py3versions -s)
+echo $(py3versions -vs)
+echo $(py3versions --supported)
+echo $(py3versions --verbose --supported)
+
diff --git a/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/fill-values b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/fill-values
new file mode 100644
index 0000000..61308e5
--- /dev/null
+++ b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: does-not-query-declared-python-versions
+Description: Tests for py3versions -s with X-Python3-Version
diff --git a/t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/desc b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/desc
new file mode 100644
index 0000000..0b80638
--- /dev/null
+++ b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/desc
@@ -0,0 +1,2 @@
+Testname: does-not-query-declared-python-versions
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/hints b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/hints
new file mode 100644
index 0000000..11c3a42
--- /dev/null
+++ b/t/recipes/checks/testsuite/does-not-query-declared-python-versions/eval/hints
@@ -0,0 +1 @@
+does-not-query-declared-python-versions (source): drop-python-version-declaration [debian/control:9]
diff --git a/t/recipes/checks/testsuite/empty-tests-control/build-spec/debian/tests/control b/t/recipes/checks/testsuite/empty-tests-control/build-spec/debian/tests/control
new file mode 100644
index 0000000..cba0d7d
--- /dev/null
+++ b/t/recipes/checks/testsuite/empty-tests-control/build-spec/debian/tests/control
@@ -0,0 +1,2 @@
+#Test-Command: everything is commented out
+#Depends: @
diff --git a/t/recipes/checks/testsuite/empty-tests-control/build-spec/fill-values b/t/recipes/checks/testsuite/empty-tests-control/build-spec/fill-values
new file mode 100644
index 0000000..8f4edaa
--- /dev/null
+++ b/t/recipes/checks/testsuite/empty-tests-control/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: empty-tests-control
+Skeleton: upload-native
+Description: Test for empty d/tests/control after comments were removed
diff --git a/t/recipes/checks/testsuite/empty-tests-control/eval/desc b/t/recipes/checks/testsuite/empty-tests-control/eval/desc
new file mode 100644
index 0000000..e1740d8
--- /dev/null
+++ b/t/recipes/checks/testsuite/empty-tests-control/eval/desc
@@ -0,0 +1,2 @@
+Testname: empty-tests-control
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/empty-tests-control/eval/hints b/t/recipes/checks/testsuite/empty-tests-control/eval/hints
new file mode 100644
index 0000000..bc29114
--- /dev/null
+++ b/t/recipes/checks/testsuite/empty-tests-control/eval/hints
@@ -0,0 +1 @@
+empty-tests-control (source): empty-debian-tests-control [debian/tests/control]
diff --git a/t/recipes/checks/testsuite/missing-tests-control/build-spec/debian/control.in b/t/recipes/checks/testsuite/missing-tests-control/build-spec/debian/control.in
new file mode 100644
index 0000000..aecee76
--- /dev/null
+++ b/t/recipes/checks/testsuite/missing-tests-control/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+Testsuite: autopkgtest
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/testsuite/missing-tests-control/build-spec/fill-values b/t/recipes/checks/testsuite/missing-tests-control/build-spec/fill-values
new file mode 100644
index 0000000..0c0c3ec
--- /dev/null
+++ b/t/recipes/checks/testsuite/missing-tests-control/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: missing-tests-control
+Description: Declares Testsuite: autopkgtest but provides no d/tests/control
diff --git a/t/recipes/checks/testsuite/missing-tests-control/build-spec/pre-build b/t/recipes/checks/testsuite/missing-tests-control/build-spec/pre-build
new file mode 100755
index 0000000..b053083
--- /dev/null
+++ b/t/recipes/checks/testsuite/missing-tests-control/build-spec/pre-build
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+packagedir="$1"
+
+rm -rf "$packagedir"/debian/tests/control
diff --git a/t/recipes/checks/testsuite/missing-tests-control/eval/desc b/t/recipes/checks/testsuite/missing-tests-control/eval/desc
new file mode 100644
index 0000000..dbd057c
--- /dev/null
+++ b/t/recipes/checks/testsuite/missing-tests-control/eval/desc
@@ -0,0 +1,2 @@
+Testname: missing-tests-control
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/missing-tests-control/eval/hints b/t/recipes/checks/testsuite/missing-tests-control/eval/hints
new file mode 100644
index 0000000..e643cd4
--- /dev/null
+++ b/t/recipes/checks/testsuite/missing-tests-control/eval/hints
@@ -0,0 +1 @@
+missing-tests-control (source): missing-tests-control [debian/control:9]
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control
new file mode 100644
index 0000000..b3207d3
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control
@@ -0,0 +1,50 @@
+Tests: test-1
+Comment: Test-1 is öh so good.
+ Last paragraph misses a Tests field.
+
+Tests: fifo missing-test under_score
+
+Tests: test-in-subdir
+Restrictions:
+ rw-build-tree
+ breaks-testbed
+ needs-root
+ build-needed
+Depends: @
+Features:
+Tests-Directory: subdir
+
+Test-Command: /bin/true
+Depends: @
+
+Tests: test-2
+Test-Command: /bin/true
+Depends: @, missing a comma
+
+Test-Command: /bin/true
+Features: unknownfeature, test-name=false-positive
+Restrictions: unknownrestriction
+
+Test-Command: /bin/true
+Restrictions: breaks-testbed, rw-build-tree, needs-root, needs-recommends # comment
+Depends: @, @builddeps@
+
+Tests: test-1, test-2
+Depends: @
+
+Tests: asym, asym1, self, self1, broken, lfifo, working
+Depends: @
+
+# Depends line starts on a newline (#910210)
+Tests: test-1
+Depends:
+ @
+
+Test-Command: /bin/comment
+Restrictions: needs-root, # comment
+ # comment
+ breaks-testbed
+ # comment
+Depends: @,
+ @builddeps@
+ # comment
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control.autodep8 b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control.autodep8
new file mode 100644
index 0000000..19e2aee
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/control.autodep8
@@ -0,0 +1 @@
+Tests: test-1
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-1 b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-1
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-2 b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-2
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/test-2
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/under_score b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/under_score
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/debian/tests/under_score
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/fill-values b/t/recipes/checks/testsuite/national-encoding/build-spec/fill-values
new file mode 100644
index 0000000..b2d609d
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: national-encoding
+Description: Autopkgtest spec in national encoding
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/orig/subdir/test-in-subdir b/t/recipes/checks/testsuite/national-encoding/build-spec/orig/subdir/test-in-subdir
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/orig/subdir/test-in-subdir
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/national-encoding/build-spec/pre-build b/t/recipes/checks/testsuite/national-encoding/build-spec/pre-build
new file mode 100755
index 0000000..2e39c9c
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/build-spec/pre-build
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+mkfifo "$DIR/debian/tests/fifo"
+ln -s nonexistent "$DIR/debian/tests/broken"
+ln -s fifo "$DIR/debian/tests/lfifo"
+ln -s test-1 "$DIR/debian/tests/working"
diff --git a/t/recipes/checks/testsuite/national-encoding/eval/desc b/t/recipes/checks/testsuite/national-encoding/eval/desc
new file mode 100644
index 0000000..a027698
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/eval/desc
@@ -0,0 +1,4 @@
+Testname: national-encoding
+Test-Against:
+ unnecessary-testsuite-autopkgtest-field
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/national-encoding/eval/hints b/t/recipes/checks/testsuite/national-encoding/eval/hints
new file mode 100644
index 0000000..11deb68
--- /dev/null
+++ b/t/recipes/checks/testsuite/national-encoding/eval/hints
@@ -0,0 +1 @@
+national-encoding (source): debian-tests-control-autodep8-is-obsolete [debian/tests/control.autodep8]
diff --git a/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/control b/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/control
new file mode 100644
index 0000000..d6ccd9d
--- /dev/null
+++ b/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: script
+Depends: python3-all
diff --git a/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/script b/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/script
new file mode 100644
index 0000000..eb277a2
--- /dev/null
+++ b/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/debian/tests/script
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Good
+echo $(py3versions -s)
+echo $(py3versions -vs)
+echo $(py3versions --supported)
+echo $(py3versions --verbose --supported)
+
+# Bad
+echo $(py3versions -r)
+echo $(py3versions -vr)
+echo $(py3versions --requested)
+echo $(py3versions --verbose --requested)
diff --git a/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/fill-values b/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/fill-values
new file mode 100644
index 0000000..184e36c
--- /dev/null
+++ b/t/recipes/checks/testsuite/requests-undeclared-python-versions/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: requests-undeclared-python-versions
+Description: Tests for py3versions -r without X-Python3-Version
diff --git a/t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/desc b/t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/desc
new file mode 100644
index 0000000..7dea8e4
--- /dev/null
+++ b/t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/desc
@@ -0,0 +1,2 @@
+Testname: requests-undeclared-python-versions
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/hints b/t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/hints
new file mode 100644
index 0000000..9380e9c
--- /dev/null
+++ b/t/recipes/checks/testsuite/requests-undeclared-python-versions/eval/hints
@@ -0,0 +1,4 @@
+requests-undeclared-python-versions (source): declare-python-versions-for-test py3versions -vr [debian/tests/script:11]
+requests-undeclared-python-versions (source): declare-python-versions-for-test py3versions -r [debian/tests/script:10]
+requests-undeclared-python-versions (source): declare-python-versions-for-test py3versions --verbose --requested [debian/tests/script:13]
+requests-undeclared-python-versions (source): declare-python-versions-for-test py3versions --requested [debian/tests/script:12]
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/control b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/control
new file mode 100644
index 0000000..c831b63
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/control
@@ -0,0 +1,3 @@
+Tests: test-1
+Depends:
+ python3-all:any
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/test-1 b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..a7aaf84
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/debian/tests/test-1
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Good
+echo $(py3versions -s)
+echo $(py3versions -vs)
+echo $(py3versions -sv)
+echo $(py3versions -v)
+
+# Bad
+echo $(py3versions -i)
+echo $(py3versions -vi)
+echo $(py3versions --installed)
+echo $(py3versions --verbose --installed)
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/fill-values b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/fill-values
new file mode 100644
index 0000000..209cf4f
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: upload-native
+Testname: runtime-test-file-uses-installed-python-versions
+Description: Tests for py3versions -i
+Extra-Build-Depends: python3-all
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/desc b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/desc
new file mode 100644
index 0000000..cbb5a5a
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/desc
@@ -0,0 +1,2 @@
+Testname: runtime-test-file-uses-installed-python-versions
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/hints b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/hints
new file mode 100644
index 0000000..b493a59
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-installed-python-versions/eval/hints
@@ -0,0 +1,4 @@
+runtime-test-file-uses-installed-python-versions (source): runtime-test-file-uses-installed-python-versions py3versions -vi [debian/tests/test-1:11]
+runtime-test-file-uses-installed-python-versions (source): runtime-test-file-uses-installed-python-versions py3versions -i [debian/tests/test-1:10]
+runtime-test-file-uses-installed-python-versions (source): runtime-test-file-uses-installed-python-versions py3versions --verbose --installed [debian/tests/test-1:13]
+runtime-test-file-uses-installed-python-versions (source): runtime-test-file-uses-installed-python-versions py3versions --installed [debian/tests/test-1:12]
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/control b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/control
new file mode 100644
index 0000000..19e2aee
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/control
@@ -0,0 +1 @@
+Tests: test-1
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/test-1 b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..99b3e21
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/debian/tests/test-1
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Good
+echo $(py3versions -i)
+echo $(py3versions -is)
+echo $(py3versions -iv)
+echo $(py3versions -v)
+
+# Bad
+echo $(py3versions -s)
+echo $(py3versions -vs)
+echo $(py3versions --supported)
+echo $(py3versions --verbose --supported)
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/fill-values b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/fill-values
new file mode 100644
index 0000000..64d7889
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: runtime-test-file-uses-supported-python-versions-without-test-depends
+Description: Tests for py3versions -s without python3-all build-depends
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/desc b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/desc
new file mode 100644
index 0000000..efed163
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/desc
@@ -0,0 +1,2 @@
+Testname: runtime-test-file-uses-supported-python-versions-without-test-depends
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/hints b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/hints
new file mode 100644
index 0000000..68e6970
--- /dev/null
+++ b/t/recipes/checks/testsuite/runtime-test-file-uses-supported-python-versions-without-test-depends/eval/hints
@@ -0,0 +1,8 @@
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-supported-python-versions-without-test-depends py3versions -vs [debian/tests/test-1:11]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-supported-python-versions-without-test-depends py3versions -s [debian/tests/test-1:10]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-supported-python-versions-without-test-depends py3versions -is [debian/tests/test-1:5]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-supported-python-versions-without-test-depends py3versions --verbose --supported [debian/tests/test-1:13]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-supported-python-versions-without-test-depends py3versions --supported [debian/tests/test-1:12]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-installed-python-versions py3versions -iv [debian/tests/test-1:6]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-installed-python-versions py3versions -is [debian/tests/test-1:5]
+runtime-test-file-uses-supported-python-versions-without-test-depends (source): runtime-test-file-uses-installed-python-versions py3versions -i [debian/tests/test-1:4]
diff --git a/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/control b/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/control
new file mode 100644
index 0000000..bde2cb8
--- /dev/null
+++ b/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: some-python
+Depends: python3-all
diff --git a/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/some-python b/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/some-python
new file mode 100644
index 0000000..3ff10ea
--- /dev/null
+++ b/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/debian/tests/some-python
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -efu
+
+cp -a tests "$AUTOPKGTEST_TMP"
+cd "$AUTOPKGTEST_TMP"
+
+python3 -m unittest tests -v
diff --git a/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/fill-values b/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/fill-values
new file mode 100644
index 0000000..cca93ba
--- /dev/null
+++ b/t/recipes/checks/testsuite/should-query-all-python-versions/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-native
+Testname: should-query-all-python-versions
+Description: Autopkgtest depends on python3-all but does not invoke 'py3versions --supported'
diff --git a/t/recipes/checks/testsuite/should-query-all-python-versions/eval/desc b/t/recipes/checks/testsuite/should-query-all-python-versions/eval/desc
new file mode 100644
index 0000000..f979541
--- /dev/null
+++ b/t/recipes/checks/testsuite/should-query-all-python-versions/eval/desc
@@ -0,0 +1,2 @@
+Testname: should-query-all-python-versions
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/should-query-all-python-versions/eval/hints b/t/recipes/checks/testsuite/should-query-all-python-versions/eval/hints
new file mode 100644
index 0000000..73bfede
--- /dev/null
+++ b/t/recipes/checks/testsuite/should-query-all-python-versions/eval/hints
@@ -0,0 +1 @@
+should-query-all-python-versions (source): test-leaves-python-version-untested [debian/tests/some-python]
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control
new file mode 100644
index 0000000..aa243b3
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control
@@ -0,0 +1,53 @@
+Tests: test-1
+Comment: Test-1 is öh so good.
+ Last paragraph misses a Tests field.
+
+Tests: fifo missing-test under_score
+
+Tests: test-in-subdir
+Restrictions:
+ rw-build-tree
+ breaks-testbed
+ needs-root
+ build-needed
+Depends: @
+Features:
+Tests-Directory: subdir
+
+Test-Command: /bin/true
+Depends: @
+
+Tests: test-2
+Test-Command: /bin/true
+Depends: @, missing a comma
+
+Test-Command: /bin/true
+Features: unknownfeature, test-name=false-positive
+Restrictions: unknownrestriction
+
+Test-Command: /bin/true
+Restrictions: breaks-testbed, rw-build-tree, needs-root, needs-recommends, needs-sudo # comment
+Depends: @, @builddeps@
+
+Tests: test-1, test-2
+Depends: @
+
+Tests: asym, asym1, self, self1, broken, lfifo, working
+Depends: @
+
+# Depends line starts on a newline (#910210)
+Tests: test-1
+Depends:
+ @
+
+Test-Command: /bin/comment
+Restrictions: needs-root, # comment
+ # comment
+ breaks-testbed
+ # comment
+Depends: @,
+ @builddeps@
+ # comment
+
+Test-Command: /bin/true
+Depends: @, @builddeps@, @recommends@
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control.autodep8 b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control.autodep8
new file mode 100644
index 0000000..19e2aee
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/control.autodep8
@@ -0,0 +1 @@
+Tests: test-1
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-1 b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-1
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-2 b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-2
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/test-2
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/under_score b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/under_score
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/debian/tests/under_score
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/fill-values b/t/recipes/checks/testsuite/testsuite-general/build-spec/fill-values
new file mode 100644
index 0000000..95c0c3c
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: testsuite-general
+Description: General tests of the autopkgtest control file
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/orig/subdir/test-in-subdir b/t/recipes/checks/testsuite/testsuite-general/build-spec/orig/subdir/test-in-subdir
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/orig/subdir/test-in-subdir
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/testsuite-general/build-spec/pre-build b/t/recipes/checks/testsuite/testsuite-general/build-spec/pre-build
new file mode 100755
index 0000000..2e39c9c
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/build-spec/pre-build
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+mkfifo "$DIR/debian/tests/fifo"
+ln -s nonexistent "$DIR/debian/tests/broken"
+ln -s fifo "$DIR/debian/tests/lfifo"
+ln -s test-1 "$DIR/debian/tests/working"
diff --git a/t/recipes/checks/testsuite/testsuite-general/eval/desc b/t/recipes/checks/testsuite/testsuite-general/eval/desc
new file mode 100644
index 0000000..6357ee3
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/eval/desc
@@ -0,0 +1,4 @@
+Testname: testsuite-general
+Test-Against:
+ unnecessary-testsuite-autopkgtest-field
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/testsuite-general/eval/hints b/t/recipes/checks/testsuite/testsuite-general/eval/hints
new file mode 100644
index 0000000..cc2cee3
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-general/eval/hints
@@ -0,0 +1,16 @@
+testsuite-general (source): unknown-runtime-tests-restriction unknownrestriction [debian/tests/control:26]
+testsuite-general (source): unknown-runtime-tests-field Comment [debian/tests/control:2]
+testsuite-general (source): unknown-runtime-tests-feature unknownfeature [debian/tests/control:25]
+testsuite-general (source): testsuite-dependency-has-unparsable-elements "missing a comma" [debian/tests/control:22]
+testsuite-general (source): runtime-test-file-is-not-a-regular-file debian/tests/lfifo [debian/tests/control:35]
+testsuite-general (source): runtime-test-file-is-not-a-regular-file debian/tests/fifo [debian/tests/control:5]
+testsuite-general (source): obsolete-runtime-tests-restriction needs-recommends [debian/tests/control:29]
+testsuite-general (source): missing-runtime-test-file debian/tests/self1 [debian/tests/control:35]
+testsuite-general (source): missing-runtime-test-file debian/tests/self [debian/tests/control:35]
+testsuite-general (source): missing-runtime-test-file debian/tests/missing-test [debian/tests/control:5]
+testsuite-general (source): missing-runtime-test-file debian/tests/broken [debian/tests/control:35]
+testsuite-general (source): missing-runtime-test-file debian/tests/asym1 [debian/tests/control:35]
+testsuite-general (source): missing-runtime-test-file debian/tests/asym [debian/tests/control:35]
+testsuite-general (source): illegal-runtime-test-name under_score [debian/tests/control:5]
+testsuite-general (source): debian-tests-control-autodep8-is-obsolete [debian/tests/control.autodep8]
+testsuite-general (source): conflicting-test-fields Tests Test-Command [debian/tests/control:20]
diff --git a/t/recipes/checks/testsuite/testsuite-no-op/build-spec/debian/tests/control b/t/recipes/checks/testsuite/testsuite-no-op/build-spec/debian/tests/control
new file mode 100644
index 0000000..5f9a99e
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-no-op/build-spec/debian/tests/control
@@ -0,0 +1,2 @@
+Test-Command: /bin/true
+Depends: @
diff --git a/t/recipes/checks/testsuite/testsuite-no-op/build-spec/fill-values b/t/recipes/checks/testsuite/testsuite-no-op/build-spec/fill-values
new file mode 100644
index 0000000..5ee981c
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-no-op/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: testsuite-no-op
+Description: Test for no-op autopkgtests
diff --git a/t/recipes/checks/testsuite/testsuite-no-op/eval/desc b/t/recipes/checks/testsuite/testsuite-no-op/eval/desc
new file mode 100644
index 0000000..307cd57
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-no-op/eval/desc
@@ -0,0 +1,2 @@
+Testname: testsuite-no-op
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/testsuite-no-op/eval/hints b/t/recipes/checks/testsuite/testsuite-no-op/eval/hints
new file mode 100644
index 0000000..99f6ee4
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-no-op/eval/hints
@@ -0,0 +1 @@
+testsuite-no-op (source): no-op-testsuite [debian/tests/control:1]
diff --git a/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/control.in b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/control.in
new file mode 100644
index 0000000..d1552e1
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Testsuite: autopkgtest, golf
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/control b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/control
new file mode 100644
index 0000000..19e2aee
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/control
@@ -0,0 +1 @@
+Tests: test-1
diff --git a/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/test-1 b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/test-1
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/debian/tests/test-1
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/fill-values b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/fill-values
new file mode 100644
index 0000000..11a2f63
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-unknown-suite/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: testsuite-unknown-suite
+Description: Tests for unknown suite in the control being non-file
diff --git a/t/recipes/checks/testsuite/testsuite-unknown-suite/eval/desc b/t/recipes/checks/testsuite/testsuite-unknown-suite/eval/desc
new file mode 100644
index 0000000..d818b13
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-unknown-suite/eval/desc
@@ -0,0 +1,2 @@
+Testname: testsuite-unknown-suite
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/testsuite-unknown-suite/eval/hints b/t/recipes/checks/testsuite/testsuite-unknown-suite/eval/hints
new file mode 100644
index 0000000..0689d59
--- /dev/null
+++ b/t/recipes/checks/testsuite/testsuite-unknown-suite/eval/hints
@@ -0,0 +1,2 @@
+testsuite-unknown-suite (source): unnecessary-testsuite-autopkgtest-field [debian/control:8]
+testsuite-unknown-suite (source): unknown-testsuite golf [debian/control:8]
diff --git a/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/debian/control.in b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/debian/control.in
new file mode 100644
index 0000000..d19c70b
--- /dev/null
+++ b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+Homepage: https://lintian.debian.org/
+Testsuite: autopkgtest
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/fill-values b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/fill-values
new file mode 100644
index 0000000..ed175e9
--- /dev/null
+++ b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: unnecessary-testsuite-autopkgtest-field
+Skeleton: upload-native
+Description: Test with an unnecessary field Testsuite in control
diff --git a/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/desc b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/desc
new file mode 100644
index 0000000..4ff09a5
--- /dev/null
+++ b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/desc
@@ -0,0 +1,2 @@
+Testname: unnecessary-testsuite-autopkgtest-field
+Check: testsuite
diff --git a/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/hints b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/hints
new file mode 100644
index 0000000..bd34a18
--- /dev/null
+++ b/t/recipes/checks/testsuite/unnecessary-testsuite-autopkgtest-field/eval/hints
@@ -0,0 +1 @@
+unnecessary-testsuite-autopkgtest-field (source): unnecessary-testsuite-autopkgtest-field [debian/control:9]
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/changelog.in
new file mode 100644
index 0000000..a12fc8c
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/changelog.in
@@ -0,0 +1,57 @@
+maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low
+
+ * Doing an upload for QA but I fail to give it a correct version number,
+ have some uploaders, and also fail to mention it... Bad me ;)
+
+ -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200
+
+maintainer-scripts (6.1) unstable; urgency=low
+
+ * I made this entry on my local PC, oops ;)
+
+ -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100
+
+maintainer-scripts (6) unstable; urgency=low
+
+ * added ldconfig calls to postrm to check test the postrm tests
+ from shared-libs
+
+ -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100
+
+maintainer-scripts (5) unstable; urgency=low
+
+ * added bash style arrays to postinst, this one is for you Torsten (-:
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800
+
+maintainer-scripts (4) unstable; urgency=low
+
+ * added a here document to the prerm, along with two more bashisms
+ * made postrm a bash script to check that bash scripts are not searched
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800
+
+maintainer-scripts (3) unstable; urgency=low
+
+ * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this
+ thinking the '||' was a argument.
+ * also added an invalid call to '. foo bar'
+ * postinst now has a space between the #! and /bin/sh to test the interpreter
+ checking code.
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800
+
+maintainer-scripts (2) unstable; urgency=low
+
+ * Fix location of changelog.
+ * prerm and postrm do 'update-alternatives --remove'; should only complain
+ about postrm.
+
+ -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000
+
+maintainer-scripts (1) unstable; urgency=low
+
+ * Initial version
+ * postinst and prerm set the usr/doc symlink
+
+ -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/control.in
new file mode 100644
index 0000000..63dd2db
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/control.in
@@ -0,0 +1,18 @@
+Source: maintainer-scripts
+Section: misc
+Priority: optional
+Maintainer: QA group <packages@qa.debian.org>
+Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl>
+Build-Depends: [% $build_depends %]
+Standards-Version: 3.1.1
+Rules-Requires-Root: binary-targets
+XS-Dm-Upload-Allowed: Yes
+
+Package: maintainer-scripts
+Architecture: [% $package_architecture %]
+Depends: test
+Description: test lintian's maintainer script checks
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postinst
new file mode 100644
index 0000000..e56ed3b
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postinst
@@ -0,0 +1,181 @@
+#! /bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then
+ ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts
+ fi
+fi
+
+# valid
+. /usr/share/lintian/shell || exit 0
+. /usr/share/lintian/shell >/dev/null
+. /usr/share/lintian/shell 2>/dev/null
+. /usr/share/lintian/shell </dev/null
+. "$(dirname $0)/shell" ; bar
+# invalid
+. /usr/share/lintian/shell foo
+. "$(dirname $0)/shell" bar
+
+print "Hit enter to continue"
+read
+
+H[0]='this is a string'
+echo ${H[0]}
+echo "Index 0's length is ${#H[0]}"
+echo "All of the array is: ${H[@]}"
+
+install-info /usr/share/info/foo \
+ --quiet \ # make it so
+ --section foo
+
+echo Please use update-rc.d or invoke-rc.d to set up blah blah.
+
+chown root.root /usr/share/doc/maintainer-scripts/changelog
+chown root:root /usr/share/doc/maintainer-scripts/changelog
+
+$FOO=bar
+update-rc.d foo defaults >/dev/null
+update-rc.d $FOO defaults
+update-rc.d foo remove
+
+# valid
+FOO=/tmp
+FOO=/var/tmp
+: ${FOO:=/tmp}
+FOO=`mktemp /tmp/scripts.XXXXXX`
+rm "$FOO"
+FOO=`tempfile -n/tmp/scripts.tmp`
+mkdir /var/tmp/scripts
+FOO="/tmp/false.positive.XXXXXX"
+# invalid
+echo foo >>/tmp/scripts.tmp
+rm /tmp/scripts.tmp
+rmdir /var/tmp/scripts
+
+# invalid, maintainer-script-hides-init-failure
+invoke-rc.d foo start || exit 0
+
+# The right way to invoke an rc script
+if which invoke-rc.d >/dev/null 2>&1; then
+ invoke-rc.d package start
+else
+ /etc/init.d/package start
+fi
+
+# Example ucf invocation.
+ucf /usr/share/foo/configuration /etc/foo.conf
+
+# Calling gconftool directly.
+gconftool-2 --makefile-install-rule foo.schema
+
+# Calling gconf-schemas with no dependency.
+gconf-schemas --register foo.schema
+
+# Calling update-xmlcatalog with no dependency.
+update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \
+ --package maintainer-scripts --root
+
+# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old
+# recipe from the dpkg wiki that should be replaced with dpkg-query.
+sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \
+ /var/lib/dpkg/status
+
+# Don't modify these files.
+echo 'broken 6714/tcp' >> /etc/services
+cp /nonexistent /etc/protocols
+mv /usr/share/doc/rpc /etc/rpc
+
+# But this is okay.
+cp /etc/protocols /etc/protocols.new
+
+# This is also wrong.
+echo 'broken' > /etc/inetd.conf
+cp /etc/inetd.conf.new /etc/inetd.conf
+
+# But this is fine.
+cp /etc/inetd.conf /srv/chroot/etc/inetd.conf
+
+# Deprecated
+install-sgmlcatalog --install package
+install-sgmlcatalog --remove package
+
+# This too is a heredoc.
+some-program > /etc/config-file <<'EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# But this isn't.
+cat '<<EOF'
+echo "All of the array is: ${H[@]}"
+EOF
+
+# This is a heredoc
+cat <<-EOF
+echo "All of the array is ${H[@]}"
+EOF
+
+# As is this
+cat <<';'
+echo "All of the array is ${H[@]}"
+;
+
+# and this
+cat <<foo
+echo "All of the array is ${H[@]}"
+foobar
+echo $HOSTNAME
+foo
+
+# and again
+cat <<\bar
+echo "All of the array is ${H[@]}"
+bar
+
+# yet another
+cat <<"x++"
+echo "All of the array is ${H[@]}"
+x++
+
+# Recognize single quotes even if they start at the beginning of a line.
+echo not a bashism \
+'/{ptex,tex}/{amstex,plain,generic,}'
+
+# More bashisms.
+echo -e 'foo\n'
+echo "${!foo}"
+cat $(\< file)
+select foo in a b ; do echo $foo ; done
+cnt=$((cnt + 1))
+if false ; then
+ exec -l /bin/sh
+ exec -c /bin/sh
+ exec -a foo /bin/sh
+fi
+let cnt++
+if test -a /etc/default ; then
+ echo "$RANDOM|stuff"
+fi
+
+# Calling start-stop-daemon directly in an init script.
+start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo
+
+# But stopping it is fine -- we may be working around something else.
+start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo
+
+# Deprecated chown use with flags.
+chown -R root.root /usr/share/doc/maintainer-scripts
+
+case $mainscript in
+ /usr/bin/foo) foobarbaz;;
+esac
+
+/usr/bin/baz; echo bar
+
+# Some comment checking
+# This should flag $RANDOM
+test $# -gt 2 && echo $RANDOM
+# But these shouldn't
+test 1=1 # echo $RANDOM
+(test 1=1)# echo $RANDOM
+test 1=1;# echo $RANDOM
+backgroundtask &#echo $RA
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postrm b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postrm
new file mode 100644
index 0000000..c0aaf19
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/postrm
@@ -0,0 +1,47 @@
+#!/bin/bash
+#set -e
+
+update-alternatives --remove dummy /usr/bin/dummy-alternative
+
+# Normally read in a maintainer script is not kosher, but here we're going
+# to do it only if debconf doesn't exist.
+if ! test -f /usr/share/debconf/confmodule ; then
+ echo "Hit enter"
+ read
+fi
+
+# neither of the following should be detected as postrm-unsafe-ldconfig
+# intended, without quotes
+ if [ "$1" = remove ]; then
+ ldconfig
+ fi
+# reversed, many whitespace
+if [ 'remove' = "$1" ]
+then
+
+ ldconfig
+fi
+
+[ "remove" ="$1" ] && ldconfig
+
+update-rc.d bar remove
+
+# Shouldn't provoke an error despite no invoke-rc.d.
+echo "/etc/init.d/package stop to stop something"
+
+# Shouldn't require a ucf dependency. Unfortunately, right now that's
+# just because postrm isn't checked, not because we ensure that the
+# invocation is conditional.
+if which ucf >/dev/null; then
+ ucf --purge /etc/foo.conf
+fi
+
+# This isn't allowed.
+rm /tmp/foo /dev/device
+rm /dev/device1
+
+# But this is okay.
+rm /tmp/foo > /dev/null
+
+# Not allowed here even with remove.
+install-sgmlcatalog --remove package
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/preinst
new file mode 100644
index 0000000..6058978
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+update-rc.d foo remove
+update-rc.d bar defaults
+
+# Obsolete dpkg assertions.
+dpkg --assert-support-predepends || exit 1
+dpkg --assert-working-epoch || exit 1
+dpkg --assert-long-filenames || exit 1
+dpkg --assert-multi-conrep || exit 1
+
+/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status
+
+# continuation lines
+update-alternatives --install /usr/bin/fakeroot fakeroot \
+ /usr/bin/fakeroot-ng 5 \
+ --slave /usr/share/man/man1/fakeroot.1.gz \
+ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/prerm
new file mode 100644
index 0000000..076ecaf
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/prerm
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]; then
+ update-alternatives --remove dummy /usr/bin/dummy-alternative
+fi
+
+if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the
+n
+ rm -f /usr/doc/maintainer-scripts
+fi
+
+cat <<EOF
+This is all really bad bash specific code!!!
+read
+source /bar/baz/bat foo
+EOF
+
+# ok, back to checking
+if [ "$2" == "purge" ]; then
+ rm -r /bar/baz
+fi
+
+function foo( ) {
+ # but not here: local
+ local bar
+ echo "foo" &>/dev/null
+}
+
+source $FOO
+
+trap "echo hi" EXIT HUP 3
+
+if [[ "$2" = "purge" ]]; then
+ kill -HUP $$
+fi
+
+#this is ok though
+if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then
+ echo 1
+fi
+
+update-rc.d foo remove
+
+# More false positives for bashism checks. None of these are errors.
+echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//'
+echo "$line" | grep -q "${fonts},${foo}"
+echo '$[1+2]'
+printf "foo |& bar"
+perl -e "print q( kill -HUP $? )"
+
+# Still catch disallowed expansions in double-quotes, though.
+echo "${line:3:1}"
+
+# The wrong way to run an init script (no invoke-rc.d).
+/etc/init.d/package stop
+
+# This is the only install-sgmlcatalog call that's allowed.
+install-sgmlcatalog --quiet --remove package
+
+# More bashisms checks
+
+read -x foo
+read -x
+read -r foo
+read foo
+read
+
+echo "a\\b"
+echo 'a\nb'
+
+echo "${UID}"
+echo "$EUID"
+echo "$SHLVL"
+echo "$DIRSTACK"
+echo "$SECONDS"
+echo "$BASH"
+echo "$BASH_FOO"
+echo "$SHELLOPTS"
+echo "$PIPESTATUS"
+
+bar="$(cut '-d|' -f2 <<< "$foo")"
+
+VAR=1
+VAR+=a
+
+echos() {
+ echo -n -e "bar"
+ echo -e -n "bar"
+ echo -en "bar"
+ echo -ne "bar"
+ echo "bar"
+ echo "echo -e foo"
+}
+
+ech.os() {
+ echo foo >& 2
+ echo foo >&bar
+ echo foo >& bar
+}
+
+echoes() {
+ echo "abc\nxyz"
+ echo 'xyz\rabc'
+ echo foo\cbar
+
+ echo -e "abc\nxyz"
+ echo -net 'xyz\rabc'
+ echo -e foo\cbar
+}
+
+foobar.() {
+ suspend x
+ suspended x
+ caller x
+ complete x
+ compgen x
+ declare -a foo
+}
+
+.foobar() {
+ typeset -x bar
+ disown 1
+ builtin foo
+ set -B
+ alias -p
+ unalias -a
+}
+
+IFS="()"
+
+ulimit
+shopt
+type -v bar
+time ls
+dirs
+diff <(tac a) <(tac b)
+
+pushd
+
+local foo=bar
+local -x foo
+
+popd
+
+readonly -f
+
+echo bar > /dev/tcp
+export x
+export -x x
+export -p x
+
+sh -x
+sh -D
+sh --foo
+sh +O
+
+# Brace expansion checks
+echo {a,b}
+echo {abc},{bcd}
+
+foobar()
+{
+ # This is a function
+}
+
+ foo.bar()
+(
+ # This is a function with a bad name
+)
+
+foobar@()
+{
+ # As is this
+}
+
+# This is ok
+read -r foo
+# but these aren't
+read -r
+read -p "Would you like to restart the service?" foo bar
+read --fish
+
+set -e
+
+source "$BAR"
+source '$BAR'
+source ~/bar
+source a
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/rules
new file mode 100755
index 0000000..5fcef00
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/rules
@@ -0,0 +1,35 @@
+#!/usr/bin/make -f
+
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
+binary-arch:
+
+binary-indep:
+ install -d debian/tmp/DEBIAN
+ install -m 0755 debian/preinst debian/tmp/DEBIAN
+ install -m 0755 debian/postinst debian/tmp/DEBIAN
+ install -m 0755 debian/prerm debian/tmp/DEBIAN
+ install -m 0755 debian/postrm debian/tmp/DEBIAN
+ install -m 0644 debian/triggers debian/tmp/DEBIAN
+ install -d debian/tmp/usr/share/doc/maintainer-scripts
+ install -m 0644 debian/changelog \
+ debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog
+ dpkg-gencontrol -isp
+ dpkg --build debian/tmp ..
+
+binary: binary-arch binary-indep
+
+# Make sure we see dh_clean even in a rule clean depends on. Not the point of
+# this test suite, but a convenient place to put it.
+clean: clean1 clean2 clean3
+clean1:
+clean2:
+ dh_clean
+clean3:
+
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/triggers
new file mode 100644
index 0000000..f627094
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/triggers
@@ -0,0 +1,4 @@
+# Example triggers file
+activate foo
+
+interest bar
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/watch
new file mode 100644
index 0000000..430eea3
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/debian/watch
@@ -0,0 +1,11 @@
+# A whitespace is fine for uscan:
+ version=5
+
+# Following line should not be matched:
+#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \
+# Following one is incorrect, there's a missing backslash at the end
+opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/
+
+# 'active' is useless here, but it works anyway
+options=active \
+http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/fill-values
new file mode 100644
index 0000000..c281e87
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-non-native
+Testname: legacy-maintainer-scripts
+Source: maintainer-scripts
+Version: 7+dfsg-0.1
+Description: Legacy test "maintainer-scripts"
+Extra-Build-Depends: dash (>= 0.5.10.2)
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/desc
new file mode 100644
index 0000000..ee323f5
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/desc
@@ -0,0 +1,2 @@
+Testname: legacy-maintainer-scripts
+Check: triggers
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/hints
new file mode 100644
index 0000000..6794836
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/hints
@@ -0,0 +1,2 @@
+maintainer-scripts (binary): uses-implicit-await-trigger interest [triggers:4]
+maintainer-scripts (binary): uses-implicit-await-trigger activate [triggers:2]
diff --git a/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/checks/triggers/legacy-maintainer-scripts/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/checks/triggers/triggers-general/build-spec/debian/triggers b/t/recipes/checks/triggers/triggers-general/build-spec/debian/triggers
new file mode 100644
index 0000000..49656bf
--- /dev/null
+++ b/t/recipes/checks/triggers/triggers-general/build-spec/debian/triggers
@@ -0,0 +1,15 @@
+# -noawait: not an issue
+interest-noawait /usr/share/lintian/foo
+# explicit -await: Presumed informed decision (no tag)
+interest-await /usr/share/lintian/bar
+
+
+# implicit -await: Should trigger a tag
+interest /usr/share/lintian/baz
+
+# Not known by lintian
+random-trigger /bar
+
+# Repated trigger
+interest-await /usr/share/lintian/foo2
+interest-noawait /usr/share/lintian/foo2
diff --git a/t/recipes/checks/triggers/triggers-general/build-spec/fill-values b/t/recipes/checks/triggers/triggers-general/build-spec/fill-values
new file mode 100644
index 0000000..de80528
--- /dev/null
+++ b/t/recipes/checks/triggers/triggers-general/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: triggers-general
+Description: Test of the triggers check
diff --git a/t/recipes/checks/triggers/triggers-general/eval/desc b/t/recipes/checks/triggers/triggers-general/eval/desc
new file mode 100644
index 0000000..75bd1cd
--- /dev/null
+++ b/t/recipes/checks/triggers/triggers-general/eval/desc
@@ -0,0 +1,2 @@
+Testname: triggers-general
+Check: triggers
diff --git a/t/recipes/checks/triggers/triggers-general/eval/hints b/t/recipes/checks/triggers/triggers-general/eval/hints
new file mode 100644
index 0000000..da95efd
--- /dev/null
+++ b/t/recipes/checks/triggers/triggers-general/eval/hints
@@ -0,0 +1,3 @@
+triggers-general (binary): uses-implicit-await-trigger interest [triggers:8]
+triggers-general (binary): unknown-trigger random-trigger [triggers:11]
+triggers-general (binary): repeated-trigger-name /usr/share/lintian/foo2 (lines 14 15) [triggers]
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/udev/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/udev/files-foo-in-bar/eval/desc b/t/recipes/checks/udev/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..6bb0fe5
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: udev
diff --git a/t/recipes/checks/udev/files-foo-in-bar/eval/hints b/t/recipes/checks/udev/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..c39ad40
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/eval/hints
@@ -0,0 +1 @@
+files-foo-in-bar (binary): udev-rule-in-etc [etc/udev/rules.d/bar]
diff --git a/t/recipes/checks/udev/files-foo-in-bar/eval/post-test b/t/recipes/checks/udev/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/udev/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/checks/udev/udev-rules/build-spec/debian/rules b/t/recipes/checks/udev/udev-rules/build-spec/debian/rules
new file mode 100644
index 0000000..0b8c364
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/build-spec/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/$(shell dh_listpackages)
+APPSYNC_DIR=$(DESTDIR)/usr/share/metainfo/
+UDEV_DIR=$(DESTDIR)/usr/lib/udev/rules.d/
+
+%:
+ dh $@
+
+override_dh_install:
+ dh_install
+ install -m 0644 debian/udev-rules.metadata.xml $(APPSYNC_DIR)
+ ln -s dangling $(UDEV_DIR)/60-dangling-symlink.rules
diff --git a/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.dirs b/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.dirs
new file mode 100644
index 0000000..9268383
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.dirs
@@ -0,0 +1,2 @@
+usr/lib/udev/rules.d
+usr/share/metainfo
diff --git a/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.metadata.xml b/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.metadata.xml
new file mode 100644
index 0000000..2564e98
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component>
+ <id>udev-rules</id>
+ <metadata_license>MIT</metadata_license>
+ <name>lintian udev-rules test</name>
+ <summary>Test udev related checks in lintian</summary>
+ <description>
+ <p>
+ This is a test package designed to exercise some feature or tag
+ of Lintian. It is part of the Lintian test suite and may do
+ very odd things. It should not be installed like a regular
+ package. It may be an empty package.
+ </p>
+ </description>
+ <provides>
+ <modalias>usb:v0000p0001d*</modalias>
+ <modalias>usb:v0000p0002d*</modalias>
+ <modalias>usb:v0000p0003d*</modalias>
+ <modalias>usb:v0000p0004d*</modalias>
+ <modalias>usb:v0000p000Ad*</modalias>
+ </provides>
+</component>
diff --git a/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.udev b/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.udev
new file mode 100644
index 0000000..e35482d
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/build-spec/debian/udev-rules.udev
@@ -0,0 +1,25 @@
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0001", \
+ MODE="0666"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0002", \
+ MODE="0660", GROUP="plugdev"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0003", \
+ TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0004", \
+ MODE="0660", GROUP="plugdev", TAG+="uaccess"
+
+ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="0005", \
+ MODE="0660", GROUP="plugdev", TAG+="uaccess"
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0000", ATTR{idProduct}=="000a", \
+ ID_TEST_DEVICE="1"
+
+SUBSYSTEM!="usb", GOTO="target"
+ENV{DEVTYPE}!="usb_device", GOTO="target"
+ATTR{idVendor}=="0000", ATTR{idProduct}=="0000", RUN+="missing-subsystem-false-positive"
+LABEL="target"
+
+# Ensure we trigger this one after a GOTO
+ATTR{idVendor}=="0000", ATTR{idProduct}=="0000", RUN+="missing-subsystem"
diff --git a/t/recipes/checks/udev/udev-rules/build-spec/fill-values b/t/recipes/checks/udev/udev-rules/build-spec/fill-values
new file mode 100644
index 0000000..6463c54
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: udev-rules
+Description: Check udev rules for mistakes
diff --git a/t/recipes/checks/udev/udev-rules/eval/desc b/t/recipes/checks/udev/udev-rules/eval/desc
new file mode 100644
index 0000000..7330125
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/eval/desc
@@ -0,0 +1,2 @@
+Testname: udev-rules
+Check: udev
diff --git a/t/recipes/checks/udev/udev-rules/eval/hints b/t/recipes/checks/udev/udev-rules/eval/hints
new file mode 100644
index 0000000..e83c0b2
--- /dev/null
+++ b/t/recipes/checks/udev/udev-rules/eval/hints
@@ -0,0 +1,5 @@
+udev-rules (binary): udev-rule-unreadable [usr/lib/udev/rules.d/60-dangling-symlink.rules]
+udev-rules (binary): udev-rule-missing-uaccess user accessible device missing TAG+="uaccess" [usr/lib/udev/rules.d/60-udev-rules.rules:5]
+udev-rules (binary): udev-rule-missing-uaccess user accessible device missing TAG+="uaccess" [usr/lib/udev/rules.d/60-udev-rules.rules:2]
+udev-rules (binary): udev-rule-missing-subsystem vendor/product matching missing SUBSYSTEM specifier [usr/lib/udev/rules.d/60-udev-rules.rules:25]
+udev-rules (binary): udev-rule-missing-subsystem vendor/product matching missing SUBSYSTEM specifier [usr/lib/udev/rules.d/60-udev-rules.rules:14]
diff --git a/t/recipes/checks/unpack/ancient-source/build-spec/debian/watch b/t/recipes/checks/unpack/ancient-source/build-spec/debian/watch
new file mode 100644
index 0000000..c2a8392
--- /dev/null
+++ b/t/recipes/checks/unpack/ancient-source/build-spec/debian/watch
@@ -0,0 +1 @@
+# foo
diff --git a/t/recipes/checks/unpack/ancient-source/build-spec/fill-values b/t/recipes/checks/unpack/ancient-source/build-spec/fill-values
new file mode 100644
index 0000000..5ca784e
--- /dev/null
+++ b/t/recipes/checks/unpack/ancient-source/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: ancient-source
+Description: Test package for ancient files producing tar errors
diff --git a/t/recipes/checks/unpack/ancient-source/build-spec/orig/README b/t/recipes/checks/unpack/ancient-source/build-spec/orig/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/checks/unpack/ancient-source/build-spec/orig/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/checks/unpack/ancient-source/build-spec/pre-orig b/t/recipes/checks/unpack/ancient-source/build-spec/pre-orig
new file mode 100755
index 0000000..9c327c6
--- /dev/null
+++ b/t/recipes/checks/unpack/ancient-source/build-spec/pre-orig
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+packagedir="$1"
+
+TZ=GMT touch -d@-1 "$packagedir/README"
diff --git a/t/recipes/checks/unpack/ancient-source/eval/desc b/t/recipes/checks/unpack/ancient-source/eval/desc
new file mode 100644
index 0000000..f10d0aa
--- /dev/null
+++ b/t/recipes/checks/unpack/ancient-source/eval/desc
@@ -0,0 +1,2 @@
+Testname: ancient-source
+Check: unpack
diff --git a/t/recipes/checks/unpack/ancient-source/eval/hints b/t/recipes/checks/unpack/ancient-source/eval/hints
new file mode 100644
index 0000000..1da781a
--- /dev/null
+++ b/t/recipes/checks/unpack/ancient-source/eval/hints
@@ -0,0 +1 @@
+ancient-source (source): unpack-message-for-source tar: ancient-source-1.0/README: implausibly old time stamp 1969-12-31 23:59:59
diff --git a/t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/fill-values b/t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/fill-values
new file mode 100644
index 0000000..814c999
--- /dev/null
+++ b/t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: deb
+Testname: tar-removing-leading-slash
+Description: Test package emitting errors from tar
diff --git a/t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/tar-data b/t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/tar-data
new file mode 100755
index 0000000..3512cc0
--- /dev/null
+++ b/t/recipes/checks/unpack/tar-removing-leading-slash/build-spec/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.gz --gzip --xform 's,^,/,' --directory "$rootdir" usr/
diff --git a/t/recipes/checks/unpack/tar-removing-leading-slash/eval/desc b/t/recipes/checks/unpack/tar-removing-leading-slash/eval/desc
new file mode 100644
index 0000000..c1e10cf
--- /dev/null
+++ b/t/recipes/checks/unpack/tar-removing-leading-slash/eval/desc
@@ -0,0 +1,2 @@
+Testname: tar-removing-leading-slash
+Check: unpack
diff --git a/t/recipes/checks/unpack/tar-removing-leading-slash/eval/hints b/t/recipes/checks/unpack/tar-removing-leading-slash/eval/hints
new file mode 100644
index 0000000..9f60daa
--- /dev/null
+++ b/t/recipes/checks/unpack/tar-removing-leading-slash/eval/hints
@@ -0,0 +1 @@
+tar-removing-leading-slash (binary): unpack-message-for-deb-data tar: Removing leading `/' from member names
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-----
+
+mQINBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+tBtEdW1teSBLZXkgZm9yIExpbnRpYW4gVGVzdHOJAk4EEwEKADgWIQSpqY8a118d
+5KLeB6BdllL4TapVLgUCWkaojQIbAwULCQgHAwUVCgkICwUWAwIBAAIeAQIXgAAK
+CRBdllL4TapVLmmID/4mdteb8/iqcwFNmLZ41w3RpdWoEZj803806TzsaC9GbG5i
+qMh6gucQ2Go+lvCVaGlrb8zW74trQb9yhGJ4Z3Uvdo6VxccGsCbntOQRiy22tCBL
+KxwVCyxXy0ebyaerxeCSsrRSc9jWCZ92QYh335m8ShKYk+hTNpCePNpVsyz2qjaD
+M9VGYsXuGFpB6ebIIL9LCZGR1ChKNgbJFbL0gQr4xt/b3xFfBNCwPmU5+kZWqpIZ
+lyFOWo3eA71AQlJPxl+Oig+ldXn/kw8LNqUSxyaXx1lp8BruAwK2AohQHY4t6nrb
+TfID5kWe1VcdfhaE4/eOsGt69zvmpueyOSHccHbXqTl6ePHit0JbsLnD1qCiPuuT
+o6qadPb3bs1/PrgAcJqye2mElc9sG96g8lBNvE9fNWG+FwGI83uqjMgy686m0dNA
+uqTXZVWhW4j7au2P7Ji6lWVl0rhh6R0VMLpGA9DGhvoPwFgCelb+Dc53Kk9bZIiQ
++lrv4Mf/3nHs3TRDYvB3TxMGW84cbwHhECRvw2cffWGqA4rs9c2oqa+LVyi2ug6o
+gLXEDgifP+Z7lAZ86l9IKOxns4dOYFRyfG4OzwHiXeOgQ7hKy/pHs7zlh/34HTFn
+rBNweDimchxKk2MnNtzTMj4YP95Z1n0cagWAUBvUvTSqZ2QcLy8G3V86OCNZu7kC
+DQRaRqiNARAA18+SE9VvKrY8tpnp8Vd3ZkUu1EIHPPk7FtR6MQUgMDMc5W6oqpEw
+mrzTy+arZfDNeyO8qyaRvrsKQNRvofmtT6p7TUUEcY8tXBy1Hjg9jI4QHtOWQjoS
+ZGM2K6dqKF+fXmRK/YLS4B4T7nYCidQCePXx1ZAkIbBdn4th5LgEVvwmxHJ0V5Qy
+o94SnBbToRnP2Htdz4EKpd6gW0+z/OYfchLTuYfe5Y7umpHMtcTlSy5IVz9WGzoK
+PE7uAclEqo82mG5yMYHMRED1EMnDS51x2wCDCV75iY50bhZg3v/iMOiyNbCJnu22
+vynOQ+04+ZcmjAKGUbCvWh63mEc9f33jOyBllNGBi6iChEpULltD2KMLPWyqSzAC
+pmRrhk6eVjfIhqBs8r8hPqs8jYXDNuC+RUZmkCii+3UDDcMMnmcPSy/AozpI+Hk/
+wOylvlGYbYHdA7O+dzIHwiail9dAPK7rvpNQZzb5PS4vEPcKlznuZ6gbskuNvCLa
+MQGMTbl9Y1LPuRw+wxPcjOOTGjJgx14qw4LRZ2rRGVPoQWi0ws4DZGe7VN+Ha+Ol
+9MPZxCmRnGI1GqudSH4uceoK71g3oLI0VP3Zx8ArbEgyg7YHZEkHIiifC2NTJ2ue
+Jl1ePjkinPJUsDSocuBxgNY79xEDNtE7c5rO6FruCaJ/dfUIpoRlM5kAEQEAAYkC
+NgQYAQoAIBYhBKmpjxrXXx3kot4HoF2WUvhNqlUuBQJaRqiNAhsMAAoJEF2WUvhN
+qlUu7twP/i138c51L5S7JGWpPstHC2cfHXWDSlaaUvinF2HdsZeIMajaX8HjXGFW
+GFDOUjputyJp9Y3rf1XD3AQmySKpXbe7KgIMSA9+hpAWuHB1ZYETevSIZ4PNUjmi
+EOIGz7e++I4tOKE0HeZ1cHfRfH4nFaVSCwMunlbmETzQXtQ/b6deGBizXUnSjUDQ
+o55mUIxSX/hmFrBh+sMAm93+jfP8/HqtiSVcedyaYzKc1UkGnrc8OnRJlf6fMDZr
+O3iQvei3lXJkV5HZU0Js492u2MvKdpcsGegw0LH6kOHvlmSgGx5krhNR9sCzgieW
+q+zfS+HT1LVDTX3H/rF8vjeTS37X+j3tC/IOlUPd3/9kOmAElv6i9cm0DrEVdCXy
+jnPJyEnSUSLaFZvZToCc/sV/8f6dkgafiXphQZCv3WRIFB+MZIF+OtnyUVkbA+v+
+AzB4pPoIhNBeYZcNWTk+43DNLHQsftM2v9EE7LQCNzZjPXGHhR+D6pJ2gKeOP/F1
+GcRieJX1RHrU+pbcc2P5gNwRsrcsYy04uNyTMGC+q1ec0oqRAVv6BXXnpBfPhUyN
+3Ds1uRmy5IF1vquqPw8g79FcTr5Bbpy2otRwreK3dYbVcjADgRSK4g9XykdHelgj
+yM1UJAMAExtOtHAyrxg4sfXmC1qa/bGmgwG/wjEiLbtv8FTQVIx0
+=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-----
+
+lQcYBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+AA/9GeDHRGORYiXwTtCTes4v+1Jko9Z7BKIHPBcb0l4YIOeKSMyqGRV4D866u9Z+
+BUImKhRseUsjYpZ+2OgXlQjWbF0Oli7Fhis7ATjmbW2Q/cvgObXBHGZMIna3wa/9
+vVH8I1IdyrgAL9Ge2uO9YcQ92G9LqvRH+FlvUEn4bGr920HxPf9y8QDN4PrAXV4l
+F0oxWq+tfncb44eO7/9tKaQgUzpNGcg5KtHtFtUi8eMcbcnbytgUiNB0HnzRbhzJ
+XsHCBTkJAAYGNBYd6/ZZ4jxI6bhaggsbT14xwbjAAy6dskCniFamhW8dkr36mRYl
+onVyAd1qbaVjCo3yE8lebAou2I6nEhdLfUcDxJ/htx0Du/rpSBq1RBmRErr8v8uL
+m62B8Twcn4GQX2WPsBpNRtpeb9R+So4LBg4Y4btMMUJ1P7vJOHUvYngsbPNImUmo
+rirpl01z27x3Ss1G1ruN5QEAHGWHK3/XmLjsajsuPmyw3xH3IfVLUAZktyE82IJ9
+eOWBaK3hCrxEZV9cHiY/zk8FimR/glmVY1jKphVnAmXQk05hCEASDo3T4i14J1jY
+D642xTAoUytpFaGa85HLXiVlv84VATQ/WYCgz4nIgoZO5fgPY1ndVEppfVU7PBRD
+1ZmNpQ3L3nQdtsYLTGdTboscpBSkenIkGj9WN+jdkTjTZrkIAMKaj9NJlzfp8IgP
+q7OeAmg3fbfsXo4BgNqph5aMDsWwBb2NnQZ7pjXwiLRZDfFFnsigpiDoEHvz/M+2
+qy9MPmVEHVvXtrucngkz1a+UFuYbmD3SWT6cLPln7ceGyDyz7CewbEPrv2nZcDVD
+7/r3wt8S/fyd69rBqPugIq4ICA3PBwCdOOOodwr0wUEID/Wb9969Ksmlaso/iBhb
+Vgqj6YRf0qSFdICdc1cx+seHvuafs/ltiy3wYU64+Mqu7LtWF/VtArvlSJNziPWR
+i/ud+1JEmdx+ud6V3c7+/31+qajA9bHKYlCaT9aeM3N+SP1cX1+Sg1xERa8a0qPc
+iA+iF5MIAOYNG77+MP2YA0fVHX43CQZi90YUdKH5c6iJb99uJkf5yiAz61vcGX2V
+xGG3TmqzEm7pqaokkhfRtYs4xksqCFprokdcj/uPyTWh9La9Pv2pfKyTeoEfkC5r
+XGob18RoIWj5cn5h0SYSWSX9St/YjsopYdAanN9zp6jyh8sMd7hivxRDFZdKsJdl
+XLjxFCcWqdTyz0TTgydcRhelnp62e3dgFQj1Q0rsQT3LJNAJSc0Y19ly6lDnCnBP
++0QPAUmYRxdQm2nubtZ6f2TgOMWGeIBxaPL+/lJ5PlA7nDehcyQr88dljaae/FBJ
+KrWRToQn17O8Ri+GgqvR77Ym+R4Kfx8H/RqjMFKN0e7yGZXB6eIU5V8wBOq9Nm7A
+GyoE6wKLfk11LPWwBEpEKUrmGntQRCSc4tYm4dS14HtLmtjLQF6mTbIRhvDzn2ik
+1PNO7wmKQxj9Gk2CrvuSitavzwuqhepeVKNQfRySHyqp6oB3lM5JrB+5No2nJnya
+svpRmou7QWtHjQnQ+/WPSQVIXifIbEtuHEO5phD7rjg8RdtgiefTQCaVu3zYSQOs
+MvqO3hC3MkBzV0B204n8H3eC5PGgDulvmhmNwVrRzOWxO2zByCgEErV5J1UteNP8
+C5DgihUMbI/ocuVvXiornyx2yRzmfSFsQQIfQJnB/XY0h7+SRD3i39x6lbQbRHVt
+bXkgS2V5IGZvciBMaW50aWFuIFRlc3RziQJOBBMBCgA4FiEEqamPGtdfHeSi3geg
+XZZS+E2qVS4FAlpGqI0CGwMFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AACgkQXZZS
++E2qVS5piA/+JnbXm/P4qnMBTZi2eNcN0aXVqBGY/NN/NOk87GgvRmxuYqjIeoLn
+ENhqPpbwlWhpa2/M1u+La0G/coRieGd1L3aOlcXHBrAm57TkEYsttrQgSyscFQss
+V8tHm8mnq8XgkrK0UnPY1gmfdkGId9+ZvEoSmJPoUzaQnjzaVbMs9qo2gzPVRmLF
+7hhaQenmyCC/SwmRkdQoSjYGyRWy9IEK+Mbf298RXwTQsD5lOfpGVqqSGZchTlqN
+3gO9QEJST8ZfjooPpXV5/5MPCzalEscml8dZafAa7gMCtgKIUB2OLep6203yA+ZF
+ntVXHX4WhOP3jrBrevc75qbnsjkh3HB216k5enjx4rdCW7C5w9agoj7rk6OqmnT2
+927Nfz64AHCasntphJXPbBveoPJQTbxPXzVhvhcBiPN7qozIMuvOptHTQLqk12VV
+oVuI+2rtj+yYupVlZdK4YekdFTC6RgPQxob6D8BYAnpW/g3OdypPW2SIkPpa7+DH
+/95x7N00Q2Lwd08TBlvOHG8B4RAkb8NnH31hqgOK7PXNqKmvi1cotroOqIC1xA4I
+nz/me5QGfOpfSCjsZ7OHTmBUcnxuDs8B4l3joEO4Ssv6R7O85Yf9+B0xZ6wTcHg4
+pnIcSpNjJzbc0zI+GD/eWdZ9HGoFgFAb1L00qmdkHC8vBt1fOjgjWbudBxgEWkao
+jQEQANfPkhPVbyq2PLaZ6fFXd2ZFLtRCBzz5OxbUejEFIDAzHOVuqKqRMJq808vm
+q2XwzXsjvKsmkb67CkDUb6H5rU+qe01FBHGPLVwctR44PYyOEB7TlkI6EmRjNiun
+aihfn15kSv2C0uAeE+52AonUAnj18dWQJCGwXZ+LYeS4BFb8JsRydFeUMqPeEpwW
+06EZz9h7Xc+BCqXeoFtPs/zmH3IS07mH3uWO7pqRzLXE5UsuSFc/Vhs6CjxO7gHJ
+RKqPNphucjGBzERA9RDJw0udcdsAgwle+YmOdG4WYN7/4jDosjWwiZ7ttr8pzkPt
+OPmXJowChlGwr1oet5hHPX994zsgZZTRgYuogoRKVC5bQ9ijCz1sqkswAqZka4ZO
+nlY3yIagbPK/IT6rPI2FwzbgvkVGZpAoovt1Aw3DDJ5nD0svwKM6SPh5P8Dspb5R
+mG2B3QOzvncyB8ImopfXQDyu676TUGc2+T0uLxD3Cpc57meoG7JLjbwi2jEBjE25
+fWNSz7kcPsMT3IzjkxoyYMdeKsOC0Wdq0RlT6EFotMLOA2Rnu1Tfh2vjpfTD2cQp
+kZxiNRqrnUh+LnHqCu9YN6CyNFT92cfAK2xIMoO2B2RJByIonwtjUydrniZdXj45
+IpzyVLA0qHLgcYDWO/cRAzbRO3Oazuha7gmif3X1CKaEZTOZABEBAAEAD/0QZntr
+AJvkMqQDsB0q7yhz+sXKXCKJg/A1YIbRAwXKm+vHf29tF5UKbAIAG21tlQ1B3SSj
+8LhVNrNwBfozeeetkklbWnzHYNKD5EDwWmT1BuvF3UhXNpYPZR8TVgjs0ggosnWk
+yoRvgzb6YXijvvCZftP2v0TmVC09PWipABdWVpm0m/US8xXJGwyDf6mWsyvhf03m
+Vx+3HLzHdlO5ivHF/RUezZWcZjkO6+MTHN2G/INYsV0VZcWsMRxdwYzzauhC0RaN
+BBiWRvBzauh+7n4InwNA8E6FjAWgQxjwAXalRwhvU5VAdmoI9iqbwg3udnSNDHkR
+gVxGEeexDcLoQCnHK1RQr8QnO1Pr5sUHlc5bBE1piG41cca0CvsZHGv+wnlWIw9y
+rvk3LWnLLKb86yU4ahLEL/VT8znUK3P/BqWiVcyVqUH8Pe0XlBGlvO7o5Wmc12F9
+wlVvy1W94GLUvMiaexnGJDotJwMYuq2lgLh6e+rHGOjmp5N2OuGk+0Va2EOkVuEb
+nrWRqk7AfUWNjA+b4mRBG+EyabraOULUqWBqKdC82UqNwDCvO78zqq6hHbDCGs8M
+BQ6UuCtO3vOPHUmsVpZorgLWa+jw2fR8lL4T8Ite1EB2p45R/QWcNhWV5FyEV0a9
+ndm7kbH/KDKQ92K7BIbBF7KW5YbF5rTqs/18HQgA37+Szi3zcPKxbiCCrSeM2BYG
+2s061pc+qpPFvt/litJgT5Tyx1m7l3Tah4m1BNW0K6CASLY/GultJTigRpE6CHcQ
+C9O2pDqzbvxsWUnj1u6InyfPA9EgxFgFeG8vVfH9NavCGKGIW4E07VUb8La5JfL4
+DD98xOHP2XHfuBjd2Bw0DmO8ZopvXr82wKK1R7ROCrsWZ30wGOPOkXnBYp+nAApd
+E5dZQnmXEzru6S15l9PsVJrXR1ZB1hybdrnaHJYNXCp+sv9LTujIuCCCrV9DK33h
+z/dDjNZabTW3TOweom2b5RF360IJ1RrrWQMakpwv5uoq3G5UX9JYi/EVajSwpQgA
+9usZVzncGh48g6qmlkSEpKM1+Dibg84hdrbHHlEwraRVoKCIrHoxQKnaGFl+DGgz
+qLWKS/yW1bS5MXp6dZijXADquvXWa7YUIE8tLfmbGPxSBQkNTfKr2OgUiryoFvIo
++MfYw5GT20EwYt7y6HJo9qnzIEWufl5V36Ep9W7hosCLblsO6SADl94ZB2qqCGNM
+LCFb8RYEc4hHOr2bgF2xoYF29kasW8AmEZNCYetpw3xGl/S0msa9b46DdxGHm8sG
+2SWaDAK7l+cFrdKaAud+A49oWPTPQMYqqWdSvG/tUf5NZf4FDsYdCM03wnu/bvWQ
+TZzBTxJgexoUsdsPKh9w5QgAy0QTv37ejCCqMXTp3J3FIkWU+UmZNbvvhpyKk86i
+vpuMMqdAzGxaHikFOIlkz/kxdP21qac2fR1ovSs0jsZcTMXOdKwsjNRSEho3DAb5
+OBv4mD6W3+PyatTHXn+lRN1ISugXrQjRqz63SPXSBl/0jvgu7ix51OFGkh1k2UYv
++AEJb3MqSzjiRLDoEpJ+DHORP5QkuX3jNDzNw7nXvPzV2RrMjm6RBmlzV15JPDeN
+pNCuhiG/fik+EhZyvRvEGWcj6267t41uDrX3bxUGT7xiRbRQ/QAYC3nRXOZTlum2
+hEf7rirY99AHPdAw/N8SbODGh/dVoMkJiQoKjmWwF+39n4C4iQI2BBgBCgAgFiEE
+qamPGtdfHeSi3gegXZZS+E2qVS4FAlpGqI0CGwwACgkQXZZS+E2qVS7u3A/+LXfx
+znUvlLskZak+y0cLZx8ddYNKVppS+KcXYd2xl4gxqNpfweNcYVYYUM5SOm63Imn1
+jet/VcPcBCbJIqldt7sqAgxID36GkBa4cHVlgRN69Ihng81SOaIQ4gbPt774ji04
+oTQd5nVwd9F8ficVpVILAy6eVuYRPNBe1D9vp14YGLNdSdKNQNCjnmZQjFJf+GYW
+sGH6wwCb3f6N8/z8eq2JJVx53JpjMpzVSQaetzw6dEmV/p8wNms7eJC96LeVcmRX
+kdlTQmzj3a7Yy8p2lywZ6DDQsfqQ4e+WZKAbHmSuE1H2wLOCJ5ar7N9L4dPUtUNN
+fcf+sXy+N5NLftf6Pe0L8g6VQ93f/2Q6YASW/qL1ybQOsRV0JfKOc8nISdJRItoV
+m9lOgJz+xX/x/p2SBp+JemFBkK/dZEgUH4xkgX462fJRWRsD6/4DMHik+giE0F5h
+lw1ZOT7jcM0sdCx+0za/0QTstAI3NmM9cYeFH4PqknaAp44/8XUZxGJ4lfVEetT6
+ltxzY/mA3BGytyxjLTi43JMwYL6rV5zSipEBW/oFdeekF8+FTI3cOzW5GbLkgXW+
+q6o/DyDv0VxOvkFunLai1HCt4rd1htVyMAOBFIriD1fKR0d6WCPIzVQkAwATG060
+cDKvGDix9eYLWpr9saaDAb/CMSItu2/wVNBUjHQ=
+=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-----
+
+mQINBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+tBtEdW1teSBLZXkgZm9yIExpbnRpYW4gVGVzdHOJAk4EEwEKADgWIQSpqY8a118d
+5KLeB6BdllL4TapVLgUCWkaojQIbAwULCQgHAwUVCgkICwUWAwIBAAIeAQIXgAAK
+CRBdllL4TapVLmmID/4mdteb8/iqcwFNmLZ41w3RpdWoEZj803806TzsaC9GbG5i
+qMh6gucQ2Go+lvCVaGlrb8zW74trQb9yhGJ4Z3Uvdo6VxccGsCbntOQRiy22tCBL
+KxwVCyxXy0ebyaerxeCSsrRSc9jWCZ92QYh335m8ShKYk+hTNpCePNpVsyz2qjaD
+M9VGYsXuGFpB6ebIIL9LCZGR1ChKNgbJFbL0gQr4xt/b3xFfBNCwPmU5+kZWqpIZ
+lyFOWo3eA71AQlJPxl+Oig+ldXn/kw8LNqUSxyaXx1lp8BruAwK2AohQHY4t6nrb
+TfID5kWe1VcdfhaE4/eOsGt69zvmpueyOSHccHbXqTl6ePHit0JbsLnD1qCiPuuT
+o6qadPb3bs1/PrgAcJqye2mElc9sG96g8lBNvE9fNWG+FwGI83uqjMgy686m0dNA
+uqTXZVWhW4j7au2P7Ji6lWVl0rhh6R0VMLpGA9DGhvoPwFgCelb+Dc53Kk9bZIiQ
++lrv4Mf/3nHs3TRDYvB3TxMGW84cbwHhECRvw2cffWGqA4rs9c2oqa+LVyi2ug6o
+gLXEDgifP+Z7lAZ86l9IKOxns4dOYFRyfG4OzwHiXeOgQ7hKy/pHs7zlh/34HTFn
+rBNweDimchxKk2MnNtzTMj4YP95Z1n0cagWAUBvUvTSqZ2QcLy8G3V86OCNZu7kC
+DQRaRqiNARAA18+SE9VvKrY8tpnp8Vd3ZkUu1EIHPPk7FtR6MQUgMDMc5W6oqpEw
+mrzTy+arZfDNeyO8qyaRvrsKQNRvofmtT6p7TUUEcY8tXBy1Hjg9jI4QHtOWQjoS
+ZGM2K6dqKF+fXmRK/YLS4B4T7nYCidQCePXx1ZAkIbBdn4th5LgEVvwmxHJ0V5Qy
+o94SnBbToRnP2Htdz4EKpd6gW0+z/OYfchLTuYfe5Y7umpHMtcTlSy5IVz9WGzoK
+PE7uAclEqo82mG5yMYHMRED1EMnDS51x2wCDCV75iY50bhZg3v/iMOiyNbCJnu22
+vynOQ+04+ZcmjAKGUbCvWh63mEc9f33jOyBllNGBi6iChEpULltD2KMLPWyqSzAC
+pmRrhk6eVjfIhqBs8r8hPqs8jYXDNuC+RUZmkCii+3UDDcMMnmcPSy/AozpI+Hk/
+wOylvlGYbYHdA7O+dzIHwiail9dAPK7rvpNQZzb5PS4vEPcKlznuZ6gbskuNvCLa
+MQGMTbl9Y1LPuRw+wxPcjOOTGjJgx14qw4LRZ2rRGVPoQWi0ws4DZGe7VN+Ha+Ol
+9MPZxCmRnGI1GqudSH4uceoK71g3oLI0VP3Zx8ArbEgyg7YHZEkHIiifC2NTJ2ue
+Jl1ePjkinPJUsDSocuBxgNY79xEDNtE7c5rO6FruCaJ/dfUIpoRlM5kAEQEAAYkC
+NgQYAQoAIBYhBKmpjxrXXx3kot4HoF2WUvhNqlUuBQJaRqiNAhsMAAoJEF2WUvhN
+qlUu7twP/i138c51L5S7JGWpPstHC2cfHXWDSlaaUvinF2HdsZeIMajaX8HjXGFW
+GFDOUjputyJp9Y3rf1XD3AQmySKpXbe7KgIMSA9+hpAWuHB1ZYETevSIZ4PNUjmi
+EOIGz7e++I4tOKE0HeZ1cHfRfH4nFaVSCwMunlbmETzQXtQ/b6deGBizXUnSjUDQ
+o55mUIxSX/hmFrBh+sMAm93+jfP8/HqtiSVcedyaYzKc1UkGnrc8OnRJlf6fMDZr
+O3iQvei3lXJkV5HZU0Js492u2MvKdpcsGegw0LH6kOHvlmSgGx5krhNR9sCzgieW
+q+zfS+HT1LVDTX3H/rF8vjeTS37X+j3tC/IOlUPd3/9kOmAElv6i9cm0DrEVdCXy
+jnPJyEnSUSLaFZvZToCc/sV/8f6dkgafiXphQZCv3WRIFB+MZIF+OtnyUVkbA+v+
+AzB4pPoIhNBeYZcNWTk+43DNLHQsftM2v9EE7LQCNzZjPXGHhR+D6pJ2gKeOP/F1
+GcRieJX1RHrU+pbcc2P5gNwRsrcsYy04uNyTMGC+q1ec0oqRAVv6BXXnpBfPhUyN
+3Ds1uRmy5IF1vquqPw8g79FcTr5Bbpy2otRwreK3dYbVcjADgRSK4g9XykdHelgj
+yM1UJAMAExtOtHAyrxg4sfXmC1qa/bGmgwG/wjEiLbtv8FTQVIx0
+=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-----
+
+lQcYBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+AA/9GeDHRGORYiXwTtCTes4v+1Jko9Z7BKIHPBcb0l4YIOeKSMyqGRV4D866u9Z+
+BUImKhRseUsjYpZ+2OgXlQjWbF0Oli7Fhis7ATjmbW2Q/cvgObXBHGZMIna3wa/9
+vVH8I1IdyrgAL9Ge2uO9YcQ92G9LqvRH+FlvUEn4bGr920HxPf9y8QDN4PrAXV4l
+F0oxWq+tfncb44eO7/9tKaQgUzpNGcg5KtHtFtUi8eMcbcnbytgUiNB0HnzRbhzJ
+XsHCBTkJAAYGNBYd6/ZZ4jxI6bhaggsbT14xwbjAAy6dskCniFamhW8dkr36mRYl
+onVyAd1qbaVjCo3yE8lebAou2I6nEhdLfUcDxJ/htx0Du/rpSBq1RBmRErr8v8uL
+m62B8Twcn4GQX2WPsBpNRtpeb9R+So4LBg4Y4btMMUJ1P7vJOHUvYngsbPNImUmo
+rirpl01z27x3Ss1G1ruN5QEAHGWHK3/XmLjsajsuPmyw3xH3IfVLUAZktyE82IJ9
+eOWBaK3hCrxEZV9cHiY/zk8FimR/glmVY1jKphVnAmXQk05hCEASDo3T4i14J1jY
+D642xTAoUytpFaGa85HLXiVlv84VATQ/WYCgz4nIgoZO5fgPY1ndVEppfVU7PBRD
+1ZmNpQ3L3nQdtsYLTGdTboscpBSkenIkGj9WN+jdkTjTZrkIAMKaj9NJlzfp8IgP
+q7OeAmg3fbfsXo4BgNqph5aMDsWwBb2NnQZ7pjXwiLRZDfFFnsigpiDoEHvz/M+2
+qy9MPmVEHVvXtrucngkz1a+UFuYbmD3SWT6cLPln7ceGyDyz7CewbEPrv2nZcDVD
+7/r3wt8S/fyd69rBqPugIq4ICA3PBwCdOOOodwr0wUEID/Wb9969Ksmlaso/iBhb
+Vgqj6YRf0qSFdICdc1cx+seHvuafs/ltiy3wYU64+Mqu7LtWF/VtArvlSJNziPWR
+i/ud+1JEmdx+ud6V3c7+/31+qajA9bHKYlCaT9aeM3N+SP1cX1+Sg1xERa8a0qPc
+iA+iF5MIAOYNG77+MP2YA0fVHX43CQZi90YUdKH5c6iJb99uJkf5yiAz61vcGX2V
+xGG3TmqzEm7pqaokkhfRtYs4xksqCFprokdcj/uPyTWh9La9Pv2pfKyTeoEfkC5r
+XGob18RoIWj5cn5h0SYSWSX9St/YjsopYdAanN9zp6jyh8sMd7hivxRDFZdKsJdl
+XLjxFCcWqdTyz0TTgydcRhelnp62e3dgFQj1Q0rsQT3LJNAJSc0Y19ly6lDnCnBP
++0QPAUmYRxdQm2nubtZ6f2TgOMWGeIBxaPL+/lJ5PlA7nDehcyQr88dljaae/FBJ
+KrWRToQn17O8Ri+GgqvR77Ym+R4Kfx8H/RqjMFKN0e7yGZXB6eIU5V8wBOq9Nm7A
+GyoE6wKLfk11LPWwBEpEKUrmGntQRCSc4tYm4dS14HtLmtjLQF6mTbIRhvDzn2ik
+1PNO7wmKQxj9Gk2CrvuSitavzwuqhepeVKNQfRySHyqp6oB3lM5JrB+5No2nJnya
+svpRmou7QWtHjQnQ+/WPSQVIXifIbEtuHEO5phD7rjg8RdtgiefTQCaVu3zYSQOs
+MvqO3hC3MkBzV0B204n8H3eC5PGgDulvmhmNwVrRzOWxO2zByCgEErV5J1UteNP8
+C5DgihUMbI/ocuVvXiornyx2yRzmfSFsQQIfQJnB/XY0h7+SRD3i39x6lbQbRHVt
+bXkgS2V5IGZvciBMaW50aWFuIFRlc3RziQJOBBMBCgA4FiEEqamPGtdfHeSi3geg
+XZZS+E2qVS4FAlpGqI0CGwMFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AACgkQXZZS
++E2qVS5piA/+JnbXm/P4qnMBTZi2eNcN0aXVqBGY/NN/NOk87GgvRmxuYqjIeoLn
+ENhqPpbwlWhpa2/M1u+La0G/coRieGd1L3aOlcXHBrAm57TkEYsttrQgSyscFQss
+V8tHm8mnq8XgkrK0UnPY1gmfdkGId9+ZvEoSmJPoUzaQnjzaVbMs9qo2gzPVRmLF
+7hhaQenmyCC/SwmRkdQoSjYGyRWy9IEK+Mbf298RXwTQsD5lOfpGVqqSGZchTlqN
+3gO9QEJST8ZfjooPpXV5/5MPCzalEscml8dZafAa7gMCtgKIUB2OLep6203yA+ZF
+ntVXHX4WhOP3jrBrevc75qbnsjkh3HB216k5enjx4rdCW7C5w9agoj7rk6OqmnT2
+927Nfz64AHCasntphJXPbBveoPJQTbxPXzVhvhcBiPN7qozIMuvOptHTQLqk12VV
+oVuI+2rtj+yYupVlZdK4YekdFTC6RgPQxob6D8BYAnpW/g3OdypPW2SIkPpa7+DH
+/95x7N00Q2Lwd08TBlvOHG8B4RAkb8NnH31hqgOK7PXNqKmvi1cotroOqIC1xA4I
+nz/me5QGfOpfSCjsZ7OHTmBUcnxuDs8B4l3joEO4Ssv6R7O85Yf9+B0xZ6wTcHg4
+pnIcSpNjJzbc0zI+GD/eWdZ9HGoFgFAb1L00qmdkHC8vBt1fOjgjWbudBxgEWkao
+jQEQANfPkhPVbyq2PLaZ6fFXd2ZFLtRCBzz5OxbUejEFIDAzHOVuqKqRMJq808vm
+q2XwzXsjvKsmkb67CkDUb6H5rU+qe01FBHGPLVwctR44PYyOEB7TlkI6EmRjNiun
+aihfn15kSv2C0uAeE+52AonUAnj18dWQJCGwXZ+LYeS4BFb8JsRydFeUMqPeEpwW
+06EZz9h7Xc+BCqXeoFtPs/zmH3IS07mH3uWO7pqRzLXE5UsuSFc/Vhs6CjxO7gHJ
+RKqPNphucjGBzERA9RDJw0udcdsAgwle+YmOdG4WYN7/4jDosjWwiZ7ttr8pzkPt
+OPmXJowChlGwr1oet5hHPX994zsgZZTRgYuogoRKVC5bQ9ijCz1sqkswAqZka4ZO
+nlY3yIagbPK/IT6rPI2FwzbgvkVGZpAoovt1Aw3DDJ5nD0svwKM6SPh5P8Dspb5R
+mG2B3QOzvncyB8ImopfXQDyu676TUGc2+T0uLxD3Cpc57meoG7JLjbwi2jEBjE25
+fWNSz7kcPsMT3IzjkxoyYMdeKsOC0Wdq0RlT6EFotMLOA2Rnu1Tfh2vjpfTD2cQp
+kZxiNRqrnUh+LnHqCu9YN6CyNFT92cfAK2xIMoO2B2RJByIonwtjUydrniZdXj45
+IpzyVLA0qHLgcYDWO/cRAzbRO3Oazuha7gmif3X1CKaEZTOZABEBAAEAD/0QZntr
+AJvkMqQDsB0q7yhz+sXKXCKJg/A1YIbRAwXKm+vHf29tF5UKbAIAG21tlQ1B3SSj
+8LhVNrNwBfozeeetkklbWnzHYNKD5EDwWmT1BuvF3UhXNpYPZR8TVgjs0ggosnWk
+yoRvgzb6YXijvvCZftP2v0TmVC09PWipABdWVpm0m/US8xXJGwyDf6mWsyvhf03m
+Vx+3HLzHdlO5ivHF/RUezZWcZjkO6+MTHN2G/INYsV0VZcWsMRxdwYzzauhC0RaN
+BBiWRvBzauh+7n4InwNA8E6FjAWgQxjwAXalRwhvU5VAdmoI9iqbwg3udnSNDHkR
+gVxGEeexDcLoQCnHK1RQr8QnO1Pr5sUHlc5bBE1piG41cca0CvsZHGv+wnlWIw9y
+rvk3LWnLLKb86yU4ahLEL/VT8znUK3P/BqWiVcyVqUH8Pe0XlBGlvO7o5Wmc12F9
+wlVvy1W94GLUvMiaexnGJDotJwMYuq2lgLh6e+rHGOjmp5N2OuGk+0Va2EOkVuEb
+nrWRqk7AfUWNjA+b4mRBG+EyabraOULUqWBqKdC82UqNwDCvO78zqq6hHbDCGs8M
+BQ6UuCtO3vOPHUmsVpZorgLWa+jw2fR8lL4T8Ite1EB2p45R/QWcNhWV5FyEV0a9
+ndm7kbH/KDKQ92K7BIbBF7KW5YbF5rTqs/18HQgA37+Szi3zcPKxbiCCrSeM2BYG
+2s061pc+qpPFvt/litJgT5Tyx1m7l3Tah4m1BNW0K6CASLY/GultJTigRpE6CHcQ
+C9O2pDqzbvxsWUnj1u6InyfPA9EgxFgFeG8vVfH9NavCGKGIW4E07VUb8La5JfL4
+DD98xOHP2XHfuBjd2Bw0DmO8ZopvXr82wKK1R7ROCrsWZ30wGOPOkXnBYp+nAApd
+E5dZQnmXEzru6S15l9PsVJrXR1ZB1hybdrnaHJYNXCp+sv9LTujIuCCCrV9DK33h
+z/dDjNZabTW3TOweom2b5RF360IJ1RrrWQMakpwv5uoq3G5UX9JYi/EVajSwpQgA
+9usZVzncGh48g6qmlkSEpKM1+Dibg84hdrbHHlEwraRVoKCIrHoxQKnaGFl+DGgz
+qLWKS/yW1bS5MXp6dZijXADquvXWa7YUIE8tLfmbGPxSBQkNTfKr2OgUiryoFvIo
++MfYw5GT20EwYt7y6HJo9qnzIEWufl5V36Ep9W7hosCLblsO6SADl94ZB2qqCGNM
+LCFb8RYEc4hHOr2bgF2xoYF29kasW8AmEZNCYetpw3xGl/S0msa9b46DdxGHm8sG
+2SWaDAK7l+cFrdKaAud+A49oWPTPQMYqqWdSvG/tUf5NZf4FDsYdCM03wnu/bvWQ
+TZzBTxJgexoUsdsPKh9w5QgAy0QTv37ejCCqMXTp3J3FIkWU+UmZNbvvhpyKk86i
+vpuMMqdAzGxaHikFOIlkz/kxdP21qac2fR1ovSs0jsZcTMXOdKwsjNRSEho3DAb5
+OBv4mD6W3+PyatTHXn+lRN1ISugXrQjRqz63SPXSBl/0jvgu7ix51OFGkh1k2UYv
++AEJb3MqSzjiRLDoEpJ+DHORP5QkuX3jNDzNw7nXvPzV2RrMjm6RBmlzV15JPDeN
+pNCuhiG/fik+EhZyvRvEGWcj6267t41uDrX3bxUGT7xiRbRQ/QAYC3nRXOZTlum2
+hEf7rirY99AHPdAw/N8SbODGh/dVoMkJiQoKjmWwF+39n4C4iQI2BBgBCgAgFiEE
+qamPGtdfHeSi3gegXZZS+E2qVS4FAlpGqI0CGwwACgkQXZZS+E2qVS7u3A/+LXfx
+znUvlLskZak+y0cLZx8ddYNKVppS+KcXYd2xl4gxqNpfweNcYVYYUM5SOm63Imn1
+jet/VcPcBCbJIqldt7sqAgxID36GkBa4cHVlgRN69Ihng81SOaIQ4gbPt774ji04
+oTQd5nVwd9F8ficVpVILAy6eVuYRPNBe1D9vp14YGLNdSdKNQNCjnmZQjFJf+GYW
+sGH6wwCb3f6N8/z8eq2JJVx53JpjMpzVSQaetzw6dEmV/p8wNms7eJC96LeVcmRX
+kdlTQmzj3a7Yy8p2lywZ6DDQsfqQ4e+WZKAbHmSuE1H2wLOCJ5ar7N9L4dPUtUNN
+fcf+sXy+N5NLftf6Pe0L8g6VQ93f/2Q6YASW/qL1ybQOsRV0JfKOc8nISdJRItoV
+m9lOgJz+xX/x/p2SBp+JemFBkK/dZEgUH4xkgX462fJRWRsD6/4DMHik+giE0F5h
+lw1ZOT7jcM0sdCx+0za/0QTstAI3NmM9cYeFH4PqknaAp44/8XUZxGJ4lfVEetT6
+ltxzY/mA3BGytyxjLTi43JMwYL6rV5zSipEBW/oFdeekF8+FTI3cOzW5GbLkgXW+
+q6o/DyDv0VxOvkFunLai1HCt4rd1htVyMAOBFIriD1fKR0d6WCPIzVQkAwATG060
+cDKvGDix9eYLWpr9saaDAb/CMSItu2/wVNBUjHQ=
+=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-----
+
+mQINBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+tBtEdW1teSBLZXkgZm9yIExpbnRpYW4gVGVzdHOJAk4EEwEKADgWIQSpqY8a118d
+5KLeB6BdllL4TapVLgUCWkaojQIbAwULCQgHAwUVCgkICwUWAwIBAAIeAQIXgAAK
+CRBdllL4TapVLmmID/4mdteb8/iqcwFNmLZ41w3RpdWoEZj803806TzsaC9GbG5i
+qMh6gucQ2Go+lvCVaGlrb8zW74trQb9yhGJ4Z3Uvdo6VxccGsCbntOQRiy22tCBL
+KxwVCyxXy0ebyaerxeCSsrRSc9jWCZ92QYh335m8ShKYk+hTNpCePNpVsyz2qjaD
+M9VGYsXuGFpB6ebIIL9LCZGR1ChKNgbJFbL0gQr4xt/b3xFfBNCwPmU5+kZWqpIZ
+lyFOWo3eA71AQlJPxl+Oig+ldXn/kw8LNqUSxyaXx1lp8BruAwK2AohQHY4t6nrb
+TfID5kWe1VcdfhaE4/eOsGt69zvmpueyOSHccHbXqTl6ePHit0JbsLnD1qCiPuuT
+o6qadPb3bs1/PrgAcJqye2mElc9sG96g8lBNvE9fNWG+FwGI83uqjMgy686m0dNA
+uqTXZVWhW4j7au2P7Ji6lWVl0rhh6R0VMLpGA9DGhvoPwFgCelb+Dc53Kk9bZIiQ
++lrv4Mf/3nHs3TRDYvB3TxMGW84cbwHhECRvw2cffWGqA4rs9c2oqa+LVyi2ug6o
+gLXEDgifP+Z7lAZ86l9IKOxns4dOYFRyfG4OzwHiXeOgQ7hKy/pHs7zlh/34HTFn
+rBNweDimchxKk2MnNtzTMj4YP95Z1n0cagWAUBvUvTSqZ2QcLy8G3V86OCNZu7kC
+DQRaRqiNARAA18+SE9VvKrY8tpnp8Vd3ZkUu1EIHPPk7FtR6MQUgMDMc5W6oqpEw
+mrzTy+arZfDNeyO8qyaRvrsKQNRvofmtT6p7TUUEcY8tXBy1Hjg9jI4QHtOWQjoS
+ZGM2K6dqKF+fXmRK/YLS4B4T7nYCidQCePXx1ZAkIbBdn4th5LgEVvwmxHJ0V5Qy
+o94SnBbToRnP2Htdz4EKpd6gW0+z/OYfchLTuYfe5Y7umpHMtcTlSy5IVz9WGzoK
+PE7uAclEqo82mG5yMYHMRED1EMnDS51x2wCDCV75iY50bhZg3v/iMOiyNbCJnu22
+vynOQ+04+ZcmjAKGUbCvWh63mEc9f33jOyBllNGBi6iChEpULltD2KMLPWyqSzAC
+pmRrhk6eVjfIhqBs8r8hPqs8jYXDNuC+RUZmkCii+3UDDcMMnmcPSy/AozpI+Hk/
+wOylvlGYbYHdA7O+dzIHwiail9dAPK7rvpNQZzb5PS4vEPcKlznuZ6gbskuNvCLa
+MQGMTbl9Y1LPuRw+wxPcjOOTGjJgx14qw4LRZ2rRGVPoQWi0ws4DZGe7VN+Ha+Ol
+9MPZxCmRnGI1GqudSH4uceoK71g3oLI0VP3Zx8ArbEgyg7YHZEkHIiifC2NTJ2ue
+Jl1ePjkinPJUsDSocuBxgNY79xEDNtE7c5rO6FruCaJ/dfUIpoRlM5kAEQEAAYkC
+NgQYAQoAIBYhBKmpjxrXXx3kot4HoF2WUvhNqlUuBQJaRqiNAhsMAAoJEF2WUvhN
+qlUu7twP/i138c51L5S7JGWpPstHC2cfHXWDSlaaUvinF2HdsZeIMajaX8HjXGFW
+GFDOUjputyJp9Y3rf1XD3AQmySKpXbe7KgIMSA9+hpAWuHB1ZYETevSIZ4PNUjmi
+EOIGz7e++I4tOKE0HeZ1cHfRfH4nFaVSCwMunlbmETzQXtQ/b6deGBizXUnSjUDQ
+o55mUIxSX/hmFrBh+sMAm93+jfP8/HqtiSVcedyaYzKc1UkGnrc8OnRJlf6fMDZr
+O3iQvei3lXJkV5HZU0Js492u2MvKdpcsGegw0LH6kOHvlmSgGx5krhNR9sCzgieW
+q+zfS+HT1LVDTX3H/rF8vjeTS37X+j3tC/IOlUPd3/9kOmAElv6i9cm0DrEVdCXy
+jnPJyEnSUSLaFZvZToCc/sV/8f6dkgafiXphQZCv3WRIFB+MZIF+OtnyUVkbA+v+
+AzB4pPoIhNBeYZcNWTk+43DNLHQsftM2v9EE7LQCNzZjPXGHhR+D6pJ2gKeOP/F1
+GcRieJX1RHrU+pbcc2P5gNwRsrcsYy04uNyTMGC+q1ec0oqRAVv6BXXnpBfPhUyN
+3Ds1uRmy5IF1vquqPw8g79FcTr5Bbpy2otRwreK3dYbVcjADgRSK4g9XykdHelgj
+yM1UJAMAExtOtHAyrxg4sfXmC1qa/bGmgwG/wjEiLbtv8FTQVIx0
+=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-----
+
+lQcYBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+AA/9GeDHRGORYiXwTtCTes4v+1Jko9Z7BKIHPBcb0l4YIOeKSMyqGRV4D866u9Z+
+BUImKhRseUsjYpZ+2OgXlQjWbF0Oli7Fhis7ATjmbW2Q/cvgObXBHGZMIna3wa/9
+vVH8I1IdyrgAL9Ge2uO9YcQ92G9LqvRH+FlvUEn4bGr920HxPf9y8QDN4PrAXV4l
+F0oxWq+tfncb44eO7/9tKaQgUzpNGcg5KtHtFtUi8eMcbcnbytgUiNB0HnzRbhzJ
+XsHCBTkJAAYGNBYd6/ZZ4jxI6bhaggsbT14xwbjAAy6dskCniFamhW8dkr36mRYl
+onVyAd1qbaVjCo3yE8lebAou2I6nEhdLfUcDxJ/htx0Du/rpSBq1RBmRErr8v8uL
+m62B8Twcn4GQX2WPsBpNRtpeb9R+So4LBg4Y4btMMUJ1P7vJOHUvYngsbPNImUmo
+rirpl01z27x3Ss1G1ruN5QEAHGWHK3/XmLjsajsuPmyw3xH3IfVLUAZktyE82IJ9
+eOWBaK3hCrxEZV9cHiY/zk8FimR/glmVY1jKphVnAmXQk05hCEASDo3T4i14J1jY
+D642xTAoUytpFaGa85HLXiVlv84VATQ/WYCgz4nIgoZO5fgPY1ndVEppfVU7PBRD
+1ZmNpQ3L3nQdtsYLTGdTboscpBSkenIkGj9WN+jdkTjTZrkIAMKaj9NJlzfp8IgP
+q7OeAmg3fbfsXo4BgNqph5aMDsWwBb2NnQZ7pjXwiLRZDfFFnsigpiDoEHvz/M+2
+qy9MPmVEHVvXtrucngkz1a+UFuYbmD3SWT6cLPln7ceGyDyz7CewbEPrv2nZcDVD
+7/r3wt8S/fyd69rBqPugIq4ICA3PBwCdOOOodwr0wUEID/Wb9969Ksmlaso/iBhb
+Vgqj6YRf0qSFdICdc1cx+seHvuafs/ltiy3wYU64+Mqu7LtWF/VtArvlSJNziPWR
+i/ud+1JEmdx+ud6V3c7+/31+qajA9bHKYlCaT9aeM3N+SP1cX1+Sg1xERa8a0qPc
+iA+iF5MIAOYNG77+MP2YA0fVHX43CQZi90YUdKH5c6iJb99uJkf5yiAz61vcGX2V
+xGG3TmqzEm7pqaokkhfRtYs4xksqCFprokdcj/uPyTWh9La9Pv2pfKyTeoEfkC5r
+XGob18RoIWj5cn5h0SYSWSX9St/YjsopYdAanN9zp6jyh8sMd7hivxRDFZdKsJdl
+XLjxFCcWqdTyz0TTgydcRhelnp62e3dgFQj1Q0rsQT3LJNAJSc0Y19ly6lDnCnBP
++0QPAUmYRxdQm2nubtZ6f2TgOMWGeIBxaPL+/lJ5PlA7nDehcyQr88dljaae/FBJ
+KrWRToQn17O8Ri+GgqvR77Ym+R4Kfx8H/RqjMFKN0e7yGZXB6eIU5V8wBOq9Nm7A
+GyoE6wKLfk11LPWwBEpEKUrmGntQRCSc4tYm4dS14HtLmtjLQF6mTbIRhvDzn2ik
+1PNO7wmKQxj9Gk2CrvuSitavzwuqhepeVKNQfRySHyqp6oB3lM5JrB+5No2nJnya
+svpRmou7QWtHjQnQ+/WPSQVIXifIbEtuHEO5phD7rjg8RdtgiefTQCaVu3zYSQOs
+MvqO3hC3MkBzV0B204n8H3eC5PGgDulvmhmNwVrRzOWxO2zByCgEErV5J1UteNP8
+C5DgihUMbI/ocuVvXiornyx2yRzmfSFsQQIfQJnB/XY0h7+SRD3i39x6lbQbRHVt
+bXkgS2V5IGZvciBMaW50aWFuIFRlc3RziQJOBBMBCgA4FiEEqamPGtdfHeSi3geg
+XZZS+E2qVS4FAlpGqI0CGwMFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AACgkQXZZS
++E2qVS5piA/+JnbXm/P4qnMBTZi2eNcN0aXVqBGY/NN/NOk87GgvRmxuYqjIeoLn
+ENhqPpbwlWhpa2/M1u+La0G/coRieGd1L3aOlcXHBrAm57TkEYsttrQgSyscFQss
+V8tHm8mnq8XgkrK0UnPY1gmfdkGId9+ZvEoSmJPoUzaQnjzaVbMs9qo2gzPVRmLF
+7hhaQenmyCC/SwmRkdQoSjYGyRWy9IEK+Mbf298RXwTQsD5lOfpGVqqSGZchTlqN
+3gO9QEJST8ZfjooPpXV5/5MPCzalEscml8dZafAa7gMCtgKIUB2OLep6203yA+ZF
+ntVXHX4WhOP3jrBrevc75qbnsjkh3HB216k5enjx4rdCW7C5w9agoj7rk6OqmnT2
+927Nfz64AHCasntphJXPbBveoPJQTbxPXzVhvhcBiPN7qozIMuvOptHTQLqk12VV
+oVuI+2rtj+yYupVlZdK4YekdFTC6RgPQxob6D8BYAnpW/g3OdypPW2SIkPpa7+DH
+/95x7N00Q2Lwd08TBlvOHG8B4RAkb8NnH31hqgOK7PXNqKmvi1cotroOqIC1xA4I
+nz/me5QGfOpfSCjsZ7OHTmBUcnxuDs8B4l3joEO4Ssv6R7O85Yf9+B0xZ6wTcHg4
+pnIcSpNjJzbc0zI+GD/eWdZ9HGoFgFAb1L00qmdkHC8vBt1fOjgjWbudBxgEWkao
+jQEQANfPkhPVbyq2PLaZ6fFXd2ZFLtRCBzz5OxbUejEFIDAzHOVuqKqRMJq808vm
+q2XwzXsjvKsmkb67CkDUb6H5rU+qe01FBHGPLVwctR44PYyOEB7TlkI6EmRjNiun
+aihfn15kSv2C0uAeE+52AonUAnj18dWQJCGwXZ+LYeS4BFb8JsRydFeUMqPeEpwW
+06EZz9h7Xc+BCqXeoFtPs/zmH3IS07mH3uWO7pqRzLXE5UsuSFc/Vhs6CjxO7gHJ
+RKqPNphucjGBzERA9RDJw0udcdsAgwle+YmOdG4WYN7/4jDosjWwiZ7ttr8pzkPt
+OPmXJowChlGwr1oet5hHPX994zsgZZTRgYuogoRKVC5bQ9ijCz1sqkswAqZka4ZO
+nlY3yIagbPK/IT6rPI2FwzbgvkVGZpAoovt1Aw3DDJ5nD0svwKM6SPh5P8Dspb5R
+mG2B3QOzvncyB8ImopfXQDyu676TUGc2+T0uLxD3Cpc57meoG7JLjbwi2jEBjE25
+fWNSz7kcPsMT3IzjkxoyYMdeKsOC0Wdq0RlT6EFotMLOA2Rnu1Tfh2vjpfTD2cQp
+kZxiNRqrnUh+LnHqCu9YN6CyNFT92cfAK2xIMoO2B2RJByIonwtjUydrniZdXj45
+IpzyVLA0qHLgcYDWO/cRAzbRO3Oazuha7gmif3X1CKaEZTOZABEBAAEAD/0QZntr
+AJvkMqQDsB0q7yhz+sXKXCKJg/A1YIbRAwXKm+vHf29tF5UKbAIAG21tlQ1B3SSj
+8LhVNrNwBfozeeetkklbWnzHYNKD5EDwWmT1BuvF3UhXNpYPZR8TVgjs0ggosnWk
+yoRvgzb6YXijvvCZftP2v0TmVC09PWipABdWVpm0m/US8xXJGwyDf6mWsyvhf03m
+Vx+3HLzHdlO5ivHF/RUezZWcZjkO6+MTHN2G/INYsV0VZcWsMRxdwYzzauhC0RaN
+BBiWRvBzauh+7n4InwNA8E6FjAWgQxjwAXalRwhvU5VAdmoI9iqbwg3udnSNDHkR
+gVxGEeexDcLoQCnHK1RQr8QnO1Pr5sUHlc5bBE1piG41cca0CvsZHGv+wnlWIw9y
+rvk3LWnLLKb86yU4ahLEL/VT8znUK3P/BqWiVcyVqUH8Pe0XlBGlvO7o5Wmc12F9
+wlVvy1W94GLUvMiaexnGJDotJwMYuq2lgLh6e+rHGOjmp5N2OuGk+0Va2EOkVuEb
+nrWRqk7AfUWNjA+b4mRBG+EyabraOULUqWBqKdC82UqNwDCvO78zqq6hHbDCGs8M
+BQ6UuCtO3vOPHUmsVpZorgLWa+jw2fR8lL4T8Ite1EB2p45R/QWcNhWV5FyEV0a9
+ndm7kbH/KDKQ92K7BIbBF7KW5YbF5rTqs/18HQgA37+Szi3zcPKxbiCCrSeM2BYG
+2s061pc+qpPFvt/litJgT5Tyx1m7l3Tah4m1BNW0K6CASLY/GultJTigRpE6CHcQ
+C9O2pDqzbvxsWUnj1u6InyfPA9EgxFgFeG8vVfH9NavCGKGIW4E07VUb8La5JfL4
+DD98xOHP2XHfuBjd2Bw0DmO8ZopvXr82wKK1R7ROCrsWZ30wGOPOkXnBYp+nAApd
+E5dZQnmXEzru6S15l9PsVJrXR1ZB1hybdrnaHJYNXCp+sv9LTujIuCCCrV9DK33h
+z/dDjNZabTW3TOweom2b5RF360IJ1RrrWQMakpwv5uoq3G5UX9JYi/EVajSwpQgA
+9usZVzncGh48g6qmlkSEpKM1+Dibg84hdrbHHlEwraRVoKCIrHoxQKnaGFl+DGgz
+qLWKS/yW1bS5MXp6dZijXADquvXWa7YUIE8tLfmbGPxSBQkNTfKr2OgUiryoFvIo
++MfYw5GT20EwYt7y6HJo9qnzIEWufl5V36Ep9W7hosCLblsO6SADl94ZB2qqCGNM
+LCFb8RYEc4hHOr2bgF2xoYF29kasW8AmEZNCYetpw3xGl/S0msa9b46DdxGHm8sG
+2SWaDAK7l+cFrdKaAud+A49oWPTPQMYqqWdSvG/tUf5NZf4FDsYdCM03wnu/bvWQ
+TZzBTxJgexoUsdsPKh9w5QgAy0QTv37ejCCqMXTp3J3FIkWU+UmZNbvvhpyKk86i
+vpuMMqdAzGxaHikFOIlkz/kxdP21qac2fR1ovSs0jsZcTMXOdKwsjNRSEho3DAb5
+OBv4mD6W3+PyatTHXn+lRN1ISugXrQjRqz63SPXSBl/0jvgu7ix51OFGkh1k2UYv
++AEJb3MqSzjiRLDoEpJ+DHORP5QkuX3jNDzNw7nXvPzV2RrMjm6RBmlzV15JPDeN
+pNCuhiG/fik+EhZyvRvEGWcj6267t41uDrX3bxUGT7xiRbRQ/QAYC3nRXOZTlum2
+hEf7rirY99AHPdAw/N8SbODGh/dVoMkJiQoKjmWwF+39n4C4iQI2BBgBCgAgFiEE
+qamPGtdfHeSi3gegXZZS+E2qVS4FAlpGqI0CGwwACgkQXZZS+E2qVS7u3A/+LXfx
+znUvlLskZak+y0cLZx8ddYNKVppS+KcXYd2xl4gxqNpfweNcYVYYUM5SOm63Imn1
+jet/VcPcBCbJIqldt7sqAgxID36GkBa4cHVlgRN69Ihng81SOaIQ4gbPt774ji04
+oTQd5nVwd9F8ficVpVILAy6eVuYRPNBe1D9vp14YGLNdSdKNQNCjnmZQjFJf+GYW
+sGH6wwCb3f6N8/z8eq2JJVx53JpjMpzVSQaetzw6dEmV/p8wNms7eJC96LeVcmRX
+kdlTQmzj3a7Yy8p2lywZ6DDQsfqQ4e+WZKAbHmSuE1H2wLOCJ5ar7N9L4dPUtUNN
+fcf+sXy+N5NLftf6Pe0L8g6VQ93f/2Q6YASW/qL1ybQOsRV0JfKOc8nISdJRItoV
+m9lOgJz+xX/x/p2SBp+JemFBkK/dZEgUH4xkgX462fJRWRsD6/4DMHik+giE0F5h
+lw1ZOT7jcM0sdCx+0za/0QTstAI3NmM9cYeFH4PqknaAp44/8XUZxGJ4lfVEetT6
+ltxzY/mA3BGytyxjLTi43JMwYL6rV5zSipEBW/oFdeekF8+FTI3cOzW5GbLkgXW+
+q6o/DyDv0VxOvkFunLai1HCt4rd1htVyMAOBFIriD1fKR0d6WCPIzVQkAwATG060
+cDKvGDix9eYLWpr9saaDAb/CMSItu2/wVNBUjHQ=
+=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-----
+
+mQINBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+tBtEdW1teSBLZXkgZm9yIExpbnRpYW4gVGVzdHOJAk4EEwEKADgWIQSpqY8a118d
+5KLeB6BdllL4TapVLgUCWkaojQIbAwULCQgHAwUVCgkICwUWAwIBAAIeAQIXgAAK
+CRBdllL4TapVLmmID/4mdteb8/iqcwFNmLZ41w3RpdWoEZj803806TzsaC9GbG5i
+qMh6gucQ2Go+lvCVaGlrb8zW74trQb9yhGJ4Z3Uvdo6VxccGsCbntOQRiy22tCBL
+KxwVCyxXy0ebyaerxeCSsrRSc9jWCZ92QYh335m8ShKYk+hTNpCePNpVsyz2qjaD
+M9VGYsXuGFpB6ebIIL9LCZGR1ChKNgbJFbL0gQr4xt/b3xFfBNCwPmU5+kZWqpIZ
+lyFOWo3eA71AQlJPxl+Oig+ldXn/kw8LNqUSxyaXx1lp8BruAwK2AohQHY4t6nrb
+TfID5kWe1VcdfhaE4/eOsGt69zvmpueyOSHccHbXqTl6ePHit0JbsLnD1qCiPuuT
+o6qadPb3bs1/PrgAcJqye2mElc9sG96g8lBNvE9fNWG+FwGI83uqjMgy686m0dNA
+uqTXZVWhW4j7au2P7Ji6lWVl0rhh6R0VMLpGA9DGhvoPwFgCelb+Dc53Kk9bZIiQ
++lrv4Mf/3nHs3TRDYvB3TxMGW84cbwHhECRvw2cffWGqA4rs9c2oqa+LVyi2ug6o
+gLXEDgifP+Z7lAZ86l9IKOxns4dOYFRyfG4OzwHiXeOgQ7hKy/pHs7zlh/34HTFn
+rBNweDimchxKk2MnNtzTMj4YP95Z1n0cagWAUBvUvTSqZ2QcLy8G3V86OCNZu7kC
+DQRaRqiNARAA18+SE9VvKrY8tpnp8Vd3ZkUu1EIHPPk7FtR6MQUgMDMc5W6oqpEw
+mrzTy+arZfDNeyO8qyaRvrsKQNRvofmtT6p7TUUEcY8tXBy1Hjg9jI4QHtOWQjoS
+ZGM2K6dqKF+fXmRK/YLS4B4T7nYCidQCePXx1ZAkIbBdn4th5LgEVvwmxHJ0V5Qy
+o94SnBbToRnP2Htdz4EKpd6gW0+z/OYfchLTuYfe5Y7umpHMtcTlSy5IVz9WGzoK
+PE7uAclEqo82mG5yMYHMRED1EMnDS51x2wCDCV75iY50bhZg3v/iMOiyNbCJnu22
+vynOQ+04+ZcmjAKGUbCvWh63mEc9f33jOyBllNGBi6iChEpULltD2KMLPWyqSzAC
+pmRrhk6eVjfIhqBs8r8hPqs8jYXDNuC+RUZmkCii+3UDDcMMnmcPSy/AozpI+Hk/
+wOylvlGYbYHdA7O+dzIHwiail9dAPK7rvpNQZzb5PS4vEPcKlznuZ6gbskuNvCLa
+MQGMTbl9Y1LPuRw+wxPcjOOTGjJgx14qw4LRZ2rRGVPoQWi0ws4DZGe7VN+Ha+Ol
+9MPZxCmRnGI1GqudSH4uceoK71g3oLI0VP3Zx8ArbEgyg7YHZEkHIiifC2NTJ2ue
+Jl1ePjkinPJUsDSocuBxgNY79xEDNtE7c5rO6FruCaJ/dfUIpoRlM5kAEQEAAYkC
+NgQYAQoAIBYhBKmpjxrXXx3kot4HoF2WUvhNqlUuBQJaRqiNAhsMAAoJEF2WUvhN
+qlUu7twP/i138c51L5S7JGWpPstHC2cfHXWDSlaaUvinF2HdsZeIMajaX8HjXGFW
+GFDOUjputyJp9Y3rf1XD3AQmySKpXbe7KgIMSA9+hpAWuHB1ZYETevSIZ4PNUjmi
+EOIGz7e++I4tOKE0HeZ1cHfRfH4nFaVSCwMunlbmETzQXtQ/b6deGBizXUnSjUDQ
+o55mUIxSX/hmFrBh+sMAm93+jfP8/HqtiSVcedyaYzKc1UkGnrc8OnRJlf6fMDZr
+O3iQvei3lXJkV5HZU0Js492u2MvKdpcsGegw0LH6kOHvlmSgGx5krhNR9sCzgieW
+q+zfS+HT1LVDTX3H/rF8vjeTS37X+j3tC/IOlUPd3/9kOmAElv6i9cm0DrEVdCXy
+jnPJyEnSUSLaFZvZToCc/sV/8f6dkgafiXphQZCv3WRIFB+MZIF+OtnyUVkbA+v+
+AzB4pPoIhNBeYZcNWTk+43DNLHQsftM2v9EE7LQCNzZjPXGHhR+D6pJ2gKeOP/F1
+GcRieJX1RHrU+pbcc2P5gNwRsrcsYy04uNyTMGC+q1ec0oqRAVv6BXXnpBfPhUyN
+3Ds1uRmy5IF1vquqPw8g79FcTr5Bbpy2otRwreK3dYbVcjADgRSK4g9XykdHelgj
+yM1UJAMAExtOtHAyrxg4sfXmC1qa/bGmgwG/wjEiLbtv8FTQVIx0
+=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-----
+
+lQcYBFpGqI0BEACu4NQonvU48n8mFo0M33/a5Ttz3Efh71BAJ3zlz8/TOLuI3jw7
+VFfHKUysJF8hAD+tE1ZdOYLROJSnOYGIzSUKYwO6c+3CCg/ZqzP1VdrQ4KQFb/Ie
+f+HSWvh2CqY7OmBU2OiiVle9UMsPiYlbpCClEL0QNN8gMFnLxHd75JthZnyy4rlR
++6QvUgZxrgW9WsVDVxANownWLBh8IRR1qPDvwYAHUhFKkxUwybizqSlcm+QJmu9k
+tHnSTgcm3MXBd+qk551odE/hfkjOONsBsaFyBDrFSE+t5EKEypCno4cEp7jb/8I7
+mGQlrvF09ZDUvLMPdBpET6HQMb+9/g1XZAQXWBS10rs0qXjBs3JNGCTKWoWhSVL+
+jbinOR1k9tUtiIF/JSFYMBRNjtxz48mKi4U8dddCwwNzkShCYg+BEePG6HgOk2oe
+DVuGi3sNWYpm03M0Cf/cGVpC2JJM2A9KZTy3gC4lsEa3YTpgBV7xVjp7cYsJLOSZ
+dJeNg3heHWAwqUVrC5O31vKQh7rt1nD/wjRHejEU2iVu7NtkmZ8R02czRroCNaTq
+yplirkk4v58yXTPpME9culjz+VXaXczDbzQXdMRbSlKTJLmBsMO2rhGBrjaMvhY/
+IJTU0Ngg5QH2nS3q/VshOPUOzGqFWa4hQsZzZobHL8k1hOifD49OdBDHzQARAQAB
+AA/9GeDHRGORYiXwTtCTes4v+1Jko9Z7BKIHPBcb0l4YIOeKSMyqGRV4D866u9Z+
+BUImKhRseUsjYpZ+2OgXlQjWbF0Oli7Fhis7ATjmbW2Q/cvgObXBHGZMIna3wa/9
+vVH8I1IdyrgAL9Ge2uO9YcQ92G9LqvRH+FlvUEn4bGr920HxPf9y8QDN4PrAXV4l
+F0oxWq+tfncb44eO7/9tKaQgUzpNGcg5KtHtFtUi8eMcbcnbytgUiNB0HnzRbhzJ
+XsHCBTkJAAYGNBYd6/ZZ4jxI6bhaggsbT14xwbjAAy6dskCniFamhW8dkr36mRYl
+onVyAd1qbaVjCo3yE8lebAou2I6nEhdLfUcDxJ/htx0Du/rpSBq1RBmRErr8v8uL
+m62B8Twcn4GQX2WPsBpNRtpeb9R+So4LBg4Y4btMMUJ1P7vJOHUvYngsbPNImUmo
+rirpl01z27x3Ss1G1ruN5QEAHGWHK3/XmLjsajsuPmyw3xH3IfVLUAZktyE82IJ9
+eOWBaK3hCrxEZV9cHiY/zk8FimR/glmVY1jKphVnAmXQk05hCEASDo3T4i14J1jY
+D642xTAoUytpFaGa85HLXiVlv84VATQ/WYCgz4nIgoZO5fgPY1ndVEppfVU7PBRD
+1ZmNpQ3L3nQdtsYLTGdTboscpBSkenIkGj9WN+jdkTjTZrkIAMKaj9NJlzfp8IgP
+q7OeAmg3fbfsXo4BgNqph5aMDsWwBb2NnQZ7pjXwiLRZDfFFnsigpiDoEHvz/M+2
+qy9MPmVEHVvXtrucngkz1a+UFuYbmD3SWT6cLPln7ceGyDyz7CewbEPrv2nZcDVD
+7/r3wt8S/fyd69rBqPugIq4ICA3PBwCdOOOodwr0wUEID/Wb9969Ksmlaso/iBhb
+Vgqj6YRf0qSFdICdc1cx+seHvuafs/ltiy3wYU64+Mqu7LtWF/VtArvlSJNziPWR
+i/ud+1JEmdx+ud6V3c7+/31+qajA9bHKYlCaT9aeM3N+SP1cX1+Sg1xERa8a0qPc
+iA+iF5MIAOYNG77+MP2YA0fVHX43CQZi90YUdKH5c6iJb99uJkf5yiAz61vcGX2V
+xGG3TmqzEm7pqaokkhfRtYs4xksqCFprokdcj/uPyTWh9La9Pv2pfKyTeoEfkC5r
+XGob18RoIWj5cn5h0SYSWSX9St/YjsopYdAanN9zp6jyh8sMd7hivxRDFZdKsJdl
+XLjxFCcWqdTyz0TTgydcRhelnp62e3dgFQj1Q0rsQT3LJNAJSc0Y19ly6lDnCnBP
++0QPAUmYRxdQm2nubtZ6f2TgOMWGeIBxaPL+/lJ5PlA7nDehcyQr88dljaae/FBJ
+KrWRToQn17O8Ri+GgqvR77Ym+R4Kfx8H/RqjMFKN0e7yGZXB6eIU5V8wBOq9Nm7A
+GyoE6wKLfk11LPWwBEpEKUrmGntQRCSc4tYm4dS14HtLmtjLQF6mTbIRhvDzn2ik
+1PNO7wmKQxj9Gk2CrvuSitavzwuqhepeVKNQfRySHyqp6oB3lM5JrB+5No2nJnya
+svpRmou7QWtHjQnQ+/WPSQVIXifIbEtuHEO5phD7rjg8RdtgiefTQCaVu3zYSQOs
+MvqO3hC3MkBzV0B204n8H3eC5PGgDulvmhmNwVrRzOWxO2zByCgEErV5J1UteNP8
+C5DgihUMbI/ocuVvXiornyx2yRzmfSFsQQIfQJnB/XY0h7+SRD3i39x6lbQbRHVt
+bXkgS2V5IGZvciBMaW50aWFuIFRlc3RziQJOBBMBCgA4FiEEqamPGtdfHeSi3geg
+XZZS+E2qVS4FAlpGqI0CGwMFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AACgkQXZZS
++E2qVS5piA/+JnbXm/P4qnMBTZi2eNcN0aXVqBGY/NN/NOk87GgvRmxuYqjIeoLn
+ENhqPpbwlWhpa2/M1u+La0G/coRieGd1L3aOlcXHBrAm57TkEYsttrQgSyscFQss
+V8tHm8mnq8XgkrK0UnPY1gmfdkGId9+ZvEoSmJPoUzaQnjzaVbMs9qo2gzPVRmLF
+7hhaQenmyCC/SwmRkdQoSjYGyRWy9IEK+Mbf298RXwTQsD5lOfpGVqqSGZchTlqN
+3gO9QEJST8ZfjooPpXV5/5MPCzalEscml8dZafAa7gMCtgKIUB2OLep6203yA+ZF
+ntVXHX4WhOP3jrBrevc75qbnsjkh3HB216k5enjx4rdCW7C5w9agoj7rk6OqmnT2
+927Nfz64AHCasntphJXPbBveoPJQTbxPXzVhvhcBiPN7qozIMuvOptHTQLqk12VV
+oVuI+2rtj+yYupVlZdK4YekdFTC6RgPQxob6D8BYAnpW/g3OdypPW2SIkPpa7+DH
+/95x7N00Q2Lwd08TBlvOHG8B4RAkb8NnH31hqgOK7PXNqKmvi1cotroOqIC1xA4I
+nz/me5QGfOpfSCjsZ7OHTmBUcnxuDs8B4l3joEO4Ssv6R7O85Yf9+B0xZ6wTcHg4
+pnIcSpNjJzbc0zI+GD/eWdZ9HGoFgFAb1L00qmdkHC8vBt1fOjgjWbudBxgEWkao
+jQEQANfPkhPVbyq2PLaZ6fFXd2ZFLtRCBzz5OxbUejEFIDAzHOVuqKqRMJq808vm
+q2XwzXsjvKsmkb67CkDUb6H5rU+qe01FBHGPLVwctR44PYyOEB7TlkI6EmRjNiun
+aihfn15kSv2C0uAeE+52AonUAnj18dWQJCGwXZ+LYeS4BFb8JsRydFeUMqPeEpwW
+06EZz9h7Xc+BCqXeoFtPs/zmH3IS07mH3uWO7pqRzLXE5UsuSFc/Vhs6CjxO7gHJ
+RKqPNphucjGBzERA9RDJw0udcdsAgwle+YmOdG4WYN7/4jDosjWwiZ7ttr8pzkPt
+OPmXJowChlGwr1oet5hHPX994zsgZZTRgYuogoRKVC5bQ9ijCz1sqkswAqZka4ZO
+nlY3yIagbPK/IT6rPI2FwzbgvkVGZpAoovt1Aw3DDJ5nD0svwKM6SPh5P8Dspb5R
+mG2B3QOzvncyB8ImopfXQDyu676TUGc2+T0uLxD3Cpc57meoG7JLjbwi2jEBjE25
+fWNSz7kcPsMT3IzjkxoyYMdeKsOC0Wdq0RlT6EFotMLOA2Rnu1Tfh2vjpfTD2cQp
+kZxiNRqrnUh+LnHqCu9YN6CyNFT92cfAK2xIMoO2B2RJByIonwtjUydrniZdXj45
+IpzyVLA0qHLgcYDWO/cRAzbRO3Oazuha7gmif3X1CKaEZTOZABEBAAEAD/0QZntr
+AJvkMqQDsB0q7yhz+sXKXCKJg/A1YIbRAwXKm+vHf29tF5UKbAIAG21tlQ1B3SSj
+8LhVNrNwBfozeeetkklbWnzHYNKD5EDwWmT1BuvF3UhXNpYPZR8TVgjs0ggosnWk
+yoRvgzb6YXijvvCZftP2v0TmVC09PWipABdWVpm0m/US8xXJGwyDf6mWsyvhf03m
+Vx+3HLzHdlO5ivHF/RUezZWcZjkO6+MTHN2G/INYsV0VZcWsMRxdwYzzauhC0RaN
+BBiWRvBzauh+7n4InwNA8E6FjAWgQxjwAXalRwhvU5VAdmoI9iqbwg3udnSNDHkR
+gVxGEeexDcLoQCnHK1RQr8QnO1Pr5sUHlc5bBE1piG41cca0CvsZHGv+wnlWIw9y
+rvk3LWnLLKb86yU4ahLEL/VT8znUK3P/BqWiVcyVqUH8Pe0XlBGlvO7o5Wmc12F9
+wlVvy1W94GLUvMiaexnGJDotJwMYuq2lgLh6e+rHGOjmp5N2OuGk+0Va2EOkVuEb
+nrWRqk7AfUWNjA+b4mRBG+EyabraOULUqWBqKdC82UqNwDCvO78zqq6hHbDCGs8M
+BQ6UuCtO3vOPHUmsVpZorgLWa+jw2fR8lL4T8Ite1EB2p45R/QWcNhWV5FyEV0a9
+ndm7kbH/KDKQ92K7BIbBF7KW5YbF5rTqs/18HQgA37+Szi3zcPKxbiCCrSeM2BYG
+2s061pc+qpPFvt/litJgT5Tyx1m7l3Tah4m1BNW0K6CASLY/GultJTigRpE6CHcQ
+C9O2pDqzbvxsWUnj1u6InyfPA9EgxFgFeG8vVfH9NavCGKGIW4E07VUb8La5JfL4
+DD98xOHP2XHfuBjd2Bw0DmO8ZopvXr82wKK1R7ROCrsWZ30wGOPOkXnBYp+nAApd
+E5dZQnmXEzru6S15l9PsVJrXR1ZB1hybdrnaHJYNXCp+sv9LTujIuCCCrV9DK33h
+z/dDjNZabTW3TOweom2b5RF360IJ1RrrWQMakpwv5uoq3G5UX9JYi/EVajSwpQgA
+9usZVzncGh48g6qmlkSEpKM1+Dibg84hdrbHHlEwraRVoKCIrHoxQKnaGFl+DGgz
+qLWKS/yW1bS5MXp6dZijXADquvXWa7YUIE8tLfmbGPxSBQkNTfKr2OgUiryoFvIo
++MfYw5GT20EwYt7y6HJo9qnzIEWufl5V36Ep9W7hosCLblsO6SADl94ZB2qqCGNM
+LCFb8RYEc4hHOr2bgF2xoYF29kasW8AmEZNCYetpw3xGl/S0msa9b46DdxGHm8sG
+2SWaDAK7l+cFrdKaAud+A49oWPTPQMYqqWdSvG/tUf5NZf4FDsYdCM03wnu/bvWQ
+TZzBTxJgexoUsdsPKh9w5QgAy0QTv37ejCCqMXTp3J3FIkWU+UmZNbvvhpyKk86i
+vpuMMqdAzGxaHikFOIlkz/kxdP21qac2fR1ovSs0jsZcTMXOdKwsjNRSEho3DAb5
+OBv4mD6W3+PyatTHXn+lRN1ISugXrQjRqz63SPXSBl/0jvgu7ix51OFGkh1k2UYv
++AEJb3MqSzjiRLDoEpJ+DHORP5QkuX3jNDzNw7nXvPzV2RrMjm6RBmlzV15JPDeN
+pNCuhiG/fik+EhZyvRvEGWcj6267t41uDrX3bxUGT7xiRbRQ/QAYC3nRXOZTlum2
+hEf7rirY99AHPdAw/N8SbODGh/dVoMkJiQoKjmWwF+39n4C4iQI2BBgBCgAgFiEE
+qamPGtdfHeSi3gegXZZS+E2qVS4FAlpGqI0CGwwACgkQXZZS+E2qVS7u3A/+LXfx
+znUvlLskZak+y0cLZx8ddYNKVppS+KcXYd2xl4gxqNpfweNcYVYYUM5SOm63Imn1
+jet/VcPcBCbJIqldt7sqAgxID36GkBa4cHVlgRN69Ihng81SOaIQ4gbPt774ji04
+oTQd5nVwd9F8ficVpVILAy6eVuYRPNBe1D9vp14YGLNdSdKNQNCjnmZQjFJf+GYW
+sGH6wwCb3f6N8/z8eq2JJVx53JpjMpzVSQaetzw6dEmV/p8wNms7eJC96LeVcmRX
+kdlTQmzj3a7Yy8p2lywZ6DDQsfqQ4e+WZKAbHmSuE1H2wLOCJ5ar7N9L4dPUtUNN
+fcf+sXy+N5NLftf6Pe0L8g6VQ93f/2Q6YASW/qL1ybQOsRV0JfKOc8nISdJRItoV
+m9lOgJz+xX/x/p2SBp+JemFBkK/dZEgUH4xkgX462fJRWRsD6/4DMHik+giE0F5h
+lw1ZOT7jcM0sdCx+0za/0QTstAI3NmM9cYeFH4PqknaAp44/8XUZxGJ4lfVEetT6
+ltxzY/mA3BGytyxjLTi43JMwYL6rV5zSipEBW/oFdeekF8+FTI3cOzW5GbLkgXW+
+q6o/DyDv0VxOvkFunLai1HCt4rd1htVyMAOBFIriD1fKR0d6WCPIzVQkAwATG060
+cDKvGDix9eYLWpr9saaDAb/CMSItu2/wVNBUjHQ=
+=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
diff --git a/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/install b/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/install
new file mode 100644
index 0000000..fbf30f5
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/install
@@ -0,0 +1,2 @@
+debian/script /bin/
+debian/script /usr/bin
diff --git a/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/script b/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/script
new file mode 100755
index 0000000..0e930fe
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/debian/script
@@ -0,0 +1,2 @@
+#!/bin/sh
+true \ No newline at end of file
diff --git a/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/fill-values b/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/fill-values
new file mode 100644
index 0000000..24458eb
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-bin/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: usrmerge-bin
+Description: Check for file installed in /usr/bin /bin
diff --git a/t/recipes/checks/usrmerge/usrmerge-bin/eval/desc b/t/recipes/checks/usrmerge/usrmerge-bin/eval/desc
new file mode 100644
index 0000000..0fbab15
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-bin/eval/desc
@@ -0,0 +1,2 @@
+Testname: usrmerge-bin
+Check: usrmerge
diff --git a/t/recipes/checks/usrmerge/usrmerge-bin/eval/hints b/t/recipes/checks/usrmerge/usrmerge-bin/eval/hints
new file mode 100644
index 0000000..429f9fc
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-bin/eval/hints
@@ -0,0 +1 @@
+usrmerge-bin (binary): file-in-root-and-usr already in: usr/bin/script [bin/script]
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/compat.in b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/control.in b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/control.in
new file mode 100644
index 0000000..87597d3
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/control.in
@@ -0,0 +1,15 @@
+Source: [% $source %]
+Priority: optional
+Section: libs
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: libbasic2
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/rules b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/rules
new file mode 100644
index 0000000..b5970cb
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_movetousr:
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/fill-values b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/fill-values
new file mode 100644
index 0000000..2345c1a
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/fill-values
@@ -0,0 +1,6 @@
+Skeleton: upload-native
+Testname: usrmerge-lib
+Package-Architecture: any
+Default-Build-Depends: debhelper (>= 9.20151004~)
+Dh-Compat-Level: 9
+Description: Check for file installed in /usr/lib /lib
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/Makefile b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/Makefile
new file mode 100644
index 0000000..09936bd
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/Makefile
@@ -0,0 +1,14 @@
+all:
+ gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,--no-as-needed -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c
+
+install:
+ # install it under the correct triplet directory
+ install -d $(DESTDIR)/usr/lib/
+ install -d $(DESTDIR)/lib/
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/lib/libbasic.so.2
+ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2
+
+clean distclean:
+ rm -f libbasic.so.2
+
+check test:
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/basic.c b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/basic.c
new file mode 100644
index 0000000..764b4fc
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/build-spec/orig/basic.c
@@ -0,0 +1,3 @@
+int hello() {
+ return 1;
+}
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/eval/desc b/t/recipes/checks/usrmerge/usrmerge-lib/eval/desc
new file mode 100644
index 0000000..d1d5372
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/eval/desc
@@ -0,0 +1,2 @@
+Testname: usrmerge-lib
+Check: usrmerge
diff --git a/t/recipes/checks/usrmerge/usrmerge-lib/eval/hints b/t/recipes/checks/usrmerge/usrmerge-lib/eval/hints
new file mode 100644
index 0000000..d9c1428
--- /dev/null
+++ b/t/recipes/checks/usrmerge/usrmerge-lib/eval/hints
@@ -0,0 +1 @@
+libbasic2 (binary): library-in-root-and-usr already in: usr/lib/libbasic.so.2 [lib/libbasic.so.2]
diff --git a/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/debian/control.in b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/debian/control.in
new file mode 100644
index 0000000..52c28f7
--- /dev/null
+++ b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ vim-addon-manager
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/fill-values b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/fill-values
new file mode 100644
index 0000000..1852b7b
--- /dev/null
+++ b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/build-spec/fill-values
@@ -0,0 +1,2 @@
+Skeleton: upload-native
+Testname: depends-on-vim-addon-manager
diff --git a/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/desc b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/desc
new file mode 100644
index 0000000..f167781
--- /dev/null
+++ b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/desc
@@ -0,0 +1,2 @@
+Testname: depends-on-vim-addon-manager
+Check: vim/addons
diff --git a/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/hints b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/hints
new file mode 100644
index 0000000..daa561a
--- /dev/null
+++ b/t/recipes/checks/vim/addons/depends-on-vim-addon-manager/eval/hints
@@ -0,0 +1 @@
+depends-on-vim-addon-manager (binary): obsolete-vim-addon-manager
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/clean b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/clean
new file mode 100644
index 0000000..be4ae72
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/clean
@@ -0,0 +1,5 @@
+bar.1*
+Bar.pm
+bar.png
+perllocal.pod
+preferences
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/dirs b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/dirs
new file mode 100644
index 0000000..e8759c9
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/dirs
@@ -0,0 +1,15 @@
+etc/apt/preferences.d
+etc/apt
+etc/init
+bin/foo
+mnt/foo
+tmp/foo
+usr/bin/foo
+usr/foo
+usr/lib/debug
+usr/local/foo
+usr/lib/site-python/foo
+usr/share/doc/files-foo-in-bar/examples/examples
+var/foo
+var/lock/foo
+var/run/foo
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/install b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/install
new file mode 100644
index 0000000..ba46865
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/install
@@ -0,0 +1,61 @@
+bar bin/foo
+bar emul
+bar etc/apt/preferences.d
+bar etc/apt/sources.list.d
+bar etc/apt/trusted.gpg.d
+bar etc/gconf/schemas/
+bar etc/init
+bar etc/rc.boot
+bar etc/rc.d
+bar etc/udev/rules.d
+bar lib32
+bar lib64
+bar libx32
+bar mnt/foo
+bar run/foo
+bar srv/foo
+bar tmp/foo
+bar usr/bin/foo
+bar usr/foo
+bar usr/lib/debug/
+bar usr/lib32
+bar usr/lib64
+bar usr/libexec
+bar usr/libx32
+bar usr/lib/perl/
+bar usr/lib/python2.7/
+bar usr/lib/sgml
+bar usr/lib/site-python/foo
+bar usr/local/foo
+bar usr/share
+bar usr/share/doc
+bar usr/share/doc/files-foo-in-bar/.xvpics/
+bar usr/share/doc/files-foo-in-bar/.thumbnails/
+bar usr/share/doc/files-foo-in-bar/examples/examples
+bar usr/share/mime/foo/
+bar usr/share/mime/packages/
+bar usr/share/perl/
+bar usr/share/vim/vimcurrent/
+bar usr/share/vim/vim73/
+bar usr/X11R6/bin
+bar usr/X11R6/lib/X11/fonts/
+bar var/foo
+bar var/lock/foo
+bar var/run/foo
+bar var/www/foo
+bar home/johndoe
+bar root
+bar etc/opt
+bar var/cache/pbuilder/build
+bar var/lib/sbuild
+bar var/lib/buildd
+bar build/dir/foo
+bar tmp/buildd/dir/foo
+bar etc/dhcp3
+
+Bar.pm usr/lib/perl5/Foo
+bar.png usr/lib/files-foo-in-bar
+
+perllocal.pod usr/lib/perl-foo
+.packlist usr/lib/perl5
+preferences etc/apt
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/manpages b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/manpages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/manpages
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/rules b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/rules
new file mode 100755
index 0000000..69a61df
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/debian/rules
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_auto_build:
+ pod2man --section 1 bar.pod > bar.1
+ gzip -n --best bar.1
+ cp bar Bar.pm
+ cp bar bar.png
+ cp bar perllocal.pod
+ touch .packlist
+ touch preferences
+
+override_dh_auto_install:
+ dh_install bar.1.gz usr/X11R6/man/man1/
+
+# skip
+override_dh_usrlocal override_dh_gconf:
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/fill-values b/t/recipes/checks/vim/files-foo-in-bar/build-spec/fill-values
new file mode 100644
index 0000000..17ea927
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: files-foo-in-bar
+Description: Test tags about files or dirs in given paths
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar b/t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar
@@ -0,0 +1 @@
+Hello World!
diff --git a/t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar.pod b/t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar.pod
new file mode 100644
index 0000000..4144a36
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/build-spec/orig/bar.pod
@@ -0,0 +1,18 @@
+
+=head1 NAME
+
+bar - does stuff
+
+=head1 SYNOPSIS
+
+bar
+
+=head1 DESCRIPTION
+
+Does nothing.
+
+=head1 AUTHOR
+
+Niels Thykier <niels@thykier.net>
+
+=cut
diff --git a/t/recipes/checks/vim/files-foo-in-bar/eval/desc b/t/recipes/checks/vim/files-foo-in-bar/eval/desc
new file mode 100644
index 0000000..72cdc23
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/eval/desc
@@ -0,0 +1,2 @@
+Testname: files-foo-in-bar
+Check: vim
diff --git a/t/recipes/checks/vim/files-foo-in-bar/eval/hints b/t/recipes/checks/vim/files-foo-in-bar/eval/hints
new file mode 100644
index 0000000..78463a7
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/eval/hints
@@ -0,0 +1,2 @@
+files-foo-in-bar (binary): vim-addon-within-vim-runtime-path [usr/share/vim/vimcurrent/bar]
+files-foo-in-bar (binary): vim-addon-within-vim-runtime-path [usr/share/vim/vim73/bar]
diff --git a/t/recipes/checks/vim/files-foo-in-bar/eval/post-test b/t/recipes/checks/vim/files-foo-in-bar/eval/post-test
new file mode 100644
index 0000000..5af7ea2
--- /dev/null
+++ b/t/recipes/checks/vim/files-foo-in-bar/eval/post-test
@@ -0,0 +1,2 @@
+# Ignore all duplicate-files tags
+/[^ ]* \([^)]*\): duplicate-files .*/ d
diff --git a/t/recipes/general-false-positives/basic-native-1.0/build-spec/fill-values b/t/recipes/general-false-positives/basic-native-1.0/build-spec/fill-values
new file mode 100644
index 0000000..7d5b47f
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-1.0/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: basic-native-1.0
+Description: Simple/basic test of a native 1.0 package
+Source-Format: 1.0
+Type: native
diff --git a/t/recipes/general-false-positives/basic-native-1.0/eval/desc b/t/recipes/general-false-positives/basic-native-1.0/eval/desc
new file mode 100644
index 0000000..b3cbd8f
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-1.0/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-native-1.0
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-native-1.0/eval/hints b/t/recipes/general-false-positives/basic-native-1.0/eval/hints
new file mode 100644
index 0000000..3b523cc
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-1.0/eval/hints
@@ -0,0 +1,2 @@
+basic-native-1.0 (source): older-source-format 1.0
+basic-native-1.0 (binary): empty-binary-package
diff --git a/t/recipes/general-false-positives/basic-native-3.0-with-epoch/build-spec/fill-values b/t/recipes/general-false-positives/basic-native-3.0-with-epoch/build-spec/fill-values
new file mode 100644
index 0000000..73ee0e9
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-3.0-with-epoch/build-spec/fill-values
@@ -0,0 +1,7 @@
+Skeleton: upload-native
+Testname: basic-native-3.0-with-epoch
+Source-Format: 3.0 (native)
+Type: native
+Version: 1:1.0
+Prev-Version: 8.5
+Description: Basic test of a native 3.0 package with an epoch
diff --git a/t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/desc b/t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/desc
new file mode 100644
index 0000000..755d285
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-native-3.0-with-epoch
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/hints b/t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/hints
new file mode 100644
index 0000000..54ae4de
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-3.0-with-epoch/eval/hints
@@ -0,0 +1 @@
+basic-native-3.0-with-epoch (binary): empty-binary-package
diff --git a/t/recipes/general-false-positives/basic-native-3.0/build-spec/fill-values b/t/recipes/general-false-positives/basic-native-3.0/build-spec/fill-values
new file mode 100644
index 0000000..8602267
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-3.0/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: upload-native
+Testname: basic-native-3.0
+Source-Format: 3.0 (native)
+Type: native
+Description: Basic test of a native 3.0 package
diff --git a/t/recipes/general-false-positives/basic-native-3.0/eval/desc b/t/recipes/general-false-positives/basic-native-3.0/eval/desc
new file mode 100644
index 0000000..e1f70ad
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-3.0/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-native-3.0
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-native-3.0/eval/hints b/t/recipes/general-false-positives/basic-native-3.0/eval/hints
new file mode 100644
index 0000000..643838e
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-native-3.0/eval/hints
@@ -0,0 +1 @@
+basic-native-3.0 (binary): empty-binary-package
diff --git a/t/recipes/general-false-positives/basic-non-native-1.0/build-spec/fill-values b/t/recipes/general-false-positives/basic-non-native-1.0/build-spec/fill-values
new file mode 100644
index 0000000..6282789
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-1.0/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: basic-non-native-1.0
+Skeleton: upload-non-native
+Description: Basic test of a non-native 1.0 package
+Source-Format: 1.0
+Type: non-native
diff --git a/t/recipes/general-false-positives/basic-non-native-1.0/build-spec/orig/some-file b/t/recipes/general-false-positives/basic-non-native-1.0/build-spec/orig/some-file
new file mode 100644
index 0000000..2cfb00b
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-1.0/build-spec/orig/some-file
@@ -0,0 +1 @@
+CONTENTS
diff --git a/t/recipes/general-false-positives/basic-non-native-1.0/eval/desc b/t/recipes/general-false-positives/basic-non-native-1.0/eval/desc
new file mode 100644
index 0000000..03169ab
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-1.0/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-non-native-1.0
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-non-native-1.0/eval/hints b/t/recipes/general-false-positives/basic-non-native-1.0/eval/hints
new file mode 100644
index 0000000..6cd17fd
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-1.0/eval/hints
@@ -0,0 +1,6 @@
+basic-non-native-1.0 (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+basic-non-native-1.0 (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+basic-non-native-1.0 (source): older-source-format 1.0
+basic-non-native-1.0 (source): older-debian-watch-file-standard 3 [debian/watch]
+basic-non-native-1.0 (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+basic-non-native-1.0 (binary): empty-binary-package
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/extra-readme b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/extra-readme
new file mode 100644
index 0000000..365793b
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/extra-readme
@@ -0,0 +1,9 @@
+A simple patch applied by dpkg-source
+
+--- upstream.orig/README
++++ upstream/README
+@@ -1 +1,4 @@
+ README
++
++These are some lines added in the Debian package via a quilt patch
++applied by dpkg-source.
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/series b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/series
new file mode 100644
index 0000000..8af4346
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/debian/patches/series
@@ -0,0 +1 @@
+extra-readme
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/diff/README b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/diff/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/diff/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/fill-values b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/fill-values
new file mode 100644
index 0000000..5dd1fdc
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: basic-non-native-3.0-purge-debian
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Type: non-native
+Description: Test the purging of ./debian in orig for a 3.0 (quilt) package
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/README b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/basic-quilt-updeb.doc-base.EX b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/basic-quilt-updeb.doc-base.EX
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/basic-quilt-updeb.doc-base.EX
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/postinst.ex b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/postinst.ex
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/build-spec/orig/debian/postinst.ex
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/desc b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/desc
new file mode 100644
index 0000000..058e0ba
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-non-native-3.0-purge-debian
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/hints b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/hints
new file mode 100644
index 0000000..f95093f
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-purge-debian/eval/hints
@@ -0,0 +1,5 @@
+basic-non-native-3.0-purge-debian (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+basic-non-native-3.0-purge-debian (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+basic-non-native-3.0-purge-debian (source): older-debian-watch-file-standard 3 [debian/watch]
+basic-non-native-3.0-purge-debian (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+basic-non-native-3.0-purge-debian (binary): empty-binary-package
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/fill-values b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/fill-values
new file mode 100644
index 0000000..2873209
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: basic-non-native-3.0-with-epoch
+Version: 1:1.0-1
+Prev-Version: 16.29-6
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Type: non-native
+Description: Basic test of a non-native 3.0 package with epoch
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/orig/some-file b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/orig/some-file
new file mode 100644
index 0000000..2cfb00b
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/build-spec/orig/some-file
@@ -0,0 +1 @@
+CONTENTS
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/desc b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/desc
new file mode 100644
index 0000000..929246f
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-non-native-3.0-with-epoch
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/hints b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/hints
new file mode 100644
index 0000000..d766f1a
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0-with-epoch/eval/hints
@@ -0,0 +1,5 @@
+basic-non-native-3.0-with-epoch (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+basic-non-native-3.0-with-epoch (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+basic-non-native-3.0-with-epoch (source): older-debian-watch-file-standard 3 [debian/watch]
+basic-non-native-3.0-with-epoch (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+basic-non-native-3.0-with-epoch (binary): empty-binary-package
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/extra-readme b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/extra-readme
new file mode 100644
index 0000000..365793b
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/extra-readme
@@ -0,0 +1,9 @@
+A simple patch applied by dpkg-source
+
+--- upstream.orig/README
++++ upstream/README
+@@ -1 +1,4 @@
+ README
++
++These are some lines added in the Debian package via a quilt patch
++applied by dpkg-source.
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/series b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/series
new file mode 100644
index 0000000..8af4346
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/debian/patches/series
@@ -0,0 +1 @@
+extra-readme
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/fill-values b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/fill-values
new file mode 100644
index 0000000..1cac513
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: basic-non-native-3.0
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Type: non-native
+Description: Basic test of a non-native 3.0 (quilt) package
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/orig/README b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/orig/README
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0/build-spec/orig/README
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0/eval/desc b/t/recipes/general-false-positives/basic-non-native-3.0/eval/desc
new file mode 100644
index 0000000..614b1aa
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0/eval/desc
@@ -0,0 +1,2 @@
+Testname: basic-non-native-3.0
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/general-false-positives/basic-non-native-3.0/eval/hints b/t/recipes/general-false-positives/basic-non-native-3.0/eval/hints
new file mode 100644
index 0000000..717c283
--- /dev/null
+++ b/t/recipes/general-false-positives/basic-non-native-3.0/eval/hints
@@ -0,0 +1,5 @@
+basic-non-native-3.0 (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+basic-non-native-3.0 (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+basic-non-native-3.0 (source): older-debian-watch-file-standard 3 [debian/watch]
+basic-non-native-3.0 (source): debian-watch-does-not-check-openpgp-signature [debian/watch]
+basic-non-native-3.0 (binary): empty-binary-package
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/debian/patches/series b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/debian/patches/series
new file mode 100644
index 0000000..b2bfa72
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/debian/patches/series
@@ -0,0 +1 @@
+non-existing.patch
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/fill-values b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/fill-values
new file mode 100644
index 0000000..0be681a
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fail-on-error-by-default
+Skeleton: source-native
+Description: Exit status for error tags
+Extra-Build-Depends: quilt
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/desc b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/desc
new file mode 100644
index 0000000..e5f0839
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/desc
@@ -0,0 +1,5 @@
+Testname: fail-on-error-by-default
+Exit-Status: 2
+Output-Format: EWI
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/literal b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/literal
new file mode 100644
index 0000000..3224fc5
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error-by-default/eval/literal
@@ -0,0 +1,2 @@
+E: fail-on-error-by-default source: quilt-series-references-non-existent-patch non-existing.patch [debian/patches/series]
+W: fail-on-error-by-default source: patch-system-but-no-source-readme
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error/build-spec/debian/patches/series b/t/recipes/lintian-features/exit-status/fail-on-error/build-spec/debian/patches/series
new file mode 100644
index 0000000..b2bfa72
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error/build-spec/debian/patches/series
@@ -0,0 +1 @@
+non-existing.patch
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error/build-spec/fill-values b/t/recipes/lintian-features/exit-status/fail-on-error/build-spec/fill-values
new file mode 100644
index 0000000..39e4198
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: fail-on-error
+Skeleton: source-native
+Description: Fail on error tag
+Extra-Build-Depends: quilt
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error/eval/desc b/t/recipes/lintian-features/exit-status/fail-on-error/eval/desc
new file mode 100644
index 0000000..5ed4fd8
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error/eval/desc
@@ -0,0 +1,6 @@
+Testname: fail-on-error
+Options: --fail-on error
+Exit-Status: 2
+Output-Format: EWI
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/exit-status/fail-on-error/eval/literal b/t/recipes/lintian-features/exit-status/fail-on-error/eval/literal
new file mode 100644
index 0000000..07096d1
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-error/eval/literal
@@ -0,0 +1,2 @@
+E: fail-on-error source: quilt-series-references-non-existent-patch non-existing.patch [debian/patches/series]
+W: fail-on-error source: patch-system-but-no-source-readme
diff --git a/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/debian/manpages b/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/fill-values b/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/fill-values
new file mode 100644
index 0000000..353a301
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: fail-on-info
+Skeleton: upload-native
+Description: Exit status for info tags with --fail-on info
diff --git a/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/orig/man/lsmod.8 b/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/orig/man/lsmod.8
new file mode 100644
index 0000000..e323bd6
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-info/build-spec/orig/man/lsmod.8
@@ -0,0 +1,59 @@
+'\" t
+.\" Title: lsmod
+.\" Author: Jon Masters <jcm@jonmasters.org>
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 02/09/2019
+.\" Manual: lsmod
+.\" Source: kmod
+.\" Language: English
+.\"
+.TH "LSMOD" "8" "02/09/2019" "kmod" "lsmod"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+lsmod \- Show the status of modules in the Linux Kernel
+.SH "SYNOPSIS"
+.HP \w'\fBlsmod\fR\ 'u
+\fBlsmod\fR
+.SH "DESCRIPTION"
+.PP
+\fBlsmod\fR
+is a trivial program which nicely formats the contents of the
+/proc/modules, showing what kernel modules are currently loaded\&.
+.SH "COPYRIGHT"
+.PP
+This manual page originally Copyright 2002, Rusty Russell, IBM Corporation\&. Maintained by Jon Masters and others\&.
+.SH "SEE ALSO"
+.PP
+\fBinsmod\fR(8),
+\fBmodprobe\fR(8),
+\fBmodinfo\fR(8)
+\fBdepmod\fR(8)
+.SH "AUTHORS"
+.PP
+\fBJon Masters\fR <\&jcm@jonmasters\&.org\&>
+.RS 4
+Developer
+.RE
+.PP
+\fBLucas De Marchi\fR <\&lucas\&.de\&.marchi@gmail\&.com\&>
+.RS 4
+Developer
+.RE
diff --git a/t/recipes/lintian-features/exit-status/fail-on-info/eval/desc b/t/recipes/lintian-features/exit-status/fail-on-info/eval/desc
new file mode 100644
index 0000000..ebf6942
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-info/eval/desc
@@ -0,0 +1,6 @@
+Testname: fail-on-info
+Options: --fail-on info
+Exit-Status: 2
+Output-Format: EWI
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/exit-status/fail-on-info/eval/hints b/t/recipes/lintian-features/exit-status/fail-on-info/eval/hints
new file mode 100644
index 0000000..d32006d
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-info/eval/hints
@@ -0,0 +1,14 @@
+fail-on-info (source): standards-version 4.5.0
+fail-on-info (source): source-format 3.0 (native)
+fail-on-info (source): rules-does-not-require-root
+fail-on-info (source): package-is-maintained-by-individual
+fail-on-info (source): debian-build-system dh
+fail-on-info (source): debhelper-compat-virtual-relation 13
+fail-on-info (source): debhelper-compat-level 13
+fail-on-info (changes): package-is-maintained-by-individual
+fail-on-info (buildinfo): package-is-maintained-by-individual
+fail-on-info (binary): package-is-maintained-by-individual
+fail-on-info (binary): no-ctrl-scripts
+fail-on-info (binary): manpage-without-executable usr/share/man/man8/lsmod.8.gz
+fail-on-info (binary): data-tarball-compression-format xz
+fail-on-info (binary): control-tarball-compression-format xz
diff --git a/t/recipes/lintian-features/exit-status/fail-on-info/eval/literal b/t/recipes/lintian-features/exit-status/fail-on-info/eval/literal
new file mode 100644
index 0000000..43f8d4d
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/fail-on-info/eval/literal
@@ -0,0 +1 @@
+I: fail-on-info: spare-manual-page [usr/share/man/man8/lsmod.8.gz]
diff --git a/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/debian/manpages b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/debian/manpages
new file mode 100644
index 0000000..85c5e00
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/debian/manpages
@@ -0,0 +1 @@
+man/*
diff --git a/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/fill-values b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/fill-values
new file mode 100644
index 0000000..53d5862
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: no-fail-on-info-by-default
+Skeleton: upload-non-native
+Description: Exit status for info tags
diff --git a/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/orig/man/lsmod.8 b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/orig/man/lsmod.8
new file mode 100644
index 0000000..e323bd6
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/build-spec/orig/man/lsmod.8
@@ -0,0 +1,59 @@
+'\" t
+.\" Title: lsmod
+.\" Author: Jon Masters <jcm@jonmasters.org>
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 02/09/2019
+.\" Manual: lsmod
+.\" Source: kmod
+.\" Language: English
+.\"
+.TH "LSMOD" "8" "02/09/2019" "kmod" "lsmod"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+lsmod \- Show the status of modules in the Linux Kernel
+.SH "SYNOPSIS"
+.HP \w'\fBlsmod\fR\ 'u
+\fBlsmod\fR
+.SH "DESCRIPTION"
+.PP
+\fBlsmod\fR
+is a trivial program which nicely formats the contents of the
+/proc/modules, showing what kernel modules are currently loaded\&.
+.SH "COPYRIGHT"
+.PP
+This manual page originally Copyright 2002, Rusty Russell, IBM Corporation\&. Maintained by Jon Masters and others\&.
+.SH "SEE ALSO"
+.PP
+\fBinsmod\fR(8),
+\fBmodprobe\fR(8),
+\fBmodinfo\fR(8)
+\fBdepmod\fR(8)
+.SH "AUTHORS"
+.PP
+\fBJon Masters\fR <\&jcm@jonmasters\&.org\&>
+.RS 4
+Developer
+.RE
+.PP
+\fBLucas De Marchi\fR <\&lucas\&.de\&.marchi@gmail\&.com\&>
+.RS 4
+Developer
+.RE
diff --git a/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/desc b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/desc
new file mode 100644
index 0000000..73e0055
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/desc
@@ -0,0 +1,5 @@
+Testname: no-fail-on-info-by-default
+Exit-Status: 0
+Output-Format: EWI
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/literal b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/literal
new file mode 100644
index 0000000..6a3843c
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/no-fail-on-info-by-default/eval/literal
@@ -0,0 +1,5 @@
+I: no-fail-on-info-by-default source: older-debian-watch-file-standard 3 [debian/watch]
+I: no-fail-on-info-by-default: spare-manual-page [usr/share/man/man8/lsmod.8.gz]
+I: no-fail-on-info-by-default source: upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+I: no-fail-on-info-by-default source: upstream-metadata-missing-repository [debian/upstream/metadata]
+X: no-fail-on-info-by-default source: debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/install b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/install
new file mode 100644
index 0000000..d5d2b1d
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/install
@@ -0,0 +1 @@
+file /usr/share/file
diff --git a/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/lintian-overrides b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/lintian-overrides
new file mode 100644
index 0000000..16c3ee0
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/debian/lintian-overrides
@@ -0,0 +1,2 @@
+# package installs a d/rules template not a script
+missing-dep-for-interpreter /usr/bin/make *
diff --git a/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/fill-values b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/fill-values
new file mode 100644
index 0000000..700aa18
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: show-overrides-exit-status
+Description: Bug #1019690 correct exit status when show-overrides
diff --git a/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/orig/file b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/orig/file
new file mode 100755
index 0000000..e8e22ba
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/build-spec/orig/file
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@ --with elpa
diff --git a/t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/desc b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/desc
new file mode 100644
index 0000000..e3c20ef
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/desc
@@ -0,0 +1,6 @@
+Testname: show-overrides-exit-status
+Check: scripts
+Exit-Status: 0
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --show-overrides --fail-on error
diff --git a/t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/literal b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/literal
new file mode 100644
index 0000000..d328053
--- /dev/null
+++ b/t/recipes/lintian-features/exit-status/show-overrides-exit-status/eval/literal
@@ -0,0 +1,2 @@
+N: package installs a d/rules template not a script
+O: show-overrides-exit-status: missing-dep-for-interpreter /usr/bin/make (does not satisfy make:any | build-essential:any | dpkg-dev:any) [usr/share/file/file]
diff --git a/t/recipes/lintian-features/html-output/build-spec/debian/control.in b/t/recipes/lintian-features/html-output/build-spec/debian/control.in
new file mode 100644
index 0000000..48330e1
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, libssl0.9.8 (>= 0abcd)
+Essential:yes
+Section: [% $section %]
+Description: [% $description %].
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The homepage is http://www.example.com/.
diff --git a/t/recipes/lintian-features/html-output/build-spec/debian/dirs b/t/recipes/lintian-features/html-output/build-spec/debian/dirs
new file mode 100644
index 0000000..055295f
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/local/share/lintian
+var/lock/lintian
diff --git a/t/recipes/lintian-features/html-output/build-spec/debian/examples b/t/recipes/lintian-features/html-output/build-spec/debian/examples
new file mode 100644
index 0000000..33a9488
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/debian/examples
@@ -0,0 +1 @@
+example
diff --git a/t/recipes/lintian-features/html-output/build-spec/debian/install b/t/recipes/lintian-features/html-output/build-spec/debian/install
new file mode 100644
index 0000000..d6f0c2d
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/debian/install
@@ -0,0 +1,2 @@
+script usr/bin
+script.desktop usr/share/applications
diff --git a/t/recipes/lintian-features/html-output/build-spec/debian/rules b/t/recipes/lintian-features/html-output/build-spec/debian/rules
new file mode 100755
index 0000000..67e7058
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_usrlocal:
diff --git a/t/recipes/lintian-features/html-output/build-spec/debian/source.lintian-overrides b/t/recipes/lintian-features/html-output/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..b3f4107
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+html-output source: dfsg-version-misspelled 1.0*
diff --git a/t/recipes/lintian-features/html-output/build-spec/diff/Changes b/t/recipes/lintian-features/html-output/build-spec/diff/Changes
new file mode 100644
index 0000000..2a267cd
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/diff/Changes
@@ -0,0 +1 @@
+This is unlike any other dummy changelog.
diff --git a/t/recipes/lintian-features/html-output/build-spec/fill-values b/t/recipes/lintian-features/html-output/build-spec/fill-values
new file mode 100644
index 0000000..cbdeb07
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: html-output
+Skeleton: upload-non-native
+Version: 1.0+dsfg-1.1
+Package-Architecture: all
+Description: Test Lintian's HTML output format
diff --git a/t/recipes/lintian-features/html-output/build-spec/orig/example b/t/recipes/lintian-features/html-output/build-spec/orig/example
new file mode 100755
index 0000000..1cde649
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/orig/example
@@ -0,0 +1,2 @@
+#!/usr/bin/foo
+echo This is some example.
diff --git a/t/recipes/lintian-features/html-output/build-spec/orig/script b/t/recipes/lintian-features/html-output/build-spec/orig/script
new file mode 100755
index 0000000..a10a951
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/orig/script
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /usr/share/debconf/confmodule
+echo 'Hello world'
diff --git a/t/recipes/lintian-features/html-output/build-spec/orig/script.desktop b/t/recipes/lintian-features/html-output/build-spec/orig/script.desktop
new file mode 100644
index 0000000..e1ec555
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/build-spec/orig/script.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=script
+Type=Application
+Comment=Incorrectly limited to particular environments
+Categories=Development;
+Exec=script
+OnlyShowIn=GNOME;KDE;
+Icon=foo
+Keywords=Lintian
diff --git a/t/recipes/lintian-features/html-output/eval/desc b/t/recipes/lintian-features/html-output/eval/desc
new file mode 100644
index 0000000..a30fd30
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/eval/desc
@@ -0,0 +1,5 @@
+Testname: html-output
+Options: --show-overrides
+Output-Format: html
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/html-output/eval/literal b/t/recipes/lintian-features/html-output/eval/literal
new file mode 100644
index 0000000..e06e404
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/eval/literal
@@ -0,0 +1,800 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>Lintian Tags</title>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <link href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAArUlEQVR4AWOgOhAOqf4vEFh2RkZGRpAsA7jT5/7nSJ97RlJSklwD5vznTJxCgQFpQAMSJlJoQPwEuroAMxA5U2ZSYsA8YCzMp9AFydMpjMakKZSmg8nkG8CVMe8/e9ai80AD5ICYDx0TNiBr0X/m6oOfganxJEfq7KOcSdOOciVMAuKJR0XswnsIGiAQVvOfK3vxf67M+f+5shYA6YVAeuF/3vj+l2LOcRZUz70AF5dRizrcOOQAAAAASUVORK5CYII=" rel="icon" type="image/x-icon" />
+ <style type="text/css">
+
+/* lintian.css -- Style sheet for lintian.debian.org pages. */
+
+/*
+ # Table of Contents:
+ #
+ # 1. General styles (links, lists, titles, tables...)
+ # 2. Header
+ # 3. Navigation
+ # 4. Main content
+ # 5. Footer
+ # 6. Other
+ */
+
+/*
+ # Order:
+ #
+ # example {
+ # display
+ # position
+ # width
+ # height
+ # margin
+ # padding
+ # background
+ # color
+ # font
+ # text
+ # line-height
+ # border
+ # }
+ */
+
+
+/*
+ * 1. General styles
+ */
+
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+html, body {
+ margin: 0;
+ padding: 0;
+
+ font-family: 'Roboto', serif;
+ color: #222;
+}
+
+h1, h2 {
+ font-family: 'Roboto Condensed', sans-serif;
+ font-weight: 400;
+}
+
+h1 {
+ margin-top: 0;
+}
+
+article h1 {
+ font-size: 28px;
+}
+
+h2 {
+ margin-top: 25px;
+ margin-bottom: 14px;
+ padding-bottom: 6px;
+ border-bottom: 2px solid #AAA;
+}
+
+h3 {
+ margin: 5px 0 5px 10px;
+ color: #444;
+ font-size: 1.0em;
+}
+
+a {
+ color: #3252B2;
+}
+
+ul {
+ margin: 0;
+}
+
+li {
+ color: #333;
+}
+
+hr {
+ display: none;
+}
+
+/*
+ * 2. Header title
+ */
+
+body > header {
+ background: #F3F3F3 url("/images/logo-small.png") no-repeat right;
+ border-bottom: 1px solid #AAA;
+
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ color: #333;
+
+ height: 50px;
+ padding-right: 85px; /* space for logo */
+}
+
+body > header h1 {
+ font-family: 'Roboto', serif;
+ font-size: 1.2em;
+ margin: 20px 20px;
+}
+
+body > header a {
+ color: inherit;
+ text-decoration: none;
+}
+
+body > header nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+body > header nav li {
+ display: inline-block;
+}
+
+body > header nav a {
+ display: block;
+ padding: 3px 5px;
+ font-size: 0.9em;
+ border-bottom: 2px solid #f3f3f4;
+}
+
+body > header nav a:hover {
+ border-bottom: 2px solid #D70751;
+}
+
+/*
+ * 4. Main content
+ */
+
+main {
+ margin: 40px 40px 0;
+ font-size: 0.9em;
+}
+
+.showcase {
+ margin: 25px 0;
+ padding: 40px 20px;
+ background: #EFF4F8 url("/images/l.png") no-repeat left;
+ background-origin: content-box;
+ border: 1px solid #DFE4E8;
+}
+
+.showcase p {
+ margin-left: 160px;
+ font-size: 1.1em;
+}
+
+/* For smaller devices, we leave out the "icon" - it is fairly wide with
+ * little added value.
+ */
+@media (max-width: 700px) {
+
+ .showcase {
+ margin: 25px 0;
+ padding: 20px;
+ background: #EFF4F8;
+ border: 1px solid #DFE4E8;
+ }
+
+ .showcase p {
+ margin-left: 5%;
+ }
+}
+
+li span {
+ margin: 0 0px 0 0;
+ padding: 1px 0px;
+}
+
+/* E/W/I colors */
+
+span.label {
+ font-family: 'Roboto Condensed', sans-serif;
+ font-weight: 700;
+}
+
+article#hints {
+ margin-top: 20px;
+ padding-top: 10px;
+ border-top: 2px solid #AAA;
+ clear: both;
+}
+
+.hint.tiny {
+ font-family: 'Roboto Condensed', sans-serif;
+ font-weight: 700;
+ font-size: 0.9em;
+}
+
+.context.tiny {
+ font-family: 'Roboto', sans-serif;
+ font-style: italic;
+ font-size: 0.9em;
+}
+
+.comment.tiny {
+ font-family: 'Roboto', sans-serif;
+ font-size: 0.9em;
+}
+
+ul.minor {
+ list-style-type: none;
+}
+
+ul.see-also {
+ padding-bottom: 1em;
+}
+
+ul.taglist {
+ list-style-type: none;
+}
+
+ul.screenlist {
+ list-style-type: none;
+}
+
+ul.sourcelist {
+ list-style-type: none;
+}
+
+ul.filelist {
+ list-style-type: disc;
+ margin-left: 2em;
+}
+
+ul.hintlist {
+ list-style: none;
+ padding-left: 10px;
+}
+
+ul.commentlist {
+ list-style: none;
+ padding-left: 0px;
+}
+
+li.fileitem {
+ margin: 10px 0 5px 0;
+}
+
+span.visibility-symbol {
+ font-family: monospace;
+ font-size: 1.1em;
+}
+
+a.visibility-symbol {
+ text-decoration: none;
+}
+
+a.visibility-symbol:hover {
+ filter: invert(100%);
+}
+
+a.visibility-symbol.big {
+ padding: 1px 5px;
+ margin-right: 5px;
+ font-weight: normal;
+}
+
+a.visibility-symbol.tiny {
+ font-weight: bold;
+ padding: 1px 3px;
+}
+
+a.visibility-symbol::before {
+ border: 1px solid;
+ display: inline-block;
+ width: 1em;
+ font-family: monospace;
+ font-size: 1.1em;
+ text-align: center;
+}
+
+a.visibility-symbol.error::before {
+ content: 'E';
+ color: #fff;
+ border-color: #fff;
+ background-color: #fc0905;
+}
+
+a.visibility-symbol.warning::before {
+ content: 'W';
+ color: #111;
+ border-color: #888;
+ background-color: #fceb02;
+}
+
+a.visibility-symbol.info::before {
+ content: 'I';
+ color: #fff;
+ border-color: #fff;
+ background-color: #465efc;
+}
+
+a.visibility-symbol.pedantic::before {
+ content: 'P';
+ color: #fff;
+ border-color: #fff;
+ background-color: #00c627;
+}
+
+a.visibility-symbol.experimental::before {
+ content: 'X';
+ color: #fff;
+ border-color: #fff;
+ background-color: #9e8040;
+}
+
+a.visibility-symbol.mask::before {
+ content: 'M';
+ color: #111;
+ border-color: #444;
+ background-color: #ddd;
+}
+
+a.visibility-symbol.override::before {
+ content: 'O';
+ color: #fff;
+ border-color: #fff;
+ background-color: #444;
+}
+
+a.visibility-symbol.classification::before {
+ content: 'C';
+ color: #fff;
+ border-color: #fff;
+ background-color: #bc55fc;
+}
+
+section.explanation {
+ padding: 8px 28px;
+ background-color: #EEE;
+ border: 1px solid #BBB;
+ float: left;
+ clear:left;
+}
+
+.explanation.error {
+ background-color: #fccac9;
+ border: 1px solid #fc0905;
+}
+
+.explanation.warning {
+ background-color: #fcf9c9;
+ border: 1px solid #fceb02;
+}
+
+.explanation.info {
+ background-color: #dee2fc;
+ border: 1px solid #465efc;
+}
+
+.explanation.pedantic {
+ background-color: #d4fcdc;
+ border: 1px solid #00c627;
+}
+
+.explanation.experimental {
+ background-color: #fcf2de;
+ border: 1px solid #9e8040;
+}
+
+.explanation.classification {
+ background-color: #f4e8fc;
+ border: 1px solid #bc55fc;
+}
+
+section.auxiliary {
+ margin: 20px 0;
+ float: left;
+}
+
+div.terminal {
+ margin-bottom: 1em;
+}
+
+p.terminal {
+ font-family: monospace;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+article.version {
+ display: flex;
+ gap: 1em;
+ align-items: flex-start;
+}
+
+article.version nav.version-selector {
+ flex: 0 auto;
+ order: 2;
+}
+
+nav.version-selector {
+ background-color: #F3F3F3;
+ border: 1px solid #AAA;
+ padding: 0.8em;
+ margin: 0 0 20px 20px;
+ display: inline-block;
+ float: right;
+}
+
+.version-selector h3 {
+ font-weight: bold;
+ text-align: center;
+ white-space: nowrap;
+ margin: 0;
+ margin-bottom: 0.5em;
+}
+
+.version-selector ul {
+ list-style: none;
+ padding: 0;
+}
+
+.version-selector li {
+ white-space: nowrap;
+}
+
+.version-selector span.highlight {
+ color: #D70751;
+}
+
+span.maintenance_links {
+ font-size: 0.6em;
+ margin-left: 1.2em;
+}
+
+.liberty.main {
+}
+
+.liberty.contrib {
+ color: red;
+}
+
+.liberty.non-free {
+ color: red;
+}
+
+span.release-list {
+ font-style: italic;
+}
+
+span.quote {
+ font-style: italic;
+}
+
+span.run-details {
+ font-style: italic;
+}
+
+a.sample {
+ font-style: italic;
+}
+
+/*
+ * 5. Footer
+ */
+
+footer {
+ display: block; /* HTML5 compat */
+ margin: 20px 20px;
+ padding: 10px 0 0 0;
+ font-family: 'Roboto Condensed', sans-serif;
+ font-size: 0.85em;
+ border-top: 1px solid #AAA;
+}
+
+footer p {
+ margin: 0;
+ padding: 0;
+}
+
+
+ </style>
+</head>
+
+<body>
+
+<main>
+
+<article>
+
+<h1>Lintian Hints</h1>
+
+
+
+<h2>
+ html-output 1.0+dsfg-1.1
+</h2>
+
+
+<ul class="filelist">
+
+ <li class="fileitem">html-output_1.0+dsfg-1.1.dsc</li>
+
+ <ul class="hintlist">
+
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny warning" href="https://lintian.debian.org/levels#warning"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/changelog-file-missing-explicit-entry">changelog-file-missing-explicit-entry</a></span>
+ <span class="context tiny">0.0.1-1 -&gt; 1.0+dsfg-1 (missing) -&gt; 1.0+dsfg-1.1 [debian/changelog:1]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny warning" href="https://lintian.debian.org/levels#warning"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/format-3.0-but-debian-changes-patch">format-3.0-but-debian-changes-patch</a></span>
+ <span class="context tiny">[debian/patches/debian-changes-1.0+dsfg-1.1]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny warning" href="https://lintian.debian.org/levels#warning"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/maintainer-upload-has-incorrect-version-number">maintainer-upload-has-incorrect-version-number</a></span>
+ <span class="context tiny">1.0+dsfg-1.1 [debian/changelog:1]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/installable-field-mirrors-source">installable-field-mirrors-source</a></span>
+ <span class="context tiny">(in section for html-output) Section [debian/control:13]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/older-debian-watch-file-standard">older-debian-watch-file-standard</a></span>
+ <span class="context tiny">3 [debian/watch]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/patch-not-forwarded-upstream">patch-not-forwarded-upstream</a></span>
+ <span class="context tiny">[debian/patches/debian-changes-1.0+dsfg-1.1]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/quilt-patch-using-template-description">quilt-patch-using-template-description</a></span>
+ <span class="context tiny">[debian/patches/debian-changes-1.0+dsfg-1.1]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/upstream-metadata-missing-bug-tracking">upstream-metadata-missing-bug-tracking</a></span>
+ <span class="context tiny">[debian/upstream/metadata]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/upstream-metadata-missing-repository">upstream-metadata-missing-repository</a></span>
+ <span class="context tiny">[debian/upstream/metadata]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny pedantic" href="https://lintian.debian.org/levels#pedantic"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/debian-control-has-unusual-field-spacing">debian-control-has-unusual-field-spacing</a></span>
+ <span class="context tiny">Essential [debian/control:12]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny pedantic" href="https://lintian.debian.org/levels#pedantic"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/no-homepage-field">no-homepage-field</a></span>
+ <span class="context tiny"></span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny experimental" href="https://lintian.debian.org/levels#experimental"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/debian-watch-does-not-check-openpgp-signature">debian-watch-does-not-check-openpgp-signature</a></span>
+ <span class="context tiny">[debian/watch]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny override" href="https://lintian.debian.org/levels#override"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/dfsg-version-misspelled">dfsg-version-misspelled</a></span>
+ <span class="context tiny">1.0+dsfg-1.1</span>
+
+ </li>
+
+ </ul>
+
+ <li class="fileitem">html-output_1.0+dsfg-1.1_all.deb</li>
+
+ <ul class="hintlist">
+
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny error" href="https://lintian.debian.org/levels#error"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/dir-in-usr-local">dir-in-usr-local</a></span>
+ <span class="context tiny">[usr/local/share/]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny error" href="https://lintian.debian.org/levels#error"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/dir-in-usr-local">dir-in-usr-local</a></span>
+ <span class="context tiny">[usr/local/share/lintian/]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny error" href="https://lintian.debian.org/levels#error"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/dir-or-file-in-var-lock">dir-or-file-in-var-lock</a></span>
+ <span class="context tiny">[var/lock/lintian/]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny error" href="https://lintian.debian.org/levels#error"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/new-essential-package">new-essential-package</a></span>
+ <span class="context tiny"></span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny warning" href="https://lintian.debian.org/levels#warning"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/no-manual-page">no-manual-page</a></span>
+ <span class="context tiny">[usr/bin/script]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/description-possibly-contains-homepage">description-possibly-contains-homepage</a></span>
+ <span class="context tiny">http://www.example.com/.</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/desktop-entry-limited-to-environments">desktop-entry-limited-to-environments</a></span>
+ <span class="context tiny">[usr/share/applications/script.desktop]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/package-contains-empty-directory">package-contains-empty-directory</a></span>
+ <span class="context tiny">[usr/local/share/lintian/]</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny info" href="https://lintian.debian.org/levels#info"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/synopsis-is-a-sentence">synopsis-is-a-sentence</a></span>
+ <span class="context tiny">&quot;Test Lintian&#39;s HTML output format.&quot;</span>
+
+ </li>
+ <li class="hintitem">
+
+ <ul class="commentlist">
+ </ul>
+
+ <a class="visibility-symbol tiny pedantic" href="https://lintian.debian.org/levels#pedantic"></a>
+ <span class="hint tiny"><a href="https://lintian.debian.org/tags/example-unusual-interpreter">example-unusual-interpreter</a></span>
+ <span class="context tiny">/usr/bin/foo [usr/share/doc/html-output/examples/example]</span>
+
+ </li>
+
+ </ul>
+
+ <li class="fileitem">html-output_1.0+dsfg-1.1.buildinfo</li>
+
+ <ul class="hintlist">
+
+ <p>No hints.</p>
+
+ </ul>
+
+ <li class="fileitem">html-output_1.0+dsfg-1.1.changes</li>
+
+ <ul class="hintlist">
+
+ <p>No hints.</p>
+
+ </ul>
+
+
+</ul>
+
+
+</article>
+
+</main>
+
+<hr/>
+
+<footer>
+ <p>
+ Comments about this web page? Please report a bug against the
+ <a href="https://salsa.debian.org/lintian/lintian">lintian</a>
+ package and mention the <em>standalone HTML</em> output format.
+ </p>
+</footer>
+
+</body>
+</html>
diff --git a/t/recipes/lintian-features/html-output/eval/post-test b/t/recipes/lintian-features/html-output/eval/post-test
new file mode 100644
index 0000000..ce45675
--- /dev/null
+++ b/t/recipes/lintian-features/html-output/eval/post-test
@@ -0,0 +1,3 @@
+/Produced by Lintian version/ d
+/The run started/ d
+s/_[[:alnum:]]+\.(changes|buildinfo)/\.\1/
diff --git a/t/recipes/lintian-features/json-output/build-spec/debian/control.in b/t/recipes/lintian-features/json-output/build-spec/debian/control.in
new file mode 100644
index 0000000..48330e1
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/debian/control.in
@@ -0,0 +1,20 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, libssl0.9.8 (>= 0abcd)
+Essential:yes
+Section: [% $section %]
+Description: [% $description %].
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+ .
+ The homepage is http://www.example.com/.
diff --git a/t/recipes/lintian-features/json-output/build-spec/debian/dirs b/t/recipes/lintian-features/json-output/build-spec/debian/dirs
new file mode 100644
index 0000000..055295f
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/local/share/lintian
+var/lock/lintian
diff --git a/t/recipes/lintian-features/json-output/build-spec/debian/examples b/t/recipes/lintian-features/json-output/build-spec/debian/examples
new file mode 100644
index 0000000..33a9488
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/debian/examples
@@ -0,0 +1 @@
+example
diff --git a/t/recipes/lintian-features/json-output/build-spec/debian/install b/t/recipes/lintian-features/json-output/build-spec/debian/install
new file mode 100644
index 0000000..d6f0c2d
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/debian/install
@@ -0,0 +1,2 @@
+script usr/bin
+script.desktop usr/share/applications
diff --git a/t/recipes/lintian-features/json-output/build-spec/debian/rules b/t/recipes/lintian-features/json-output/build-spec/debian/rules
new file mode 100755
index 0000000..67e7058
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_usrlocal:
diff --git a/t/recipes/lintian-features/json-output/build-spec/debian/source.lintian-overrides b/t/recipes/lintian-features/json-output/build-spec/debian/source.lintian-overrides
new file mode 100644
index 0000000..8c1ea35
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/debian/source.lintian-overrides
@@ -0,0 +1 @@
+json-output source: dfsg-version-misspelled 1.0*
diff --git a/t/recipes/lintian-features/json-output/build-spec/diff/Changes b/t/recipes/lintian-features/json-output/build-spec/diff/Changes
new file mode 100644
index 0000000..2a267cd
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/diff/Changes
@@ -0,0 +1 @@
+This is unlike any other dummy changelog.
diff --git a/t/recipes/lintian-features/json-output/build-spec/fill-values b/t/recipes/lintian-features/json-output/build-spec/fill-values
new file mode 100644
index 0000000..34485c5
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/fill-values
@@ -0,0 +1,5 @@
+Testname: json-output
+Skeleton: upload-non-native
+Version: 1.0+dsfg-1.1
+Package-Architecture: all
+Description: Test Lintian's JSON output format
diff --git a/t/recipes/lintian-features/json-output/build-spec/orig/example b/t/recipes/lintian-features/json-output/build-spec/orig/example
new file mode 100755
index 0000000..1cde649
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/orig/example
@@ -0,0 +1,2 @@
+#!/usr/bin/foo
+echo This is some example.
diff --git a/t/recipes/lintian-features/json-output/build-spec/orig/script b/t/recipes/lintian-features/json-output/build-spec/orig/script
new file mode 100755
index 0000000..a10a951
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/orig/script
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /usr/share/debconf/confmodule
+echo 'Hello world'
diff --git a/t/recipes/lintian-features/json-output/build-spec/orig/script.desktop b/t/recipes/lintian-features/json-output/build-spec/orig/script.desktop
new file mode 100644
index 0000000..e1ec555
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/build-spec/orig/script.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=script
+Type=Application
+Comment=Incorrectly limited to particular environments
+Categories=Development;
+Exec=script
+OnlyShowIn=GNOME;KDE;
+Icon=foo
+Keywords=Lintian
diff --git a/t/recipes/lintian-features/json-output/eval/desc b/t/recipes/lintian-features/json-output/eval/desc
new file mode 100644
index 0000000..490d603
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/eval/desc
@@ -0,0 +1,5 @@
+Testname: json-output
+Options: --show-overrides
+Output-Format: json
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/json-output/eval/literal b/t/recipes/lintian-features/json-output/eval/literal
new file mode 100644
index 0000000..2feaddb
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/eval/literal
@@ -0,0 +1,297 @@
+{
+ "groups" : [
+ {
+ "group_id" : "json-output_1.0+dsfg-1.1",
+ "input_files" : [
+ {
+ "hints" : [
+ {
+ "experimental" : false,
+ "note" : "0.0.1-1 -> 1.0+dsfg-1 (missing) -> 1.0+dsfg-1.1",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/changelog"
+ },
+ "line_position" : 1
+ },
+ "tag" : "changelog-file-missing-explicit-entry",
+ "visibility" : "warning"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/patches/debian-changes-1.0+dsfg-1.1"
+ },
+ "line_position" : 0
+ },
+ "tag" : "format-3.0-but-debian-changes-patch",
+ "visibility" : "warning"
+ },
+ {
+ "experimental" : false,
+ "note" : "1.0+dsfg-1.1",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/changelog"
+ },
+ "line_position" : 1
+ },
+ "tag" : "maintainer-upload-has-incorrect-version-number",
+ "visibility" : "warning"
+ },
+ {
+ "experimental" : false,
+ "note" : "(in section for json-output) Section",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/control"
+ },
+ "line_position" : 13
+ },
+ "tag" : "installable-field-mirrors-source",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "3",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/watch"
+ },
+ "line_position" : 0
+ },
+ "tag" : "older-debian-watch-file-standard",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/patches/debian-changes-1.0+dsfg-1.1"
+ },
+ "line_position" : 0
+ },
+ "tag" : "patch-not-forwarded-upstream",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/patches/debian-changes-1.0+dsfg-1.1"
+ },
+ "line_position" : 0
+ },
+ "tag" : "quilt-patch-using-template-description",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/upstream/metadata"
+ },
+ "line_position" : 0
+ },
+ "tag" : "upstream-metadata-missing-bug-tracking",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/upstream/metadata"
+ },
+ "line_position" : 0
+ },
+ "tag" : "upstream-metadata-missing-repository",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "Essential",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/control"
+ },
+ "line_position" : 12
+ },
+ "tag" : "debian-control-has-unusual-field-spacing",
+ "visibility" : "pedantic"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "tag" : "no-homepage-field",
+ "visibility" : "pedantic"
+ },
+ {
+ "experimental" : true,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1.dsc (patched)",
+ "name" : "debian/watch"
+ },
+ "line_position" : 0
+ },
+ "tag" : "debian-watch-does-not-check-openpgp-signature",
+ "visibility" : "pedantic"
+ },
+ {
+ "experimental" : false,
+ "note" : "1.0+dsfg-1.1",
+ "override" : {
+ "justification" : ""
+ },
+ "tag" : "dfsg-version-misspelled",
+ "visibility" : "warning"
+ }
+ ],
+ "path" : "PATH"
+ },
+ {
+ "hints" : [
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "usr/local/share/"
+ },
+ "line_position" : 0
+ },
+ "tag" : "dir-in-usr-local",
+ "visibility" : "error"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "usr/local/share/lintian/"
+ },
+ "line_position" : 0
+ },
+ "tag" : "dir-in-usr-local",
+ "visibility" : "error"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "var/lock/lintian/"
+ },
+ "line_position" : 0
+ },
+ "tag" : "dir-or-file-in-var-lock",
+ "visibility" : "error"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "tag" : "new-essential-package",
+ "visibility" : "error"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "usr/bin/script"
+ },
+ "line_position" : 0
+ },
+ "tag" : "no-manual-page",
+ "visibility" : "warning"
+ },
+ {
+ "experimental" : false,
+ "note" : "http://www.example.com/.",
+ "tag" : "description-possibly-contains-homepage",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "usr/share/applications/script.desktop"
+ },
+ "line_position" : 0
+ },
+ "tag" : "desktop-entry-limited-to-environments",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "usr/local/share/lintian/"
+ },
+ "line_position" : 0
+ },
+ "tag" : "package-contains-empty-directory",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "\"Test Lintian's JSON output format.\"",
+ "tag" : "synopsis-is-a-sentence",
+ "visibility" : "info"
+ },
+ {
+ "experimental" : false,
+ "note" : "/usr/bin/foo",
+ "pointer" : {
+ "item" : {
+ "index" : "json-output_1.0+dsfg-1.1_all.deb (installed)",
+ "name" : "usr/share/doc/json-output/examples/example"
+ },
+ "line_position" : 0
+ },
+ "tag" : "example-unusual-interpreter",
+ "visibility" : "pedantic"
+ }
+ ],
+ "path" : "PATH"
+ },
+ {
+ "hints" : [],
+ "path" : "PATH"
+ },
+ {
+ "hints" : [],
+ "path" : "PATH"
+ }
+ ],
+ "source_name" : "json-output",
+ "source_version" : "1.0+dsfg-1.1"
+ }
+ ],
+ "lintian_version" : "VERSION"
+}
diff --git a/t/recipes/lintian-features/json-output/eval/post-test b/t/recipes/lintian-features/json-output/eval/post-test
new file mode 100644
index 0000000..beff2c3
--- /dev/null
+++ b/t/recipes/lintian-features/json-output/eval/post-test
@@ -0,0 +1,2 @@
+s/("lintian_version" : )"[^"]*"/\1"VERSION"/
+s/("path" : )"[^"]*"/\1"PATH"/
diff --git a/t/recipes/lintian-features/lintian-check-tags-file/build-spec/debian/control.in b/t/recipes/lintian-features/lintian-check-tags-file/build-spec/debian/control.in
new file mode 100644
index 0000000..ef93898
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-check-tags-file/build-spec/debian/control.in
@@ -0,0 +1,12 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Section: unknown
+Architecture: [% $package_architecture %]
+Description: [% $description %]
diff --git a/t/recipes/lintian-features/lintian-check-tags-file/build-spec/fill-values b/t/recipes/lintian-features/lintian-check-tags-file/build-spec/fill-values
new file mode 100644
index 0000000..80f1b5a
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-check-tags-file/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lintian-check-tags-file
+Description: Test checking a specific list of tags from a file
diff --git a/t/recipes/lintian-features/lintian-check-tags-file/eval/desc b/t/recipes/lintian-features/lintian-check-tags-file/eval/desc
new file mode 100644
index 0000000..d38aad2
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-check-tags-file/eval/desc
@@ -0,0 +1,5 @@
+Testname: lintian-check-tags-file
+Default-Lintian-Options: --display-info --display-experimental
+Options: --tags-from-file ./tag-list
+Match-Strategy: literal
+Output-Format: EWI
diff --git a/t/recipes/lintian-features/lintian-check-tags-file/eval/literal b/t/recipes/lintian-features/lintian-check-tags-file/eval/literal
new file mode 100644
index 0000000..35c6abe
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-check-tags-file/eval/literal
@@ -0,0 +1,2 @@
+E: lintian-check-tags-file: section-is-dh_make-template
+W: lintian-check-tags-file source: debhelper-but-no-misc-depends lintian-check-tags-file
diff --git a/t/recipes/lintian-features/lintian-check-tags-file/eval/tag-list b/t/recipes/lintian-features/lintian-check-tags-file/eval/tag-list
new file mode 100644
index 0000000..2b96cbf
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-check-tags-file/eval/tag-list
@@ -0,0 +1,7 @@
+# This is a comment.
+
+# Check a couple of tags that we issue
+section-is-dh_make-template, debhelper-but-no-misc-depends
+
+# Check some other tag that we don't issue
+ malformed-override
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/debian/control.in b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/control.in
new file mode 100644
index 0000000..6faa27e
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, libssl0.9.8 (>= 0abcd)
+Essential:yes
+Section: [% $section %]
+Description: [% $description %].
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ The homepage is http://www.example.com/.
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/debian/dirs b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/dirs
new file mode 100644
index 0000000..055295f
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/local/share/lintian
+var/lock/lintian
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/debian/examples b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/examples
new file mode 100644
index 0000000..33a9488
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/examples
@@ -0,0 +1 @@
+example
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/debian/install b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/install
new file mode 100644
index 0000000..d6f0c2d
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/install
@@ -0,0 +1,2 @@
+script usr/bin
+script.desktop usr/share/applications
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/debian/rules b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/rules
new file mode 100755
index 0000000..67e7058
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_usrlocal:
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/diff/Changes b/t/recipes/lintian-features/lintian-display-level/build-spec/diff/Changes
new file mode 100644
index 0000000..2a267cd
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/diff/Changes
@@ -0,0 +1 @@
+This is unlike any other dummy changelog.
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/fill-values b/t/recipes/lintian-features/lintian-display-level/build-spec/fill-values
new file mode 100644
index 0000000..1790abe
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: lintian-display-level
+Skeleton: upload-non-native
+Version: 1.0+dsfg-1.1
+Description: Test Lintian --display-level handling
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/orig/example b/t/recipes/lintian-features/lintian-display-level/build-spec/orig/example
new file mode 100755
index 0000000..1cde649
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/orig/example
@@ -0,0 +1,2 @@
+#!/usr/bin/foo
+echo This is some example.
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/orig/script b/t/recipes/lintian-features/lintian-display-level/build-spec/orig/script
new file mode 100755
index 0000000..a10a951
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/orig/script
@@ -0,0 +1,3 @@
+#!/bin/sh
+. /usr/share/debconf/confmodule
+echo 'Hello world'
diff --git a/t/recipes/lintian-features/lintian-display-level/build-spec/orig/script.desktop b/t/recipes/lintian-features/lintian-display-level/build-spec/orig/script.desktop
new file mode 100644
index 0000000..859bb18
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/build-spec/orig/script.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=script
+Type=Application
+Comment=Incorrectly limited to particular environments
+Categories=Development;
+Exec=script
+OnlyShowIn=GNOME;KDE;
diff --git a/t/recipes/lintian-features/lintian-display-level/eval/desc b/t/recipes/lintian-features/lintian-display-level/eval/desc
new file mode 100644
index 0000000..989171c
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/eval/desc
@@ -0,0 +1,5 @@
+Testname: lintian-display-level
+Match-Strategy: literal
+Output-Format: EWI
+Lintian-Command-Line: --no-user-dirs [% $options %] --profile [% $profile %] --allow-root --no-cfg --exp-output format=[% $output_format %] --pedantic -I -E --display-level '-info' --display-level '-error'
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/lintian-display-level/eval/literal b/t/recipes/lintian-features/lintian-display-level/eval/literal
new file mode 100644
index 0000000..59cbe56
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-display-level/eval/literal
@@ -0,0 +1,9 @@
+W: lintian-display-level source: changelog-file-missing-explicit-entry 0.0.1-1 -> 1.0+dsfg-1 (missing) -> 1.0+dsfg-1.1 [debian/changelog:1]
+W: lintian-display-level source: dfsg-version-misspelled 1.0+dsfg-1.1
+W: lintian-display-level source: format-3.0-but-debian-changes-patch [debian/patches/debian-changes-1.0+dsfg-1.1]
+W: lintian-display-level source: maintainer-upload-has-incorrect-version-number 1.0+dsfg-1.1 [debian/changelog:1]
+W: lintian-display-level: no-manual-page [usr/bin/script]
+P: lintian-display-level source: debian-control-has-unusual-field-spacing Essential [debian/control:12]
+P: lintian-display-level: example-unusual-interpreter /usr/bin/foo [usr/share/doc/lintian-display-level/examples/example]
+P: lintian-display-level source: no-homepage-field
+X: lintian-display-level source: debian-watch-does-not-check-openpgp-signature [debian/watch]
diff --git a/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/control.in b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/control.in
new file mode 100644
index 0000000..6faa27e
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Depends: ${misc:Depends}, libssl0.9.8 (>= 0abcd)
+Essential:yes
+Section: [% $section %]
+Description: [% $description %].
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ The homepage is http://www.example.com/.
diff --git a/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/dirs b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/dirs
new file mode 100644
index 0000000..db81444
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/dirs
@@ -0,0 +1,3 @@
+usr/local/share/lintian
+var/lock/lintian
+opt/lintian
diff --git a/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/rules b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/rules
new file mode 100755
index 0000000..67e7058
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+%:
+ dh $@
+
+override_dh_usrlocal:
diff --git a/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/fill-values b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/fill-values
new file mode 100644
index 0000000..2088697
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-ftp-rejects/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lintian-ftp-rejects
+Description: Test Lintian --ftp-master-rejects handling
diff --git a/t/recipes/lintian-features/lintian-ftp-rejects/eval/desc b/t/recipes/lintian-features/lintian-ftp-rejects/eval/desc
new file mode 100644
index 0000000..515d9e7
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-ftp-rejects/eval/desc
@@ -0,0 +1,4 @@
+Testname: lintian-ftp-rejects
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --ftp-master-rejects --display-info --display-experimental
diff --git a/t/recipes/lintian-features/lintian-ftp-rejects/eval/literal b/t/recipes/lintian-features/lintian-ftp-rejects/eval/literal
new file mode 100644
index 0000000..68739ce
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-ftp-rejects/eval/literal
@@ -0,0 +1,3 @@
+E: lintian-ftp-rejects: dir-or-file-in-opt [opt/lintian/]
+E: lintian-ftp-rejects: dir-or-file-in-var-lock [var/lock/lintian/]
+W: lintian-ftp-rejects: empty-binary-package
diff --git a/t/recipes/lintian-features/lintian-no-override/build-spec/debian/dirs b/t/recipes/lintian-features/lintian-no-override/build-spec/debian/dirs
new file mode 100644
index 0000000..eb4bf70
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-no-override/build-spec/debian/dirs
@@ -0,0 +1 @@
+usr/bad/dir
diff --git a/t/recipes/lintian-features/lintian-no-override/build-spec/debian/lintian-no-override.lintian-overrides b/t/recipes/lintian-features/lintian-no-override/build-spec/debian/lintian-no-override.lintian-overrides
new file mode 100644
index 0000000..2ca3546
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-no-override/build-spec/debian/lintian-no-override.lintian-overrides
@@ -0,0 +1 @@
+non-standard-dir-in-usr usr/bad/
diff --git a/t/recipes/lintian-features/lintian-no-override/build-spec/fill-values b/t/recipes/lintian-features/lintian-no-override/build-spec/fill-values
new file mode 100644
index 0000000..876c775
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-no-override/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lintian-no-override
+Description: Test no-override option
diff --git a/t/recipes/lintian-features/lintian-no-override/eval/desc b/t/recipes/lintian-features/lintian-no-override/eval/desc
new file mode 100644
index 0000000..48fe155
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-no-override/eval/desc
@@ -0,0 +1,5 @@
+Testname: lintian-no-override
+Options: --no-override
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/lintian-no-override/eval/literal b/t/recipes/lintian-features/lintian-no-override/eval/literal
new file mode 100644
index 0000000..3de7380
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-no-override/eval/literal
@@ -0,0 +1,3 @@
+W: lintian-no-override: empty-binary-package
+W: lintian-no-override: non-standard-dir-in-usr [usr/bad/]
+I: lintian-no-override: package-contains-empty-directory [usr/bad/dir/]
diff --git a/t/recipes/lintian-features/lintian-suppress-tags/build-spec/debian/control.in b/t/recipes/lintian-features/lintian-suppress-tags/build-spec/debian/control.in
new file mode 100644
index 0000000..5814925
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-suppress-tags/build-spec/debian/control.in
@@ -0,0 +1,12 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Section: unknown
+Architecture: [% $package_architecture %]
+Description: [% $description %] (dummy)
diff --git a/t/recipes/lintian-features/lintian-suppress-tags/build-spec/fill-values b/t/recipes/lintian-features/lintian-suppress-tags/build-spec/fill-values
new file mode 100644
index 0000000..e46ab84
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-suppress-tags/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: lintian-suppress-tags
+Description: Test tag suppression
diff --git a/t/recipes/lintian-features/lintian-suppress-tags/eval/desc b/t/recipes/lintian-features/lintian-suppress-tags/eval/desc
new file mode 100644
index 0000000..2b78d1a
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-suppress-tags/eval/desc
@@ -0,0 +1,6 @@
+Testname: lintian-suppress-tags
+Options: --suppress-tags extended-description-is-empty
+ --suppress-tags-from-file ./suppress
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/lintian-features/lintian-suppress-tags/eval/literal b/t/recipes/lintian-features/lintian-suppress-tags/eval/literal
new file mode 100644
index 0000000..f3d8b9d
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-suppress-tags/eval/literal
@@ -0,0 +1 @@
+W: lintian-suppress-tags: empty-binary-package
diff --git a/t/recipes/lintian-features/lintian-suppress-tags/eval/suppress b/t/recipes/lintian-features/lintian-suppress-tags/eval/suppress
new file mode 100644
index 0000000..70e4b19
--- /dev/null
+++ b/t/recipes/lintian-features/lintian-suppress-tags/eval/suppress
@@ -0,0 +1,7 @@
+# This is a comment.
+
+# Suppress a tag not present in the test.
+malformed-override
+
+# Suppress two tags on the same line.
+section-is-dh_make-template,debhelper-but-no-misc-depends
diff --git a/t/recipes/odd-inputs/file-info-errors/build-spec/fill-values b/t/recipes/odd-inputs/file-info-errors/build-spec/fill-values
new file mode 100644
index 0000000..1152712
--- /dev/null
+++ b/t/recipes/odd-inputs/file-info-errors/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: file-info-errors
+Description: Test handling of errors from file
diff --git a/t/recipes/odd-inputs/file-info-errors/build-spec/orig/README b/t/recipes/odd-inputs/file-info-errors/build-spec/orig/README
new file mode 100644
index 0000000..8ded722
--- /dev/null
+++ b/t/recipes/odd-inputs/file-info-errors/build-spec/orig/README
@@ -0,0 +1 @@
+File taken from clamav 0.94.dfsg.2. Causes errors with file 5.00.
diff --git a/t/recipes/odd-inputs/file-info-errors/build-spec/orig/split.clam.ole.docaa b/t/recipes/odd-inputs/file-info-errors/build-spec/orig/split.clam.ole.docaa
new file mode 100644
index 0000000..2e59330
--- /dev/null
+++ b/t/recipes/odd-inputs/file-info-errors/build-spec/orig/split.clam.ole.docaa
Binary files differ
diff --git a/t/recipes/odd-inputs/file-info-errors/eval/desc b/t/recipes/odd-inputs/file-info-errors/eval/desc
new file mode 100644
index 0000000..51cfb3e
--- /dev/null
+++ b/t/recipes/odd-inputs/file-info-errors/eval/desc
@@ -0,0 +1,4 @@
+Testname: file-info-errors
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/file-info-errors/eval/literal b/t/recipes/odd-inputs/file-info-errors/eval/literal
new file mode 100644
index 0000000..1e2c312
--- /dev/null
+++ b/t/recipes/odd-inputs/file-info-errors/eval/literal
@@ -0,0 +1,2 @@
+W: file-info-errors: empty-binary-package
+X: file-info-errors source: very-long-line-length-in-source-file 2741 > 512 [split.clam.ole.docaa:9]
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/dpkg-overrides b/t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/dpkg-overrides
new file mode 100644
index 0000000..7e4fadd
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/dpkg-overrides
@@ -0,0 +1 @@
+-DSource="../control-field-traversal-1"
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/fill-values b/t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/fill-values
new file mode 100644
index 0000000..b3085f5
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-1/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: control-field-traversal-1
+Version: 1
+Description: Test for directory traversal issues via field names or values
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-1/eval/desc b/t/recipes/odd-inputs/source/control-field-traversal-1/eval/desc
new file mode 100644
index 0000000..3ae45d6
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-1/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-field-traversal-1
+Output-Format: EWI
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-1/eval/literal b/t/recipes/odd-inputs/source/control-field-traversal-1/eval/literal
new file mode 100644
index 0000000..de9da6f
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-1/eval/literal
@@ -0,0 +1 @@
+warning: tainted source package '.._control-field-traversal-1', skipping
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/dpkg-overrides b/t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/dpkg-overrides
new file mode 100644
index 0000000..01baebc
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/dpkg-overrides
@@ -0,0 +1 @@
+-DBinary="./../control-field-traversal-2"
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/fill-values b/t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/fill-values
new file mode 100644
index 0000000..2e2152b
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-2/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: control-field-traversal-2
+Version: 1
+Description: Test for directory traversal issues via field names or values
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-2/eval/desc b/t/recipes/odd-inputs/source/control-field-traversal-2/eval/desc
new file mode 100644
index 0000000..ec4e26d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-2/eval/desc
@@ -0,0 +1,2 @@
+Testname: control-field-traversal-2
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-2/eval/hints b/t/recipes/odd-inputs/source/control-field-traversal-2/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-2/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/dpkg-overrides b/t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/dpkg-overrides
new file mode 100644
index 0000000..5d224c4
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/dpkg-overrides
@@ -0,0 +1 @@
+-DSource="../control-field-traversal-3"
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/fill-values b/t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/fill-values
new file mode 100644
index 0000000..0901187
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-3/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: control-field-traversal-3
+Version: 1
+Description: Test for directory traversal issues via field names or values
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-3/eval/desc b/t/recipes/odd-inputs/source/control-field-traversal-3/eval/desc
new file mode 100644
index 0000000..72c0c8c
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-3/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-field-traversal-3
+Output-Format: EWI
+Match-Strategy: literal
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/control-field-traversal-3/eval/literal b/t/recipes/odd-inputs/source/control-field-traversal-3/eval/literal
new file mode 100644
index 0000000..c2e93b4
--- /dev/null
+++ b/t/recipes/odd-inputs/source/control-field-traversal-3/eval/literal
@@ -0,0 +1 @@
+warning: tainted source package '.._control-field-traversal-3', skipping
diff --git a/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/README.source b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/README.source
new file mode 100644
index 0000000..336f590
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/README.source
@@ -0,0 +1 @@
+Hallo World
diff --git a/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/patches/series b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/patches/series
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/debian/patches/series
diff --git a/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/fill-values b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/fill-values
new file mode 100644
index 0000000..4a43408
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/fill-values
@@ -0,0 +1,5 @@
+Skeleton: source-native
+Testname: debian-source-dir-traversal-1
+Version: 1
+Description: Test for information disclosure via d/source
+Extra-Build-Depends: quilt
diff --git a/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/pre-build b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/pre-build
new file mode 100755
index 0000000..06c7bbe
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/build-spec/pre-build
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+dir="$1"
+
+# link to index file for the lab entry
+# - NB: This should not trigger source-contains-unsafe-symlink
+# because the link it self is not unsafe (i.e. it is safe
+# relative to unpacked, but unsafe relative to debfiles)
+
+ln -sf ../../index "$dir/debian/source/git-patches"
diff --git a/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/desc b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/desc
new file mode 100644
index 0000000..3163f8d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-source-dir-traversal-1
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/hints b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-source-dir-traversal-1/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/odd-inputs/source/debian-symlink/build-spec/fill-values b/t/recipes/odd-inputs/source/debian-symlink/build-spec/fill-values
new file mode 100644
index 0000000..d704912
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-symlink/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-native
+Testname: debian-symlink
+Version: 1
+Description: Test for debian-dir being a symlink
diff --git a/t/recipes/odd-inputs/source/debian-symlink/build-spec/post-clean b/t/recipes/odd-inputs/source/debian-symlink/build-spec/post-clean
new file mode 100755
index 0000000..6c81a05
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-symlink/build-spec/post-clean
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+packagedir="$1"
+
+ln -sfn . "$packagedir/debian"
diff --git a/t/recipes/odd-inputs/source/debian-symlink/eval/desc b/t/recipes/odd-inputs/source/debian-symlink/eval/desc
new file mode 100644
index 0000000..f2f93c3
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-symlink/eval/desc
@@ -0,0 +1,2 @@
+Testname: debian-symlink
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/debian-symlink/eval/hints b/t/recipes/odd-inputs/source/debian-symlink/eval/hints
new file mode 100644
index 0000000..bb086eb
--- /dev/null
+++ b/t/recipes/odd-inputs/source/debian-symlink/eval/hints
@@ -0,0 +1 @@
+debian-symlink (source): named-copyright-for-single-installable [copyright]
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/debian/watch b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/debian/watch
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/debian/watch
@@ -0,0 +1 @@
+
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/fill-values b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/fill-values
new file mode 100644
index 0000000..ffac82e
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: unpack-srcpkg-dot-dir
+Description: Test package for upstream tar files with a ./ prefix
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/README b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.c b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.c
new file mode 100644
index 0000000..53f8d16
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.c
@@ -0,0 +1 @@
+/* some C program */
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.h b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.h
new file mode 100644
index 0000000..da2c3b4
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/orig/foo.h
@@ -0,0 +1 @@
+/* some header */
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/tar-orig b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/tar-orig
new file mode 100755
index 0000000..87df74f
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/build-spec/tar-orig
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+tarstem="$1"
+directory="$2"
+
+files=$(cd $directory; ls | tr '\n' ' ')
+
+tar --create --file "$tarstem.tar.gz" --gzip --directory "$directory" $files
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/desc b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/desc
new file mode 100644
index 0000000..b8dd21d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/desc
@@ -0,0 +1,2 @@
+Testname: unpack-srcpkg-dot-dir
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/hints b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/hints
new file mode 100644
index 0000000..8b865ad
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-dir/eval/hints
@@ -0,0 +1,3 @@
+unpack-srcpkg-dot-dir (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+unpack-srcpkg-dot-dir (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+unpack-srcpkg-dot-dir (source): missing-debian-watch-file-standard [debian/watch]
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/README b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/debian/watch b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/debian/watch
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/debian/watch
@@ -0,0 +1 @@
+
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/fill-values b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/fill-values
new file mode 100644
index 0000000..d58be6f
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: unpack-srcpkg-dot-subdir
+Description: Test package for upstream tar files with a ./ prefix
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.c b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.c
new file mode 100644
index 0000000..53f8d16
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.c
@@ -0,0 +1 @@
+/* some C program */
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.h b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.h
new file mode 100644
index 0000000..da2c3b4
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/foo.h
@@ -0,0 +1 @@
+/* some header */
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/orig/some-file b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/orig/some-file
new file mode 100644
index 0000000..2cfb00b
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/orig/some-file
@@ -0,0 +1 @@
+CONTENTS
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/tar-orig b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/tar-orig
new file mode 100755
index 0000000..31b5ab7
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/build-spec/tar-orig
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+tarstem="$1"
+directory="$2"
+
+tar --create --file "$tarstem.tar.gz" --gzip "./$directory"
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/desc b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/desc
new file mode 100644
index 0000000..d267106
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/desc
@@ -0,0 +1,2 @@
+Testname: unpack-srcpkg-dot-subdir
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/hints b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/hints
new file mode 100644
index 0000000..ea08f95
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-dot-subdir/eval/hints
@@ -0,0 +1,3 @@
+unpack-srcpkg-dot-subdir (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+unpack-srcpkg-dot-subdir (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+unpack-srcpkg-dot-subdir (source): missing-debian-watch-file-standard [debian/watch]
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/debian/watch b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/debian/watch
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/debian/watch
@@ -0,0 +1 @@
+
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/fill-values b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/fill-values
new file mode 100644
index 0000000..664faee
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: source-non-native
+Testname: unpack-srcpkg-no-subdir
+Description: Test package for upstream tar files with no subdirectories
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/README b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.c b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.c
new file mode 100644
index 0000000..53f8d16
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.c
@@ -0,0 +1 @@
+/* some C program */
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.h b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.h
new file mode 100644
index 0000000..da2c3b4
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/orig/foo.h
@@ -0,0 +1 @@
+/* some header */
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/tar-orig b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/tar-orig
new file mode 100755
index 0000000..5f2bf42
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/build-spec/tar-orig
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+tarstem="$1"
+directory="$2"
+
+tar --create --file "$tarstem.tar.gz" --gzip --directory "$directory" .
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/desc b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/desc
new file mode 100644
index 0000000..7dc54fd
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/desc
@@ -0,0 +1,2 @@
+Testname: unpack-srcpkg-no-subdir
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/hints b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/hints
new file mode 100644
index 0000000..0c046b6
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-no-subdir/eval/hints
@@ -0,0 +1,3 @@
+unpack-srcpkg-no-subdir (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+unpack-srcpkg-no-subdir (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
+unpack-srcpkg-no-subdir (source): missing-debian-watch-file-standard [debian/watch]
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/README.source b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/README.source
new file mode 100644
index 0000000..bf030ae
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/README.source
@@ -0,0 +1 @@
+Information about patching
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/watch b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/watch
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/debian/watch
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/fill-values b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/fill-values
new file mode 100644
index 0000000..4bdbdd8
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/fill-values
@@ -0,0 +1,4 @@
+Skeleton: source-non-native
+Testname: unpack-srcpkg-xz
+Source-Format: 3.0 (quilt)
+Description: Test package for xz-compressed source packages
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/orig/README b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/orig/README
new file mode 100644
index 0000000..5709e2d
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/orig/README
@@ -0,0 +1 @@
+Some upstream README
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/tar-orig b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/tar-orig
new file mode 100755
index 0000000..ff8507e
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/build-spec/tar-orig
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+tarstem="$1"
+packagedir="$2"
+
+tar --create --file "$tarstem.tar.xz" --xz "$packagedir"
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/desc b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/desc
new file mode 100644
index 0000000..42add77
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/desc
@@ -0,0 +1,2 @@
+Testname: unpack-srcpkg-xz
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/hints b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/hints
new file mode 100644
index 0000000..b075841
--- /dev/null
+++ b/t/recipes/odd-inputs/source/unpack-srcpkg-xz/eval/hints
@@ -0,0 +1,2 @@
+unpack-srcpkg-xz (source): upstream-metadata-missing-repository [debian/upstream/metadata]
+unpack-srcpkg-xz (source): upstream-metadata-missing-bug-tracking [debian/upstream/metadata]
diff --git a/t/recipes/runner-features/runtests-arch-amd64/build-spec/debian/install b/t/recipes/runner-features/runtests-arch-amd64/build-spec/debian/install
new file mode 100644
index 0000000..08f8dfa
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-amd64/build-spec/debian/install
@@ -0,0 +1 @@
+dummy usr/lib/package/
diff --git a/t/recipes/runner-features/runtests-arch-amd64/build-spec/fill-values b/t/recipes/runner-features/runtests-arch-amd64/build-spec/fill-values
new file mode 100644
index 0000000..ddce4fb
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-amd64/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: runtests-arch-amd64
+Description: Test a package that is supposedly amd64-specific
diff --git a/t/recipes/runner-features/runtests-arch-amd64/build-spec/orig/dummy b/t/recipes/runner-features/runtests-arch-amd64/build-spec/orig/dummy
new file mode 100644
index 0000000..5c3118d
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-amd64/build-spec/orig/dummy
@@ -0,0 +1 @@
+dummy file
diff --git a/t/recipes/runner-features/runtests-arch-amd64/eval/desc b/t/recipes/runner-features/runtests-arch-amd64/eval/desc
new file mode 100644
index 0000000..184a76a
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-amd64/eval/desc
@@ -0,0 +1,5 @@
+Testname: runtests-arch-amd64
+Test-Architectures: amd64
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/runner-features/runtests-arch-amd64/eval/literal b/t/recipes/runner-features/runtests-arch-amd64/eval/literal
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-amd64/eval/literal
diff --git a/t/recipes/runner-features/runtests-arch-i386/build-spec/debian/install b/t/recipes/runner-features/runtests-arch-i386/build-spec/debian/install
new file mode 100644
index 0000000..08f8dfa
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-i386/build-spec/debian/install
@@ -0,0 +1 @@
+dummy usr/lib/package/
diff --git a/t/recipes/runner-features/runtests-arch-i386/build-spec/fill-values b/t/recipes/runner-features/runtests-arch-i386/build-spec/fill-values
new file mode 100644
index 0000000..88947ba
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-i386/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: runtests-arch-i386
+Description: Test a package that is supposedly i386-specific
diff --git a/t/recipes/runner-features/runtests-arch-i386/build-spec/orig/dummy b/t/recipes/runner-features/runtests-arch-i386/build-spec/orig/dummy
new file mode 100644
index 0000000..5c3118d
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-i386/build-spec/orig/dummy
@@ -0,0 +1 @@
+dummy file
diff --git a/t/recipes/runner-features/runtests-arch-i386/eval/desc b/t/recipes/runner-features/runtests-arch-i386/eval/desc
new file mode 100644
index 0000000..0238ccd
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-i386/eval/desc
@@ -0,0 +1,5 @@
+Testname: runtests-arch-i386
+Test-Architectures: i386
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/runner-features/runtests-arch-i386/eval/literal b/t/recipes/runner-features/runtests-arch-i386/eval/literal
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/t/recipes/runner-features/runtests-arch-i386/eval/literal
diff --git a/t/recipes/runner-features/runtests-calibration/build-spec/fill-values b/t/recipes/runner-features/runtests-calibration/build-spec/fill-values
new file mode 100644
index 0000000..49205b5
--- /dev/null
+++ b/t/recipes/runner-features/runtests-calibration/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: runtests-calibration
+Description: Test calibration support
diff --git a/t/recipes/runner-features/runtests-calibration/eval/desc b/t/recipes/runner-features/runtests-calibration/eval/desc
new file mode 100644
index 0000000..ce98d1b
--- /dev/null
+++ b/t/recipes/runner-features/runtests-calibration/eval/desc
@@ -0,0 +1,2 @@
+Testname: runtests-calibration
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/runner-features/runtests-calibration/eval/hints b/t/recipes/runner-features/runtests-calibration/eval/hints
new file mode 100644
index 0000000..1736a4d
--- /dev/null
+++ b/t/recipes/runner-features/runtests-calibration/eval/hints
@@ -0,0 +1 @@
+runtests-calibration (source): lintian-says-hi ;)
diff --git a/t/recipes/runner-features/runtests-calibration/eval/test-calibration b/t/recipes/runner-features/runtests-calibration/eval/test-calibration
new file mode 100755
index 0000000..7904286
--- /dev/null
+++ b/t/recipes/runner-features/runtests-calibration/eval/test-calibration
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+# a previous version appended here but it breaks repeat runs
+echo "runtests-calibration (source): lintian-says-goodbye" > "$2"
+echo "runtests-calibration (source): lintian-says-goodbye" > "$3"
diff --git a/t/recipes/runner-features/runtests-options/build-spec/debian/compat.in b/t/recipes/runner-features/runtests-options/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/runner-features/runtests-options/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/runner-features/runtests-options/build-spec/debian/control.in b/t/recipes/runner-features/runtests-options/build-spec/debian/control.in
new file mode 100644
index 0000000..83a82c8
--- /dev/null
+++ b/t/recipes/runner-features/runtests-options/build-spec/debian/control.in
@@ -0,0 +1,16 @@
+Source: [% $source %]
+Priority: optional
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: 1.2.3
+Build-Depends: debhelper (>= 7)
+Rules-Requires-Root: no
+
+Package: [% $source %]
+Essential: yes
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
diff --git a/t/recipes/runner-features/runtests-options/build-spec/fill-values b/t/recipes/runner-features/runtests-options/build-spec/fill-values
new file mode 100644
index 0000000..1446d2d
--- /dev/null
+++ b/t/recipes/runner-features/runtests-options/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: runtests-options
+Description: Test a bad package but use -C to only catch some tags
diff --git a/t/recipes/runner-features/runtests-options/eval/desc b/t/recipes/runner-features/runtests-options/eval/desc
new file mode 100644
index 0000000..a9661bf
--- /dev/null
+++ b/t/recipes/runner-features/runtests-options/eval/desc
@@ -0,0 +1,5 @@
+Testname: runtests-options
+Check: fields/standards-version
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/runner-features/runtests-options/eval/literal b/t/recipes/runner-features/runtests-options/eval/literal
new file mode 100644
index 0000000..3bc5df8
--- /dev/null
+++ b/t/recipes/runner-features/runtests-options/eval/literal
@@ -0,0 +1,5 @@
+E: runtests-options source: invalid-standards-version 1.2.3
+E: runtests-options: new-essential-package
+W: runtests-options: empty-binary-package
+W: runtests-options source: no-versioned-debhelper-prerequisite 13
+P: runtests-options source: uses-debhelper-compat-file [debian/compat]
diff --git a/t/recipes/runner-features/runtests-todo/build-spec/debian/install b/t/recipes/runner-features/runtests-todo/build-spec/debian/install
new file mode 100644
index 0000000..7707533
--- /dev/null
+++ b/t/recipes/runner-features/runtests-todo/build-spec/debian/install
@@ -0,0 +1 @@
+dummy usr/share/lintian/
diff --git a/t/recipes/runner-features/runtests-todo/build-spec/fill-values b/t/recipes/runner-features/runtests-todo/build-spec/fill-values
new file mode 100644
index 0000000..6a4d7a2
--- /dev/null
+++ b/t/recipes/runner-features/runtests-todo/build-spec/fill-values
@@ -0,0 +1,3 @@
+Skeleton: upload-native
+Testname: runtests-todo
+Description: Test todo tests support
diff --git a/t/recipes/runner-features/runtests-todo/build-spec/orig/dummy b/t/recipes/runner-features/runtests-todo/build-spec/orig/dummy
new file mode 100644
index 0000000..b60941c
--- /dev/null
+++ b/t/recipes/runner-features/runtests-todo/build-spec/orig/dummy
@@ -0,0 +1 @@
+hello lintian!
diff --git a/t/recipes/runner-features/runtests-todo/eval/desc b/t/recipes/runner-features/runtests-todo/eval/desc
new file mode 100644
index 0000000..0d3a53f
--- /dev/null
+++ b/t/recipes/runner-features/runtests-todo/eval/desc
@@ -0,0 +1,5 @@
+Testname: runtests-todo
+Todo: This tests the Todo feature in the runner.
+Match-Strategy: literal
+Output-Format: EWI
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/runner-features/runtests-todo/eval/literal b/t/recipes/runner-features/runtests-todo/eval/literal
new file mode 100644
index 0000000..5f3c9af
--- /dev/null
+++ b/t/recipes/runner-features/runtests-todo/eval/literal
@@ -0,0 +1 @@
+E: runtests-todo source: lintian-says-hi ;)
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/README.Debian b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/README.Debian
new file mode 100644
index 0000000..5ce4495
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+dh-test for Debian
+------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Frank Lichtenheld <djpig@debian.org>, Thu, 4 Aug 2005 23:09:00 +0200
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/changelog.in b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/changelog.in
new file mode 100644
index 0000000..580f946
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/changelog.in
@@ -0,0 +1,6 @@
+generic-dh-make-2005 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release Closes: #nnnn (nnnn is the bug number of your ITP)
+
+ -- Frank Lichtenheld <djpig@debian.org> Thu, 4 Aug 2005 23:09:00 +0200
+
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/compat.in b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/control.in b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/control.in
new file mode 100644
index 0000000..4cbbc4e
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/control.in
@@ -0,0 +1,12 @@
+Source: generic-dh-make-2005
+Section: unknown
+Priority: optional
+Maintainer: Frank Lichtenheld <djpig@debian.org>
+Build-Depends: debhelper (>= 4.0.0)
+Standards-Version: 3.6.2
+
+Package: generic-dh-make-2005
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/copyright b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/copyright
new file mode 100644
index 0000000..2bcce49
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/copyright
@@ -0,0 +1,10 @@
+This package was debianized by Frank Lichtenheld <djpig@debian.org> on
+Thu, 4 Aug 2005 23:09:00 +0200.
+
+It was downloaded from <fill in ftp site>
+
+Copyright Holder: <put author(s) name and email here>
+
+License:
+
+<Put the license of the package here>
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/rules b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/rules
new file mode 100755
index 0000000..ee4bffb
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/debian/rules
@@ -0,0 +1,100 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+# $(MAKE)
+ #docbook-to-man debian/dh-test.sgml > dh-test.1
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ -$(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/dh-test.
+# $(MAKE) install DESTDIR=$(CURDIR)/debian/dh-test
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# dh_testversion
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+# dh_dhelp
+ #dh_suidregister # originally there, but no longer supported
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_python
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/fill-values b/t/recipes/tracking/generic-dh-make-2005/build-spec/fill-values
new file mode 100644
index 0000000..01371b6
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/fill-values
@@ -0,0 +1,8 @@
+Testname: generic-dh-make-2005
+Skeleton: upload-builder-only
+Author: Frank Lichtenheld <djpig@debian.org>
+Version: 1-1
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2005
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/orig/README b/t/recipes/tracking/generic-dh-make-2005/build-spec/orig/README
new file mode 100644
index 0000000..e6a5a27
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/orig/README
@@ -0,0 +1,9 @@
+This is something close to the results of running dh_make on a basically
+empty upstream tarball in 2005, but with the example files removed. It's
+a useful test for the various dh_make template and boilerplate tags, as
+well as many tags for ways of doing things dh_make used to promote but are
+now deprecated or old debhelper commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old packages.
diff --git a/t/recipes/tracking/generic-dh-make-2005/build-spec/pre-build.in b/t/recipes/tracking/generic-dh-make-2005/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/tracking/generic-dh-make-2005/eval/desc b/t/recipes/tracking/generic-dh-make-2005/eval/desc
new file mode 100644
index 0000000..2b633dd
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/eval/desc
@@ -0,0 +1,2 @@
+Testname: generic-dh-make-2005
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/tracking/generic-dh-make-2005/eval/hints b/t/recipes/tracking/generic-dh-make-2005/eval/hints
new file mode 100644
index 0000000..b8ad3c8
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/eval/hints
@@ -0,0 +1,31 @@
+generic-dh-make-2005 (source): upstream-metadata-file-is-missing
+generic-dh-make-2005 (source): trailing-whitespace [debian/rules:70]
+generic-dh-make-2005 (source): trailing-whitespace [debian/rules:54]
+generic-dh-make-2005 (source): trailing-whitespace [debian/rules:49]
+generic-dh-make-2005 (source): trailing-whitespace [debian/rules:32]
+generic-dh-make-2005 (source): trailing-whitespace [debian/changelog:6]
+generic-dh-make-2005 (source): silent-on-rules-requiring-root [debian/control]
+generic-dh-make-2005 (source): package-uses-deprecated-debhelper-compat-version 7
+generic-dh-make-2005 (source): older-source-format 1.0
+generic-dh-make-2005 (source): no-versioned-debhelper-prerequisite 7
+generic-dh-make-2005 (source): no-homepage-field
+generic-dh-make-2005 (source): no-dh-sequencer [debian/rules]
+generic-dh-make-2005 (source): no-dep5-copyright [debian/copyright]
+generic-dh-make-2005 (source): missing-debian-source-format
+generic-dh-make-2005 (source): dh-clean-k-is-deprecated [debian/rules]
+generic-dh-make-2005 (source): debian-watch-file-is-missing
+generic-dh-make-2005 (source): debian-rules-should-not-set-CFLAGS-from-noopt [debian/rules]
+generic-dh-make-2005 (source): debian-rules-missing-required-target build-indep [debian/rules]
+generic-dh-make-2005 (source): debian-rules-missing-required-target build-arch [debian/rules]
+generic-dh-make-2005 (source): debian-rules-ignores-make-clean-error [debian/rules:47]
+generic-dh-make-2005 (binary): wrong-bug-number-in-closes #nnnn [usr/share/doc/generic-dh-make-2005/changelog.Debian.gz:3]
+generic-dh-make-2005 (binary): section-is-dh_make-template
+generic-dh-make-2005 (binary): readme-debian-contains-debmake-template [usr/share/doc/generic-dh-make-2005/README.Debian]
+generic-dh-make-2005 (binary): package-contains-no-arch-dependent-files
+generic-dh-make-2005 (binary): initial-upload-closes-no-bugs [usr/share/doc/generic-dh-make-2005/changelog.Debian.gz:1]
+generic-dh-make-2005 (binary): helper-templates-in-copyright
+generic-dh-make-2005 (binary): extended-description-is-probably-too-short
+generic-dh-make-2005 (binary): empty-binary-package
+generic-dh-make-2005 (binary): description-is-dh_make-template
+generic-dh-make-2005 (binary): copyright-without-copyright-notice
+generic-dh-make-2005 (binary): changelog-is-dh_make-template [usr/share/doc/generic-dh-make-2005/changelog.Debian.gz:1]
diff --git a/t/recipes/tracking/generic-dh-make-2005/eval/post-test b/t/recipes/tracking/generic-dh-make-2005/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2005/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/README.Debian b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/README.Debian
new file mode 100644
index 0000000..69112e6
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/README.Debian
@@ -0,0 +1,6 @@
+generic-dh-make-2008 for Debian
+-------------------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/changelog.in b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/changelog.in
new file mode 100644
index 0000000..8d16a3d
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/changelog.in
@@ -0,0 +1,5 @@
+generic-dh-make-2008 ([% $version %]) [% $distribution %]; urgency=low
+
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+
+ -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/compat.in b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/compat.in
new file mode 100644
index 0000000..640a566
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/compat.in
@@ -0,0 +1 @@
+[% $dh_compat_level %]
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/control.in b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/control.in
new file mode 100644
index 0000000..a668392
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/control.in
@@ -0,0 +1,13 @@
+Source: generic-dh-make-2008
+Section: unknown
+Priority: optional
+Maintainer: Russ Allbery <rra@debian.org>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: generic-dh-make-2008
+Architecture: [% $package_architecture %]
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/copyright b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/copyright
new file mode 100644
index 0000000..31b796a
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/copyright
@@ -0,0 +1,24 @@
+This package was debianized by Russ Allbery <rra@debian.org> on
+Mon, 29 Dec 2008 17:33:59 -0800.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ <Put the license of the package here indented by 4 spaces>
+
+The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/cron.d.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/cron.d.ex
new file mode 100644
index 0000000..d00b7d0
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the generic-dh-make-2008 package
+#
+0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/dirs b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/docs b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-install.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
new file mode 100644
index 0000000..393594b
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/generic-dh-make-2008
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
new file mode 100644
index 0000000..c48d194
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008
+
+FLAVOR=$1
+PACKAGE=generic-dh-make-2008
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
new file mode 100644
index 0000000..b51657a
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el
+;; for the Debian generic-dh-make-2008 package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/generic-dh-make-2008")))
+;; If package-dir does not exist, the generic-dh-make-2008 package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode"
+ "Major mode for editing generic-dh-make-2008 files." t)
+ (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode))))
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
new file mode 100644
index 0000000..d770c6e
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.default.ex
@@ -0,0 +1,10 @@
+# Defaults for generic-dh-make-2008 initscript
+# sourced by /etc/init.d/generic-dh-make-2008
+# installed at /etc/default/generic-dh-make-2008 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
new file mode 100644
index 0000000..3b966d1
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/generic-dh-make-2008.doc-base.EX
@@ -0,0 +1,22 @@
+Document: generic-dh-make-2008
+Title: Debian generic-dh-make-2008 Manual
+Author: <insert document author here>
+Abstract: This manual describes what generic-dh-make-2008 is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz
+
+Format: text
+Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz
+
+Format: HTML
+Index: /usr/share/doc/generic-dh-make-2008/html/index.html
+Files: /usr/share/doc/generic-dh-make-2008/html/*.html
+
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.ex
new file mode 100644
index 0000000..b464594
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/generic-dh-make-2008
+NAME=generic-dh-make-2008
+DESC=generic-dh-make-2008
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/generic-dh-make-2008
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+# Include generic-dh-make-2008 defaults if available
+if [ -f /etc/default/generic-dh-make-2008 ] ; then
+ . /etc/default/generic-dh-make-2008
+fi
+
+set -e
+
+running_pid()
+{
+ # Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected child?
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ # Obtain the pid and check it against the binary name
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+ [ ! -f "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ kill -9 $pid
+ [ -n "$DODTIME" ] && sleep "$DODTIME"s
+ if running ; then
+ echo "Cannot kill $LABEL (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ if running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ force-stop)
+ echo -n "Forcefully stopping $DESC: "
+ force_stop
+ if ! running ; then
+ echo "$NAME."
+ else
+ echo " ERROR."
+ fi
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ [ -n "$DODTIME" ] && sleep $DODTIME
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ status)
+ echo -n "$LABEL is "
+ if running ; then
+ echo "running"
+ else
+ echo " not running."
+ exit 1
+ fi
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
new file mode 100644
index 0000000..b3559de
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL; if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides: generic-dh-make-2008
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Should-Start: $named
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description: <Enter a long description of the software>
+# <...>
+# <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here
+NAME=#PACKAGE # Introduce the short server's name here
+DESC=#PACKAGE # Introduce a short description here
+LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS="" # Additional options given to the server
+
+DIETIME=10 # Time to wait for the server to die, in seconds
+ # If this value is set too low you might not
+ # let some servers to die gracefully and
+ # 'restart' will not work
+
+#STARTTIME=2 # Time to wait for the server to start, in seconds
+ # If this value is set each time the server is
+ # started (on start or restart) the script will
+ # stall to try to determine if it is running
+ # If it is not set and the server takes time
+ # to setup a pid file the log message might
+ # be a false positive (says it did not start
+ # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log # Server logfile
+#DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value
+ # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+ . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+# log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+# log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+# exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+ if getent passwd | grep -q "^$DAEMONUSER:"; then
+ # Obtain the uid and gid
+ DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+ DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+ else
+ log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+ exit 1
+ fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+ pid=$1
+ name=$2
+ [ -z "$pid" ] && return 1
+ [ ! -d /proc/$pid ] && return 1
+ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+ # Is this the expected server
+ [ "$cmd" != "$name" ] && return 1
+ return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+ # No pidfile, probably no daemon present
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=`cat $PIDFILE`
+ running_pid $pid $DAEMON || return 1
+ return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ else
+# if we are using a daemonuser then change the user id
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --chuid $DAEMONUSER \
+ --exec $DAEMON -- $DAEMON_OPTS
+ errcode=$?
+ fi
+ return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+ if [ -z "$DAEMONUSER" ] ; then
+ killproc -p $PIDFILE $DAEMON
+ errcode=$?
+ else
+# if we are using a daemonuser then look for process that match
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER \
+ --exec $DAEMON
+ errcode=$?
+ fi
+
+ return $errcode
+}
+
+reload_server() {
+ [ ! -f "$PIDFILE" ] && return 1
+ pid=pidofproc $PIDFILE # This is the daemon's pid
+ # Send a SIGHUP
+ kill -1 $pid
+ return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+ [ ! -e "$PIDFILE" ] && return
+ if running ; then
+ kill -15 $pid
+ # Is it really dead?
+ sleep "$DIETIME"s
+ if running ; then
+ kill -9 $pid
+ sleep "$DIETIME"s
+ if running ; then
+ echo "Cannot kill $NAME (pid=$pid)!"
+ exit 1
+ fi
+ fi
+ fi
+ rm -f $PIDFILE
+}
+
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC " "$NAME"
+ # Check if it's running first
+ if running ; then
+ log_progress_msg "apparently already running"
+ log_end_msg 0
+ exit 0
+ fi
+ if start_server ; then
+ # NOTE: Some servers might die some time after they start,
+ # this code will detect this issue if STARTTIME is set
+ # to a reasonable value
+ [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ if running ; then
+ # It's ok, the server started and is running
+ log_end_msg 0
+ else
+ # It is not running after we did start
+ log_end_msg 1
+ fi
+ else
+ # Either we could not start it
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ if running ; then
+ # Only stop the server if we see it running
+ errcode=0
+ stop_server || errcode=$?
+ log_end_msg $errcode
+ else
+ # If it's not running don't do anything
+ log_progress_msg "apparently not running"
+ log_end_msg 0
+ exit 0
+ fi
+ ;;
+ force-stop)
+ # First try to stop gracefully the program
+ $0 stop
+ if running; then
+ # If it's still running try to kill it more forcefully
+ log_daemon_msg "Stopping (force) $DESC" "$NAME"
+ errcode=0
+ force_stop || errcode=$?
+ log_end_msg $errcode
+ fi
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ errcode=0
+ stop_server || errcode=$?
+ # Wait some sensible amount, some server need this
+ [ -n "$DIETIME" ] && sleep $DIETIME
+ start_server || errcode=$?
+ [ -n "$STARTTIME" ] && sleep $STARTTIME
+ running || errcode=$?
+ log_end_msg $errcode
+ ;;
+ status)
+
+ log_daemon_msg "Checking status of $DESC" "$NAME"
+ if running ; then
+ log_progress_msg "running"
+ log_end_msg 0
+ else
+ log_progress_msg "apparently not running"
+ log_end_msg 1
+ exit 1
+ fi
+ ;;
+ # Use this if the daemon cannot reload
+ reload)
+ log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+ log_warning_msg "cannot re-read the config file (use restart)."
+ ;;
+ # And this if it cann
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+ # if running ; then
+ # reload_server
+ # if ! running ; then
+ # Process died after we tried to reload
+ # log_progress_msg "died on reload"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ # else
+ # log_progress_msg "server is not running"
+ # log_end_msg 1
+ # exit 1
+ # fi
+ #;;
+
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.1.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.1.ex
new file mode 100644
index 0000000..d67baa2
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+generic-dh-make-2008 \- program to do something
+.SH SYNOPSIS
+.B generic-dh-make-2008
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B generic-dh-make-2008
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBgeneric-dh-make-2008\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+generic-dh-make-2008 was written by <upstream author>.
+.PP
+This manual page was written by Russ Allbery <rra@debian.org>,
+for the Debian project (but may be used by others).
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
new file mode 100644
index 0000000..26b3e0c
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.sgml.ex
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 29, 2008</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>rra@debian.org</email>">
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.xml.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
new file mode 100644
index 0000000..2d01c6f
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+ -''-param man.charmap.use.subset "0" \
+ -''-param make.year.ranges "1" \
+ -''-param make.single.year.ranges "1" \
+ /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+ manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "FIRSTNAME">
+ <!ENTITY dhsurname "SURNAME">
+ <!-- dhusername could also be set to "&firstname; &surname;". -->
+ <!ENTITY dhusername "Russ Allbery">
+ <!ENTITY dhemail "rra@debian.org">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1) and
+ http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+ <!ENTITY dhsection "SECTION">
+ <!-- TITLE should be something like "User commands" or similar (see
+ http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+ <!ENTITY dhtitle "generic-dh-make-2008 User Manual">
+ <!ENTITY dhucpackage "GENERIC-DH-MAKE-2008">
+ <!ENTITY dhpackage "generic-dh-make-2008">
+]>
+
+<refentry>
+ <refentryinfo>
+ <title>&dhtitle;</title>
+ <productname>&dhpackage;</productname>
+ <authorgroup>
+ <author>
+ <firstname>&dhfirstname;</firstname>
+ <surname>&dhsurname;</surname>
+ <contrib>Wrote this manpage for the Debian system.</contrib>
+ <address>
+ <email>&dhemail;</email>
+ </address>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ <legalnotice>
+ <para>This manual page was written for the Debian system
+ (but may be used by others).</para>
+ <para>Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.</para>
+ <para>On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.</para>
+ </legalnotice>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>&dhucpackage;</refentrytitle>
+ <manvolnum>&dhsection;</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- These are several examples, how syntaxes could look -->
+ <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+ <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <replaceable class="option">this</replaceable>
+ </arg>
+ <arg choice="opt">
+ <group choice="req">
+ <arg choice="plain"><option>-e</option></arg>
+ <arg choice="plain"><option>--example</option></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>this</replaceable></arg>
+ <arg choice="plain"><replaceable>that</replaceable></arg>
+ </group>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <!-- Normally the help and version options make the programs stop
+ right after outputting the requested information. -->
+ <group choice="opt">
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-h</option></arg>
+ <arg choice="plain"><option>--help</option></arg>
+ </group>
+ </arg>
+ <arg choice="plain">
+ <group choice="req">
+ <arg choice="plain"><option>-v</option></arg>
+ <arg choice="plain"><option>--version</option></arg>
+ </group>
+ </arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description">
+ <title>DESCRIPTION</title>
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+ <para>This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> format; see below.</para>
+ <para><command>&dhpackage;</command> is a program that...</para>
+ </refsect1>
+ <refsect1 id="options">
+ <title>OPTIONS</title>
+ <para>The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> files.</para>
+ <variablelist>
+ <!-- Use the variablelist.term.separator and the
+ variablelist.term.break.after parameters to
+ control the term elements. -->
+ <varlistentry>
+ <term><option>-e <replaceable>this</replaceable></option></term>
+ <term><option>--example=<replaceable>that</replaceable></option></term>
+ <listitem>
+ <para>Does this and that.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/etc/foo.conf</filename></term>
+ <listitem>
+ <para>The system-wide configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>${HOME}/.foo.conf</filename></term>
+ <listitem>
+ <para>The per-user configuration file to control the
+ behaviour of <application>&dhpackage;</application>. See
+ <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry> for further details.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="environment">
+ <title>ENVIONMENT</title>
+ <variablelist>
+ <varlistentry>
+ <term><envar>FOO_CONF</envar></term>
+ <listitem>
+ <para>If used, the defined file is used as configuration
+ file (see also <xref linkend="files"/>).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="diagnostics">
+ <title>DIAGNOSTICS</title>
+ <para>The following diagnostics may be issued
+ on <filename class="devicefile">stderr</filename>:</para>
+ <variablelist>
+ <varlistentry>
+ <term><errortext>Bad configuration file. Exiting.</errortext></term>
+ <listitem>
+ <para>The configuration file seems to contain a broken configuration
+ line. Use the <option>--verbose</option> option, to get more info.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para><command>&dhpackage;</command> provides some return codes, that can
+ be used in scripts:</para>
+ <segmentedlist>
+ <segtitle>Code</segtitle>
+ <segtitle>Diagnostic</segtitle>
+ <seglistitem>
+ <seg><errorcode>0</errorcode></seg>
+ <seg>Program exited successfully.</seg>
+ </seglistitem>
+ <seglistitem>
+ <seg><errorcode>1</errorcode></seg>
+ <seg>The configuration file seems to be broken.</seg>
+ </seglistitem>
+ </segmentedlist>
+ </refsect1>
+ <refsect1 id="bugs">
+ <!-- Or use this section to tell about upstream BTS. -->
+ <title>BUGS</title>
+ <para>The program is currently limited to only work
+ with the <package>foobar</package> library.</para>
+ <para>The upstreams <acronym>BTS</acronym> can be found
+ at <ulink url="http://bugzilla.foo.tld"/>.</para>
+ </refsect1>
+ <refsect1 id="see_also">
+ <title>SEE ALSO</title>
+ <!-- In alpabetical order. -->
+ <para><citerefentry>
+ <refentrytitle>bar</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>baz</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>, <citerefentry>
+ <refentrytitle>foo.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </citerefentry></para>
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+ <refentrytitle>info</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> system.</para>
+ </refsect1>
+</refentry>
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/menu.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/menu.ex
new file mode 100644
index 0000000..8a67e62
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008"
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postinst.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postinst.ex
new file mode 100644
index 0000000..b5f5ca7
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postinst.ex
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postrm.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postrm.ex
new file mode 100644
index 0000000..1d8a18a
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/postrm.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postrm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/preinst.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/preinst.ex
new file mode 100644
index 0000000..3134ccf
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/preinst.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# preinst script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/prerm.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/prerm.ex
new file mode 100644
index 0000000..4e5dd3f
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/prerm.ex
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for generic-dh-make-2008
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/rules b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/rules
new file mode 100755
index 0000000..92aa2b1
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/generic-dh-make-2008.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/watch.ex b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/watch.ex
new file mode 100644
index 0000000..e62d18f
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/fill-values b/t/recipes/tracking/generic-dh-make-2008/build-spec/fill-values
new file mode 100644
index 0000000..ef7a896
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/fill-values
@@ -0,0 +1,7 @@
+Testname: generic-dh-make-2008
+Skeleton: upload-builder-only
+Author: Russ Allbery <rra@debian.org>
+Package-Architecture: any
+Dh-Compat-Level: 7
+Description: Generic dh_make template generated in 2008
+Default-Build-Depends: debhelper (>= [% $dh_compat_level %]~)
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/orig/Makefile b/t/recipes/tracking/generic-dh-make-2008/build-spec/orig/Makefile
new file mode 100644
index 0000000..4f762d8
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/orig/Makefile
@@ -0,0 +1,4 @@
+# Stub Makefile that's just enough so that the default rules file doesn't
+# error out.
+
+clean install:
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/orig/README b/t/recipes/tracking/generic-dh-make-2008/build-spec/orig/README
new file mode 100644
index 0000000..6a3c009
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/orig/README
@@ -0,0 +1,13 @@
+dh_make 0.46 test
+=================
+
+This is the results of running dh_make 0.46 on an upstream tarball
+containing only this file. It's a useful test for the various dh_make
+template and boilerplate tags, as well as many tags for ways of doing
+things dh_make used to promote but are now deprecated or old debhelper
+commands that are now deprecated.
+
+Please don't modify anything about the files in this package; instead, add
+new tags as needed when Lintian adds new checks. This test case is
+intended to continue to be a test of Lintian's handling of old and
+template packages.
diff --git a/t/recipes/tracking/generic-dh-make-2008/build-spec/pre-build.in b/t/recipes/tracking/generic-dh-make-2008/build-spec/pre-build.in
new file mode 100755
index 0000000..bbdb5cb
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/build-spec/pre-build.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# not using any templates, but dh_clean requires compat
+
+echo "[% $dh_compat_level %]" > "$1/debian/compat"
diff --git a/t/recipes/tracking/generic-dh-make-2008/eval/desc b/t/recipes/tracking/generic-dh-make-2008/eval/desc
new file mode 100644
index 0000000..9a3515e
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/eval/desc
@@ -0,0 +1,3 @@
+Testname: generic-dh-make-2008
+See-Also: Debian Bug#497347
+Default-Lintian-Options: --pedantic --display-info --display-experimental
diff --git a/t/recipes/tracking/generic-dh-make-2008/eval/hints b/t/recipes/tracking/generic-dh-make-2008/eval/hints
new file mode 100644
index 0000000..f293f34
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/eval/hints
@@ -0,0 +1,54 @@
+generic-dh-make-2008 (source): upstream-metadata-file-is-missing
+generic-dh-make-2008 (source): trailing-whitespace [debian/rules:63]
+generic-dh-make-2008 (source): trailing-whitespace [debian/rules:48]
+generic-dh-make-2008 (source): trailing-whitespace [debian/rules:43]
+generic-dh-make-2008 (source): trailing-whitespace [debian/rules:35]
+generic-dh-make-2008 (source): trailing-whitespace [debian/rules:26]
+generic-dh-make-2008 (source): superfluous-clutter-in-homepage <insert the upstream URL, if relevant>
+generic-dh-make-2008 (source): silent-on-rules-requiring-root [debian/control]
+generic-dh-make-2008 (source): package-uses-deprecated-debhelper-compat-version 7
+generic-dh-make-2008 (source): out-of-date-standards-version 3.7.3 (released 2007-12-03) (current is CURRENT)
+generic-dh-make-2008 (source): older-source-format 1.0
+generic-dh-make-2008 (source): no-dh-sequencer [debian/rules]
+generic-dh-make-2008 (source): no-dep5-copyright [debian/copyright]
+generic-dh-make-2008 (source): missing-debian-source-format
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/watch.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/prerm.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/preinst.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/postrm.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/postinst.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/menu.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/manpage.xml.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/manpage.sgml.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/manpage.1.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/init.d.lsb.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/init.d.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/generic-dh-make-2008.doc-base.EX]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/generic-dh-make-2008.default.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/emacsen-startup.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/emacsen-remove.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/emacsen-install.ex]
+generic-dh-make-2008 (source): dh-make-template-in-source [debian/cron.d.ex]
+generic-dh-make-2008 (source): dh-clean-k-is-deprecated [debian/rules]
+generic-dh-make-2008 (source): debian-watch-file-is-missing
+generic-dh-make-2008 (source): debian-rules-missing-required-target build-indep [debian/rules]
+generic-dh-make-2008 (source): debian-rules-missing-required-target build-arch [debian/rules]
+generic-dh-make-2008 (source): bad-homepage <insert the upstream URL, if relevant>
+generic-dh-make-2008 (binary): wrong-bug-number-in-closes #nnnn [usr/share/doc/generic-dh-make-2008/changelog.Debian.gz:3]
+generic-dh-make-2008 (binary): superfluous-clutter-in-homepage <insert the upstream URL, if relevant>
+generic-dh-make-2008 (binary): section-is-dh_make-template
+generic-dh-make-2008 (binary): readme-debian-contains-debmake-template [usr/share/doc/generic-dh-make-2008/README.Debian]
+generic-dh-make-2008 (binary): package-contains-no-arch-dependent-files
+generic-dh-make-2008 (binary): package-contains-empty-directory [usr/sbin/]
+generic-dh-make-2008 (binary): package-contains-empty-directory [usr/bin/]
+generic-dh-make-2008 (binary): initial-upload-closes-no-bugs [usr/share/doc/generic-dh-make-2008/changelog.Debian.gz:1]
+generic-dh-make-2008 (binary): helper-templates-in-copyright
+generic-dh-make-2008 (binary): extended-description-is-probably-too-short
+generic-dh-make-2008 (binary): empty-binary-package
+generic-dh-make-2008 (binary): description-is-dh_make-template
+generic-dh-make-2008 (binary): copyright-without-copyright-notice
+generic-dh-make-2008 (binary): copyright-with-old-dh-make-debian-copyright
+generic-dh-make-2008 (binary): copyright-has-url-from-dh_make-boilerplate
+generic-dh-make-2008 (binary): copyright-contains-dh_make-todo-boilerplate
+generic-dh-make-2008 (binary): changelog-is-dh_make-template [usr/share/doc/generic-dh-make-2008/changelog.Debian.gz:1]
+generic-dh-make-2008 (binary): bad-homepage <insert the upstream URL, if relevant>
diff --git a/t/recipes/tracking/generic-dh-make-2008/eval/post-test b/t/recipes/tracking/generic-dh-make-2008/eval/post-test
new file mode 100644
index 0000000..faeef0b
--- /dev/null
+++ b/t/recipes/tracking/generic-dh-make-2008/eval/post-test
@@ -0,0 +1 @@
+s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/
diff --git a/t/scripts/01-critic/bin.t b/t/scripts/01-critic/bin.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/01-critic/bin.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/01-critic/lib.t b/t/scripts/01-critic/lib.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/01-critic/lib.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/01-critic/private.t b/t/scripts/01-critic/private.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/01-critic/private.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/01-critic/runner.pl b/t/scripts/01-critic/runner.pl
new file mode 100755
index 0000000..27f7b83
--- /dev/null
+++ b/t/scripts/01-critic/runner.pl
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+
+# Simple critic test runner that guesses it task from $0.
+# NB: If you change anything in this script, consider if
+# others.t need an update as well.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use IPC::Run3;
+use POSIX qw(ENOENT);
+
+use
+ if $ENV{'LINTIAN_COVERAGE'}, 'Test::More',
+ 'skip_all' => 'Not needed for coverage of Lintian';
+
+use Test::Lintian;
+use Test::More;
+
+plan skip_all => 'Only UNRELEASED versions are criticised'
+ if should_skip();
+
+eval 'use Test::Perl::Critic 1.00';
+plan skip_all => 'Test::Perl::Critic 1.00 required to run this test' if $@;
+
+eval 'use Perl::Tidy 20181120';
+# Actually we could just disable the perltidy check, but I am not
+# sure how to do that without making it ignore our perlcriticrc file.
+plan skip_all => 'Perl::Tidy 20180220 required to run this test' if $@;
+
+eval 'use PPIx::Regexp';
+diag('libppix-regexp-perl is needed to enable some checks') if $@;
+
+const my $DOT => q{.};
+
+my @test_paths = program_name_to_perl_paths($0);
+$ENV{'LINTIAN_BASE'} //= $DOT;
+my $critic_profile = "$ENV{'LINTIAN_BASE'}/.perlcriticrc";
+Test::Perl::Critic->import(-profile => $critic_profile);
+
+run_critic(@test_paths);
+
+exit(0);
+
+sub run_critic {
+ my (@args) = @_;
+
+ all_critic_ok(@args);
+
+ # For some reason, perltidy has started to leave behind a
+ # "perltidy.LOG" which is rather annoying. Lets have the tests
+ # unconditionally kill those.
+ my $err = unlink('perltidy.LOG');
+ if ($err) {
+ # Since this test is run in parallel, there is an
+ # race-condition between checking for the file and actually
+ # deleting. So just remove the file and ignore ENOENT
+ # problems.
+ die($err) if $err->errno != ENOENT;
+ }
+ return 1;
+}
+
+sub should_skip {
+ my $skip = 1;
+
+ my @command = qw{dpkg-parsechangelog -c0};
+ my $output;
+
+ run3(\@command, \undef, \$output);
+
+ $skip = 0
+ if $output =~ /^Distribution: UNRELEASED$/m;
+
+ return $skip;
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/01-critic/test-scripts.t b/t/scripts/01-critic/test-scripts.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/01-critic/test-scripts.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/02-minimum-version/bin.t b/t/scripts/02-minimum-version/bin.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/02-minimum-version/bin.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/02-minimum-version/lib.t b/t/scripts/02-minimum-version/lib.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/02-minimum-version/lib.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/02-minimum-version/private.t b/t/scripts/02-minimum-version/private.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/02-minimum-version/private.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/02-minimum-version/runner.pl b/t/scripts/02-minimum-version/runner.pl
new file mode 100755
index 0000000..b6dbac4
--- /dev/null
+++ b/t/scripts/02-minimum-version/runner.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More;
+use Test::Lintian;
+
+plan skip_all => 'Not needed for coverage of Lintian'
+ if $ENV{'LINTIAN_COVERAGE'};
+eval 'use Test::MinimumVersion';
+plan skip_all => 'Test::MinimumVersion required to run this test' if $@;
+
+const my $DOT => q{.};
+
+# squeeze => 5.10.1, Wheezy => 5.14.2, stretch => 5.24.1
+our $REQUIRED = 'v5.24.1';
+
+my @test_paths = program_name_to_perl_paths($0);
+$ENV{'LINTIAN_BASE'} //= $DOT;
+
+all_minimum_version_ok($REQUIRED, { paths => \@test_paths, no_plan => 1});
+
+done_testing();
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/02-minimum-version/test-scripts.t b/t/scripts/02-minimum-version/test-scripts.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/02-minimum-version/test-scripts.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/03-strict/bin.t b/t/scripts/03-strict/bin.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/03-strict/bin.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/03-strict/lib.t b/t/scripts/03-strict/lib.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/03-strict/lib.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/03-strict/private.t b/t/scripts/03-strict/private.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/03-strict/private.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/03-strict/runner.pl b/t/scripts/03-strict/runner.pl
new file mode 100755
index 0000000..79f4933
--- /dev/null
+++ b/t/scripts/03-strict/runner.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More;
+
+use Test::Lintian;
+
+const my $DOT => q{.};
+
+if ($ENV{'LINTIAN_COVERAGE'}) {
+ plan 'skip_all' => 'Not needed for coverage of Lintian';
+}
+
+eval 'use Test::Strict';
+plan skip_all => 'Test::Strict required to run this test' if $@;
+
+{
+ no warnings 'once';
+ $Test::Strict::TEST_WARNINGS = 1;
+}
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+# Files in commands check for the presence of LINTIAN_INCLUDE_DIRS in
+# BEGIN, so make sure it is present for them.
+$ENV{'LINTIAN_INCLUDE_DIRS'} = $ENV{'LINTIAN_BASE'};
+
+if ($0 =~ m{^(?:.*/)?reporting\.t$}) {
+ # html_reports loads ./config, so we have do chdir before checking it.
+ my $folder = "$ENV{LINTIAN_BASE}/reporting";
+ chdir($folder)
+ or die "Cannot change directory $folder";
+
+ all_perl_files_ok($DOT);
+
+} else {
+ my @test_paths = program_name_to_perl_paths($0);
+ all_perl_files_ok(@test_paths);
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/03-strict/test-scripts.t b/t/scripts/03-strict/test-scripts.t
new file mode 120000
index 0000000..c316f2d
--- /dev/null
+++ b/t/scripts/03-strict/test-scripts.t
@@ -0,0 +1 @@
+runner.pl \ No newline at end of file
diff --git a/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_amd64.changes b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_amd64.changes
new file mode 100644
index 0000000..d316ead
--- /dev/null
+++ b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_amd64.changes
@@ -0,0 +1,98 @@
+Format: 1.8
+Date: Sat, 30 Jun 2012 17:21:27 +0200
+Source: lintian
+Binary: lintian
+Architecture: source all
+Version: 2.5.10
+Distribution: unstable
+Urgency: low
+Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
+Changed-By: Niels Thykier <niels@thykier.net>
+Description:
+ lintian - Debian package checker
+Closes: 673276 678775
+Changes:
+ lintian (2.5.10) unstable; urgency=low
+ .
+ * Summary of tag changes:
+ + Added:
+ - incompatible-java-bytecode-format
+ - unknown-java-class-version
+ .
+ * checks/changes-file.desc:
+ + [NT] Fix typo in tag description. Thanks to Luca
+ Falavigna for spotting it.
+ * checks/files:
+ + [NT] Use new gzip decompressor from L::Util.
+ * checks/java{,.desc}:
+ + [NT] Catch unknown Java class versions.
+ + [NT] Catch uses of Java7 byte code as an experimental
+ check. It lacks the proper checks for cases where
+ packages have the proper dependencies for Java7 byte
+ code. (Closes: #673276)
+ .
+ * collection/*:
+ + [NT] Add missing load of the FileHandle module.
+ * collection/java-info{,.desc}:
+ + [NT] Use Archive::Zip instead of zipinfo + unzip to
+ extract information from Jar files.
+ + [NT] Limit java-info to files classified as "Zip Archive"
+ by file(1).
+ * collection/objdump-info:
+ + [NT] Only call readelf once per binary.
+ + [NT] Use xargs + a new helper to reduce the number of
+ readelf calls even further.
+ * collection/objdump-info-helper:
+ + [NT] New file.
+ * collection/strings:
+ + [NT] Optimize for the "common case" file names with a
+ fall-back to previous behaviour with special file names.
+ * collection/strings-helper:
+ + [NT] New file.
+ .
+ * debian/control:
+ + [NT] Add (Build-)Dependency on libarchive-zip-perl.
+ + [NT] Remove runtime dependency on unzip (replaced by
+ libarchive-zip-perl).
+ + [NT] Add explicit Build-Dependency on xz-utils instead
+ of relying on dpkg-dev's dependency on it.
+ + [NT] Add versioned xz-utils as alternative to xz-lzma
+ or lzma. (Closes: #678775)
+ + [NT] Add missing suggests for lzma packages. lzma is
+ only used for source packages compressed with lzma.
+ + [NT] Add suggests on libperlio-gzip-perl.
+ .
+ * frontend/lintian:
+ + [NT] Check if some collections can be skipped for existing
+ entries. This is mostly useful for static labs, where
+ certain checks can be now be rerun without having to run
+ "unpacked".
+ + [NT] Emit run times of collections and checks with debug
+ level 2 (or higher).
+ + [NT] Load lintian's libraries earlier.
+ + [NT] Add new option "--jobs" to control the number of
+ unpacking jobs Lintian will schedule in parallel.
+ + [NT] Improve Lintian's job scheduler to schedule unpacking
+ jobs on a group level rather than just a package level.
+ .
+ * lib/Lintian/Collect/[Binary,Package}.pm:
+ + [NT] Use new gzip decompressor from L::Util.
+ * lib/Lintian/CollScript.pm:
+ + [NT] New file.
+ * lib/Lintian/Util.pm:
+ + [NT] Add gzip decompressor preferring libperlio-perl if
+ available, but with fallback to a "fork+exec" of gzip.
+ + [NT] Load Digest::SHA immediately like Digest::MD5.
+Checksums-Sha1:
+ ea252bf1960aed48a93766b7bdc6a0c9f18f51d1 2556 lintian_2.5.10.dsc
+ 4fc358f2aeb6b797f580b75a254390f7cf2f7551 1105393 lintian_2.5.10.tar.gz
+ 736dc7b2ef09398327ea270bdcb1b51ccf479758 707676 lintian_2.5.10_all.deb
+Checksums-Sha256:
+ b29adb3b1eadbc00be0274f09f5345954e1340672e76f7b3f56af2b153a08b74 2556 lintian_2.5.10.dsc
+ 249f1a23d14d824151181728cc026e0971a5960ce7f7b1b383cc1e42e4244961 1105393 lintian_2.5.10.tar.gz
+ d1405f3aeffe079c75d2a2ee56666b3e6f20eb3e3ce5c77f7888bf4838400f31 707676 lintian_2.5.10_all.deb
+Files:
+ 8767bfbf1b004474936eb319b60f8dae 2556 devel optional lintian_2.5.10.dsc
+ 5dd1d5ca1ab71f672b34992e249064ca 1105393 devel optional lintian_2.5.10.tar.gz
+ e45c47e1110e05f76dc7df35f5f501c4 707676 devel optional lintian_2.5.10_all.deb
+
diff --git a/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_source.changes b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_source.changes
new file mode 100644
index 0000000..4281fa1
--- /dev/null
+++ b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_source.changes
@@ -0,0 +1,94 @@
+Format: 1.8
+Date: Sun, 17 Jun 2012 23:25:06 +0200
+Source: lintian
+Binary: lintian
+Architecture: source
+Version: 2.5.10
+Distribution: UNRELEASED
+Urgency: low
+Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
+Changed-By: Niels Thykier <niels@thykier.net>
+Description:
+ lintian - Debian package checker
+Closes: 673276 678775
+Changes:
+ lintian (2.5.10) UNRELEASED; urgency=low
+ .
+ * Summary of tag changes:
+ + Added:
+ - incompatible-java-bytecode-format
+ - unknown-java-class-version
+ .
+ * checks/changes-file.desc:
+ + [NT] Fix typo in tag description. Thanks to Luca
+ Falavigna for spotting it.
+ * checks/files:
+ + [NT] Use new gzip decompressor from L::Util.
+ * checks/java{,.desc}:
+ + [NT] Catch unknown Java class versions.
+ + [NT] Catch uses of Java7 byte code as an experimental
+ check. It lacks the proper checks for cases where
+ packages have the proper dependencies for Java7 byte
+ code. (Closes: #673276)
+ .
+ * collection/*:
+ + [NT] Add missing loads of FileHandle module.
+ * collection/java-info{,.desc}:
+ + [NT] Use Archive::Zip instead of zipinfo + unzip to
+ extract information from Jar files.
+ + [NT] Limit java-info to files classified as "Zip Archive"
+ by file(1).
+ * collection/objdump-info:
+ + [NT] Only call readelf once per binary.
+ + [NT] Use xargs + a new helper to reduce the number of
+ readelf calls even further.
+ * collection/objdump-info-helper:
+ + [NT] New file.
+ * collection/strings:
+ + [NT] Optimize for the "common case" file names with a
+ fall-back to previous behaviour with special file names.
+ * collection/strings-helper:
+ + [NT] New file.
+ .
+ * debian/control:
+ + [NT] Add (Build-)Dependency on libarchive-zip-perl.
+ + [NT] Remove runtime dependency on unzip (replaced by
+ libarchive-zip-perl).
+ + [NT] Add explicit Build-Dependency on xz-utils instead
+ of relying on dpkg-dev's dependency on it.
+ + [NT] Add versioned xz-utils as alternative to xz-lzma
+ or lzma. (Closes: #678775)
+ + [NT] Add missing suggests for lzma packages. lzma is
+ only used for source packages compressed with lzma.
+ + [NT] Add suggests on libperlio-gzip-perl.
+ .
+ * frontend/lintian:
+ + [NT] Check if some collections can be skipped for existing
+ entries. This is mostly useful for static labs, where
+ certain checks can be now be rerun without having to run
+ "unpacked".
+ + [NT] Emit run times of collections and checks with debug
+ level 2 (or higher).
+ + [NT] Load lintian's libraries earlier.
+ + [NT] Add new option "--jobs" to control the number of
+ unpacking jobs Lintian will schedule in parallel.
+ + [NT] Improve Lintian's job scheduler to schedule unpacking
+ jobs on a group level rather than just a package level.
+ .
+ * lib/Lintian/Collect/[Binary,Package}.pm:
+ + [NT] Use new gzip decompressor from L::Util.
+ * lib/Lintian/CollScript.pm:
+ + [NT] New file.
+ * lib/Lintian/Util.pm:
+ + [NT] Add gzip decompressor preferring libperlio-perl if
+ available, but with fallback to a "fork+exec" of gzip.
+ + [NT] Load Digest::SHA immediately like Digest::MD5.
+Checksums-Sha1:
+ b4b96b4d27c2cda31acf6d01b2e0654b6a09a132 1670 lintian_2.5.10.dsc
+ 8ea77c3b4a81fcbb63bac6a0847c687d4ddf2534 1105415 lintian_2.5.10.tar.gz
+Checksums-Sha256:
+ e15ca14cfbf30e0086cb5942b395f34a7d933e5668b3c7fa2b3900fed1ee98d2 1670 lintian_2.5.10.dsc
+ 5b91379747dfb6a779e4117db4a5bfb41154e97854de11b21475ddd273343c9c 1105415 lintian_2.5.10.tar.gz
+Files:
+ dda8d51e21900fd23393d2d4401e13d8 1670 devel optional lintian_2.5.10.dsc
+ b99b2e42c3b933efb8b147745dabdc46 1105415 devel optional lintian_2.5.10.tar.gz
diff --git a/t/scripts/Lintian/Lab/data/changes/lintian_2.5.11_amd64.changes b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.11_amd64.changes
new file mode 100644
index 0000000..23e21f8
--- /dev/null
+++ b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.11_amd64.changes
@@ -0,0 +1,272 @@
+Format: 1.8
+Date: Tue, 11 Dec 2012 22:12:06 +0100
+Source: lintian
+Binary: lintian
+Architecture: source all
+Version: 2.5.11
+Distribution: experimental
+Urgency: low
+Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
+Changed-By: Niels Thykier <niels@thykier.net>
+Description:
+ lintian - Debian package checker
+Closes: 623265 658474 660655 672273 673073 677874 677890 678639 678896 680391 681410 681769 681894 683224 683516 685497 686179 686352 687464 688320 688494 690014 690910 691489 692232 692616 693013 693442 693589 694328
+Changes:
+ lintian (2.5.11) experimental; urgency=low
+ .
+ * Summary of tag changes:
+ + Added:
+ - conffile-has-bad-file-type
+ - debug-package-for-multi-arch-same-pkg-not-coinstallable
+ - dm-upload-allowed-is-obsolete
+ - field-name-typo-in-dep5-copyright
+ - font-adobe-copyrighted-fragment
+ - license-problem-json-evil
+ - maintainer-script-has-unexpanded-debhelper-token
+ - shlibs-uses-obsolete-relation
+ - untranslatable-debconf-templates
+ + Removed:
+ - apparently-truncated-elf-binary
+ - data.tar.xz-member-without-dpkg-pre-depends
+ - debhelper-overrides-need-versioned-build-depends
+ - no-source-field
+ - preinst-uses-dpkg-maintscript-helper-without-predepends
+ .
+ * checks/*:
+ + [NT] Remove assumption that lintian will chdir into the
+ lab before calling the check.
+ + [NT] Be better at avoiding false-positive spelling errors
+ for references to packages that also happen to be common
+ spelling mistake. Thanks to Paul Tagliamonte for the
+ report. (Closes: #687464)
+ * checks/binaries{,.desc}:
+ + [NT] Merge apparently-truncated-elf-binary into
+ apparently-corrupted-elf-binary.
+ + [NT] Remove some references to objdump in tag descriptions
+ as Lintian uses readelf.
+ + [JW,NT] Update the "extract SONAME" shell snippet to properly
+ handle SONAMEs with uppercase letters.
+ + [JW] Recognise any path with matching the GNU multi-arch
+ triplet as a "Multi-arch: same"-safe directory. Thanks to
+ Matthias Klose for the report. (Closes: #681410)
+ * checks/changelog-file:
+ + [NT] Emit "missing changelog" for packages that are missing
+ their usr/share/doc/<pkg>/ dir and do not have a doc symlink.
+ Thanks to Faheem Mitha for the report. (Closes: #683224)
+ * checks/conffiles{,.desc}:
+ + [NT] Remove leading slash on the filename when emitting
+ file-in-etc-rc.d-marked-as-conffile.
+ + [NT] Add check for "non-file" conffiles. Thanks to Guillem
+ Jover for the report. (Closes: #690910)
+ * checks/control-file.desc:
+ + [NT] Bump obsolete-relation-form-in-source to serious as these
+ forms are now "must not" instead of "should not".
+ * checks/copyright.desc:
+ + [NT] Bump debian-copyright-file-uses-obsolete-national-encoding
+ to serious as copyright files must now be UTF-8 encoded.
+ * checks/cruft{,.desc}:
+ + [NT] Detect MS-DOS executables as windows binaries.
+ + [NT] Bump the version of config.{guess,sub} needed for
+ triggering the "outdated-autotools-helper-file" tag for arm64
+ support. Thanks to Paul Wise for the report and the
+ investigative work. (Closes: #690014)
+ + [RA,NT] Extend the description of the tags {outdated,ancient}-
+ autotools-helper-file to mention that dh-autoreconf might be
+ helpful tool.
+ + [NT] Apply patch from Bastien Roucariès to detect file licensed
+ under the "Good, not Evil"-JSON license. (Closes: #692616)
+ * checks/deb-format{,.desc}:
+ + [NT] Retire data.tar.xz tag. (Closes: #680391)
+ * checks/debhelper{,.desc}:
+ + [JW,NT] Consider missing versioned build-depends on
+ debhelper for compat 8 (or less) a pedantic issue.
+ (Closes: #681894)
+ + [NT] Retire debhelper-overrides-need-versioned-build-depends.
+ * checks/fields{,.desc}:
+ + [NT] Retire no-source-field since Lintian cannot emit it any
+ more due to dpkg-source refusing to extract such source
+ packages.
+ + [NT] Add tag for using the obsolete DMUA field. Thanks to
+ Ansgar Burchardt for the report. (Closes: #688494)
+ + [NT] Apply patches from Bernhard R. Link to check for
+ unintentional whitespace and use of non-cannical URIs in
+ Vcs-* fields. (Closes: #681769)
+ + [NT] Fix false-positive caused by insignificant whitespace.
+ Thanks to Dima Kogan for the report. (Closes: #693589)
+ * checks/files:
+ + [RG] Recognise smarty3 as smarty itself.
+ + [NT] Consider "tasksel tasks" as a meta package.
+ (Closes: #691489)
+ + [NT] Add patch from Bastien Roucariès to check for adobe font
+ license issues. (Closes: #694328)
+ * checks/group-checks{,.desc}:
+ + [NT] Detect debug packages not co-installable with itself,
+ when it provides debug symbols for a Multi-Arch: same package.
+ Thanks to Carsten Hey for the report. (Closes: #678896)
+ * checks/infofiles:
+ + [NT] Use L::Util's gzip decompressor rather than zcat.
+ * checks/init.d{,.desc}:
+ + [NT] Move file-in-etc-rc.d-marked-as-conffile to conffiles
+ check.
+ + [NT] Use L::Collect's conffile API instead of accessing the
+ "conffiles" control file directly.
+ * checks/java.desc:
+ + [NT] Remove the "experimental" marker of the Java byte-code
+ check.
+ * checks/manpages{,.desc}:
+ + [CW,NT] Manually do redirects and chdir rather than
+ invoking a shell when calling man and lexgrog.
+ + [CW,NT] Be stricter with missing roff preprocessors by
+ setting MANROFFSEQ to the empty string when calling man.
+ + [CW,NT] Pass -Tutf8 -Z to man to skip an unused part of
+ the groff pipeline. (Closes: #677874)
+ + [CW,NT] Use the L::Util gzip decompressor to open gzipped
+ manpages.
+ * checks/menu-format{,.desc}:
+ + [NT] Move a table of categories to a data file.
+ + [NT] Update description of menu-icon-missing. Lintian is now
+ sometimes able to find the icon in dependencies (if they are
+ built from the same source). Thanks to Ryan Kavanagh for the
+ report and the suggested patch. (Closes: #683516)
+ * checks/md5sums:
+ + [NT] Use L::Collect's conffile API instead of accessing the
+ "conffiles" control file directly.
+ * checks/po-debconf{,.desc}:
+ + [NT] Check for untranslatable templates that should be
+ translatable. Thanks to David Prévot for the report and the
+ patch. (Closes: #686179)
+ * checks/scripts{,.desc}:
+ + [NT] Retire check for dpkg-maintscript-helper in preinst.
+ (Closes: #685497)
+ + [NT] Fix false positive "executable-not-elf-or-script" when
+ the file is an executable hardlink to a script.
+ + [NT] Check maintainer scripts for unexpanded #DEBHELPER# tokens.
+ Thanks to Cyril "KiBi" Brulebois for the suggestion.
+ + [NT] Fix false-positive for removal of device files as /dev/shm
+ is not a device. Thanks to Steve Langasek for the report and
+ Roger Leigh for the extra info. (Closes: #693442)
+ * checks/shared-libs{,.desc}:
+ + [NT] Clearify the description of dev-pkg-without-shlib-symlink
+ to mention that the dev symlink is always expected in /usr.
+ + [NT] Add missing "+" in libtool regex. Thanks to Leo 'costela'
+ Antunes for the report.
+ + [RA,NT] Check for use of obsolete "<" and ">" in shlibs control
+ files. (Closes: #660655)
+ * checks/source-copyright{,.desc}:
+ + [NT] Check for possible misspellings of known field
+ names. (Closes: #678639)
+ + [NT] Fix typo of paragraph. Thanks to Logan Rosen for spotting
+ it. (Closes: #693013)
+ * checks/version-substvars{,.desc}:
+ + [JW,NT] Extend version-substvar-for-external-package to
+ all relations. Previously it was only triggered for
+ strong dependnecy relations. (Closes: #658474)
+ .
+ * collection/deb-format.desc:
+ + [NT] Remove unneeded changelog-file from "Needs-Info".
+ * collection/objdump-info{,-helper,.desc}:
+ + [NT] Change the output format for the collection and
+ bump the version of the collection accordingly.
+ + [NT] Apply patch from Peter Pentchev to ensure set{u,g}id
+ ELF binaries are properly processed, even when Lintian is
+ run as root. (Closes: #686352)
+ .
+ * data/binaries/embedded-libs:
+ + [RG] Check for embedded copies of jsoncpp.
+ * data/fields/archive-sections:
+ + [NT] Add new "tasks" section.
+ * data/menu-format/add-categories:
+ + [NT] New file.
+ * data/output/ftp-master-{,non}fatal:
+ + [NT] Removed, not used at run time.
+ * data/scripts/interpreters:
+ + [NT] Add nodejs and Rscript as a known interpreter.
+ Thanks to Marcelo Jorge Vieira and Sébastien Boisvert
+ for the report. (Closes: #623265, #692232)
+ * data/spelling/corrections:
+ + [NT,RG] Add more corrections.
+ + [RG] Re-sort the corrections.
+ .
+ * debian/control:
+ + [NT] Add (Build-)Depends on libtext-levenshtein-perl.
+ + [NT] Use anonscm.d.o in the Vcs-* fields instead of
+ git.d.o.
+ * debian/lintian.install:
+ + [NT] Install Lintian perl modules in /usr/share/perl5.
+ * debian/rules:
+ + [NT] Add target to generate HTML API doc. Currently
+ this is only run manually.
+ .
+ * frontend/lintian:
+ + [NT] Remove chdir calls for checks.
+ + [NT] Retire depreciated command line and config options.
+ + [NT] Refactor unpackaging into Lintian::Unpacker.
+ + [NT] Make parameter for --jobs optional. In its absence
+ Lintian will not limit the number of parallel jobs.
+ + [JW,NT] During the unpack phase, emit the name of the
+ group currently being unpacked when --verbose is given.
+ (Closes: #677890)
+ + [JW] Fix typo of Parallelization.
+ + [NT] Fix regression where --suppress-tags{,-from-file}
+ was ignored if -C or -X was passed. Thanks to Thorsten
+ Glaser for reporting it. (Closes: #688320)
+ .
+ * lib/Lintian/Collect{,/Source}.pm:
+ + [NT] Add optional parameter to field (and X_field)
+ methods that denotes the default value if a field is
+ missing. This avoid some boiler plate for callers
+ of the methods.
+ * lib/Lintian/Collect/Binary.pm:
+ + [NT] Bump API for objdump method.
+ + [NT] Add API for checking if a file is considered a
+ conffile.
+ * lib/Lintian/Collect/Package.pm:
+ + [NT] Strip leading slash off files extracted from tar.
+ * lib/Lintian/Command.pm:
+ + [NT] Work around a leak in IPC::Run (see #301774).
+ * lib/Lintian/Internal/FrontendUtil.pm:
+ + [NT] Always use Dpkg::Vendor to determine the default
+ vendor. Previously dpkg-vendor would be preferred if
+ available.
+ * lib/Lintian/Lab/Entry.pm:
+ + [NT] Use the L::Collect during creation instead of
+ manually reading the dsc for source packages.
+ * lib/Lintian/Profile.pm:
+ + [NT] Add support for the new optional "Load-Checks"
+ field in profiles.
+ + [NT] Ensure that the "lintian" check is always loaded
+ as these tags are not emitted by check modules. Also
+ enable the tags from the check by default.
+ * lib/Lintian/Tags.pm:
+ + [NT] Be explicit about the reason when rejecting an
+ override. Thanks to Yves-Alexis Perez for the report.
+ (Closes: #673073)
+ * lib/Lintian/Unpacker.pm:
+ + [NT] New file.
+ .
+ * man/lintian.pod.in:
+ + [NT] Remove documentation about removed options.
+ .
+ * reporting/graphs/{statistics,tags}.gpi:
+ + [JP] New file.
+ * reporting/html_reports:
+ + [JP,NT] Generate graphs of the collected history data.
+ (Closes: #672273)
+ + [NT] Make the mirror name configurable.
+ .
+ * vendors/ubuntu/main/data/changes-file/known-dists:
+ + [NT] Add "raring" as known Ubuntu distribution. Thanks to
+ Dmitry Shachnev. (LP: #1068208)
+Checksums-Sha1:
+ 850fcd4ceaf870dd6ac276c15c43b104dba52e9b 2602 lintian_2.5.11.dsc
+ c83143fc76461efbdfd687ea63964c650de9511e 1140318 lintian_2.5.11.tar.gz
+ 2148b6ee048eb28026990c33a25d16d2ea555d7e 733808 lintian_2.5.11_all.deb
+Checksums-Sha256:
+ 482bf299f9e3e77467b06fe7a49e719d961584a4826db73a84333fe709a209a5 2602 lintian_2.5.11.dsc
+ 91f96295eac39c4711a1e53715f9c4324539665ef8aa4c1500af5ba5efd39cd5 1140318 lintian_2.5.11.tar.gz
+ 9f33060a392f8cf1adf8ed37041d66fe2a270d01732386ea5fbb3fe700c4670d 733808 lintian_2.5.11_all.deb
+Files:
+ 8b4bd5c4bea641f0ff2f0d957fbbea78 2602 devel optional lintian_2.5.11.dsc
+ 90000a9fc6b5a7061f63154a946f9b79 1140318 devel optional lintian_2.5.11.tar.gz
+ 5bd3ff3eb29a80322a57cdbe2676bfbd 733808 devel optional lintian_2.5.11_all.deb
+
diff --git a/t/scripts/Lintian/Lab/data/changes/lintian_2.5.7_amd64.changes b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.7_amd64.changes
new file mode 100644
index 0000000..1c4353a
--- /dev/null
+++ b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.7_amd64.changes
@@ -0,0 +1,264 @@
+Format: 1.8
+Date: Mon, 14 May 2012 23:45:08 +0200
+Source: lintian
+Binary: lintian
+Architecture: source all
+Version: 2.5.7
+Distribution: unstable
+Urgency: low
+Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
+Changed-By: Niels Thykier <niels@thykier.net>
+Description:
+ lintian - Debian package checker
+Closes: 614034 628189 648777 649277 649852 650536 657402 660845 663516 664061 664471 664600 666207 666765 668546 671024 671537 672615
+Changes:
+ lintian (2.5.7) unstable; urgency=low
+ .
+ * Summary of tag changes:
+ + Added:
+ - apache2-configuration-files-need-conf-suffix
+ - apache2-deprecated-auth-config
+ - apache2-module-depends-on-real-apache2-package
+ - apache2-module-does-not-depend-on-apache2-api
+ - apache2-module-does-not-ship-load-file
+ - apache2-reverse-dependency-calls-invoke-rc.d
+ - apache2-reverse-dependency-calls-wrapper-script
+ - apache2-reverse-dependency-ships-file-in-not-allowed-directory
+ - apache2-reverse-dependency-uses-obsolete-directory
+ - apache2-unparseable-dependency
+ - apache2-unsupported-dependency
+ - diff-contains-quilt-control-dir
+ - hardening-no-fortify-functions
+ - hardening-no-relro
+ - hardening-no-stackprotector
+ - non-standard-apache2-configuration-name
+ - non-standard-apache2-module-package-name
+ - rc-version-greater-than-expected-version
+ - udeb-uses-unsupported-compression-for-data-tarball
+ - web-application-depends-on-apache2-data-package
+ - web-application-should-not-depend-unconditionally-on-apache2
+ + Removed:
+ - ancient-dpkg-long-filenames-check
+ - ancient-dpkg-predepends-check
+ - bad-ubuntu-distribution-in-changes-file
+ - binary-nmu-uses-old-version-style
+ - debian-control-with-duplicate-fields
+ - doc-base-file-references-usr-doc
+ - duplicate-fields-in-templates
+ - manpage-for-non-x11-binary-in-wrong-directory
+ - manpage-for-x11-binary-in-wrong-directory
+ - missing-dependency-on-install-info
+ - obsolete-field
+ - old-app-defaults-directory
+ - old-style-copyright-file
+ - old-style-example-dir
+ - package-installs-file-to-usr-x11r6-bin
+ - package-installs-font-to-usr-x11r6
+ - package-uses-obsolete-file
+ - postinst-should-not-set-usr-doc-link
+ - raster-image-in-scalable-directory
+ - udeb-uses-non-gzip-data-tarball
+ - x11-games-should-be-in-usr-games
+ .
+ * checks/*:
+ + [NT] Remove some old tags that are no longer useful.
+ (Closes: #663516)
+ + [NT] Migrate to sorted_index from sorted_file_info.
+ + [NT] Explicitly import needed subs from L::Util.
+ * checks/apache2{,.desc}:
+ + [NT] New files to check for apache2 related packages. Thanks
+ to Arno Töll and Stefan Fritsch for the patches.
+ (Closes: #668546)
+ + [NT] This check is not enabled by default. It can be used
+ via the debian/extra-apache2 profile.
+ * checks/binaries{,.desc}:
+ + [NT] Move embedded library data to a data file.
+ + [NT] Add ELF hardening checks. Thanks to Kees Cook for
+ report and the patches. (Closes: 650536)
+ + [NT] Replace architecture tables with data files.
+ + [JW] Check for missing Python3 numpy ABI dependency.
+ (Closes: #671024)
+ * checks/changelog-file:
+ + [NT] Output the correct line number for the "line-too-long"
+ tag. Thanks to Arno Töll for the report. (Closes: #657402)
+ * checks/changes-file{,.desc}:
+ + [NT] Remove Ubuntu specific handling of distribution names.
+ Instead replace it with a more generalized one that derivatives
+ can reuse by extending vendor specific data files. Thanks to
+ Daniel Dehennin for the suggestion. (Closes: #648777)
+ * checks/control-file:
+ + [NT] Rewrote parts to use Lintian::Collect for fetching data.
+ * checks/cruft{,.desc}:
+ + [NT] Check for quilt control dirs in the debian packaging files.
+ * checks/deb-format{,.desc}:
+ + [NT] Replace old udeb compression tag with a more general
+ one. (Closes: #664600)
+ + [NT] Remove logic for checking if a deb is meant for
+ Ubuntu. Instead unconditionally emit the tag and let the
+ vendor profiles handle it.
+ * checks/debconf:
+ + [NT] Special case debconf providers for purge-debconf tag.
+ Generally they cannot use db_purge in postrm (for obvious
+ reasons), so the tag will be a false-positive in such
+ cases.
+ * checks/fields{,.desc}:
+ + [NT] Add devref reference.
+ + [NT] Remove special handling of the Ubuntu specific field,
+ "original-maintainer". This field is now handled by vendor
+ specific data files. (Closes: #649852)
+ + [JW,NT] Check for common mistakes with preview release and
+ release candidate versions. For non-native packages, this
+ check is only done on initial uploads of new upstream
+ releases. Thanks to Stefano Rivera and Julian Taylor for
+ their additional suggestions. (Closes: #649277)
+ * checks/filename-length.desc:
+ + [ADB, NT] Reword description of package-has-long-file-name.
+ Thanks to Andreas Beckmann for suggestion.
+ * checks/files{,.desc}:
+ + [NT] Remove "manual" lazy loads of data files.
+ + [NT] Remove code for the uses-FHS-doc-dir tag.
+ + [NT] Extend icon checks to all icon directories and look for
+ raster images in "scalable" icon directories. Thanks to
+ Paul Wise for the report and Felix Geyer for the patches.
+ (Closes: #628189)
+ * checks/group-checks:
+ + [NT] Include Provides when checking for conflict relations.
+ Thanks to Damyan Ivanov for the report. (Closes: #672615)
+ * checks/java:
+ + [NT] Ignore "codeless" jars if they appear to be maven
+ javadoc jars. Thanks to Ludovic Claude for the patch.
+ (Closes: #660845)
+ * checks/lintian.desc:
+ + [NT] Updated the description of the override tags.
+ * checks/manpages{,.desc}:
+ + [RA] Detect hyphen used as minus sign following a groff \f[C] font
+ change. Thanks, Iustin Pop. (Closes: #664471)
+ * checks/menu-format:
+ + [NT] Move menu section lists into a data file.
+ + [NT] If a package is missing a menu icon, check its direct strong
+ dependencies built from the same source (if any) for the icon.
+ This fixes false-positives menu-icon-missing in some cases.
+ * checks/menus{,.desc}:
+ + [NT] Remove "manual" lazy load of data file.
+ * checks/nmu:
+ + [NT] Remove Ubuntu specific code to handle their (lack of) NMUs.
+ These tags are instead suppressed by the Ubuntu profile.
+ * chekcs/rules:
+ + [NT] Fix false-positive "ignores-make-clean-error" tag caused by
+ using make with -C and a dir containing the letter "i". Thanks to
+ Tobias Hansen for the report. (Closes: #671537)
+ * checks/scripts{,.desc}:
+ + [NT] Mention devref 6.4 in command-with-path-in-maintainer-script.
+ Thanks to Arno Töll for the patch.
+ + [NT] Do not emit unusual-interpreter if the package provides the
+ interpreter itself.
+ + [NT] Ignore the lack of exec bit on th debconf shell modules.
+ * checks/standards-version.desc:
+ + [NT] Add references to the Policy upgrading checklist. Thanks to
+ Simon Paillard for the patch.
+ .
+ * collection/*:
+ + [NT] Use Lintian::Collect to access the package index.
+ * collection/bin-pkg-control{,.desc}:
+ + [NT] Compress control-index file and bump version of
+ bin-pkg-control.
+ * collection/copyright-file:
+ + [NT] Remove code to look for old-style copyright file.
+ * collection/file-info{,.desc}:
+ + [NT] Compress file-info output and bump version of file-info.
+ * collection/hardening-info{,.desc}:
+ + [NT] New files. Thanks to Kees Cook for the patch.
+ * collection/index{,.desc}:
+ + [NT] Compress index output and bump version of index.
+ * collection/java-info{,.desc}:
+ + [NT] Compress java-info output and bump version of java-info.
+ * collection/objdump-info:
+ + [NT] Use "fail" from Lintian::Util.pm rather than embedding a
+ copy of it.
+ + [NT] Use Lintian::Collect to find ELF files.
+ + [NT] Replace all usage of objdump with readelf.
+ (Closes: #614034)
+ + [NT] Compress objdump-info output and bump version of objdump-info.
+ * collection/strings{,.desc}:
+ + [NT] Compress strings output and bump version of strings.
+ .
+ * data:
+ + [NT] Move to vendors/debian/ftp-master-auto-reject and replace
+ it with a symlink.
+ * data/binaries/{arch-{64bit-equivs,regex},hardening-tags}:
+ + [NT] New file.
+ * data/binaries/embedded-libs:
+ + [NT] New file.
+ + [NT] Add libav libraries. Thanks to Andres Mejia for the
+ suggestion and the suggested patch. (Closes: #666765)
+ * data/changes-file/{debian-dists -> known-dists}:
+ + [NT] Renamed file.
+ * data/menu-format/menu-sections:
+ + [NT] New file.
+ .
+ * debian/changelog:
+ + [NT] Amend the 2.5.5 to mention that it also added the tag
+ binaries-have-file-conflict.
+ .
+ * frontend/lintian:
+ + [JW] Fix typo in error message.
+ + [JW,NT] Fix handling of "override" option in the lintianrc file.
+ (Closes: #666207)
+ .
+ * lib/Lintian/Architecture.pm:
+ + [NT] Lazily evaluate the data file.
+ * lib/Lintian/Collect/Package.pm:
+ + [NT] Remove an extra level of quoting in index.
+ + [NT] Remove root dir from sorted_index.
+ + [NT] Keep trailing slash in dir names for file_info.
+ * lib/Lintian/Collect/Binary.pm:
+ + [NT] Remove sorted_file_info as sorted_index now produces
+ an identical list.
+ * lib/Lintian/Data.pm:
+ + [NT] Lazily load data files.
+ + [NT] Allow pre-process sub to alter existing value for a key
+ by passing the previous value as third argument.
+ + [NT] Allow vendor specific data files. They will be loaded
+ from LINTIAN_ROOT/vendors/$profile/data.
+ * lib/Lintian/Output{,/*}.pm:
+ + [NT] Replace non-printables with "?" in output.
+ * lib/Lintian/Profile.pm:
+ + [NT] Normalize profile name and replace "parents" with
+ "profile_list". The latter also includes the current profile
+ name.
+ * lib/Lintian/Tag/Info.pm:
+ + [NT] Use Lintian::Data to load the manual-references data
+ file instead using an ad-hoc parser.
+ * lib/{Text_utils => Lintian/Tag/TextUtil}.pm:
+ + [NT] Renamed module.
+ * lib/{Util => Lintian/Util}.pm:
+ + [NT] Renamed Util to Lintian::Util.
+ + [JW] Consider duplicate fields a syntax error in dctrl files.
+ Previously, duplicate fields were silently ignored (except
+ when a separate tag would check for it). (Closes: #664061)
+ + [NT] Stop exported a majority of all subs by default.
+ .
+ * profiles/ubuntu/main.profile:
+ + [NT] Add a number of NMU related tags to the list of disabled
+ tags.
+ .
+ * vendors/ubuntu/main/data/changes-file/known-dists:
+ + [NT] New file based on data/changes-file/ubuntu-dists.
+ + [ADB] Add "quantal" (Quetzal)
+ * vendors/ubuntu/main/data/common/source-fields:
+ + [NT] New file.
+ * vendors/ubuntu/main/data/fields/{binary,udeb}-fields:
+ + [NT] New files.
+Checksums-Sha1:
+ 0b03babd3aa8571eb0af02af768f7c4fade12fbd 2462 lintian_2.5.7.dsc
+ 3af1c36dbe4ae3dc7b70aa375107928c28c8555f 1087847 lintian_2.5.7.tar.gz
+ 2ebf64764da8e9b03cea8555ec6db1cf5da38f59 692506 lintian_2.5.7_all.deb
+Checksums-Sha256:
+ 0dd400eff2da35e2e1b39370a0edf8a918ce3e3cdd68b6be2fcb53ae8a143e5f 2462 lintian_2.5.7.dsc
+ c56d7550e10acb7672708911c7636611d128ab7ec3eded8e70035737581f1a26 1087847 lintian_2.5.7.tar.gz
+ 5fd3554d5e76aa70334a4a56f87c75fe6a287b9723d64330621d7a423fffb2a0 692506 lintian_2.5.7_all.deb
+Files:
+ ab60445e9f6618d0b9349dbc8e3455c3 2462 devel optional lintian_2.5.7.dsc
+ ec47bdf0735e61fffd0a582cd76cdb74 1087847 devel optional lintian_2.5.7.tar.gz
+ af45b86b4b0a254ab0cb46fab4de2bbf 692506 devel optional lintian_2.5.7_all.deb
+
diff --git a/t/scripts/Lintian/Lab/data/changes/lintian_2.5.8_amd64.changes b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.8_amd64.changes
new file mode 100644
index 0000000..bd3d11f
--- /dev/null
+++ b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.8_amd64.changes
@@ -0,0 +1,106 @@
+Format: 1.8
+Date: Tue, 29 May 2012 11:49:47 +0200
+Source: lintian
+Binary: lintian
+Architecture: source all
+Version: 2.5.8
+Distribution: unstable
+Urgency: low
+Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
+Changed-By: Niels Thykier <niels@thykier.net>
+Description:
+ lintian - Debian package checker
+Closes: 662134 667895 669911 671387 673106 673109 673112 673198 673352 673449 673451 673611 673613 673862
+Changes:
+ lintian (2.5.8) unstable; urgency=low
+ .
+ Its like 2.5.7, only with less false positives and no FTBFS.
+ .
+ * checks/binaries{,.desc}:
+ + [NT] Fix a too strict regex causing false-positives for
+ biarch packages. This was a regression introduced in
+ version 2.5.7. Thanks to Sven Joachim for reporting it.
+ (Closes: #673106)
+ + [NT] Demote certainty of hardening-no-stackprotector to
+ wild-guess and move it to debian/extra-hardening profile.
+ + [NT] Skip hardening-no-fortify-functions for binaries only
+ using the unprotected memcpy. This greatly reduces the
+ number of false positives for binaries compiled with
+ gcc-4.7 -O2 (or higher optimization). (Closes: #673112)
+ * checks/files:
+ + [NT] Properly handle symlinks in icon directories. Thanks
+ to Nicholas Breen for the report and Felix Geyer for the
+ patches. (Closes: #673352)
+ + [NT] Ignore wrong sizes on images in animations as it may
+ be a method to implement the animation. Thanks to Matthias
+ Klumpp for the report and Felix Geyer for the patch.
+ (Closes: #673862)
+ + [NT] Ignore wrong icon sizes if the size difference is at
+ most 2px. Thanks to Felix Geyer for the patch.
+ * checks/scripts:
+ + [NT] Refactor the %versioned_interpreters into a new
+ data file.
+ * checks/shared-libs:
+ + [NT] Fix false positive "dev-pkg-without-shlib-symlink"
+ for shared libraries using "libtool -release X.Y".
+ Thanks to Sven Joachim for the report. (Closes: #673109)
+ + [NT] Fix false positive "dev-pkg-without-shlib-symlink"
+ for shared libraries installed in /lib. Lintian now
+ correctly expects the dev-symlink beneath /usr/lib.
+ Thanks to Guillem Jover for the report.
+ * checks/source-copyright:
+ + [NT] Use the in-memory contents of the copyright file
+ instead of re-reading the file when parsing it as a
+ DEP-5 copyright file.
+ .
+ * collection/objdump-info{,.desc}:
+ + [NT] Drop -D flag for readelf when looking for symbols.
+ This makes some checks more reliable in Ubuntu. Thanks
+ to Marc Deslauriers for the report and the patch.
+ (Closes: #673451)
+ .
+ * debian/control:
+ + [NT] Add versioned Build-Depends on dpkg-dev (>= 1.16.1~)
+ as the test suite relies on it. Thanks to Luca Falavigna
+ for reporting it.
+ + [NT] Update the description to mention that the version
+ of Lintian is calibrated for version 3.9.3 of the Policy.
+ * debian/lintian.install:
+ + [NT] Remove usr/share/lintian/data - Lintian does not
+ need it and dpkg will not replace the dir with a symlink.
+ .
+ * data/scripts/interpreters:
+ + [NT] Add falcon, gbr3, jython and ngp2 as known interpreters.
+ (Closes: #669911, #671387, #662134, #667895)
+ * data/scripts/versioned-interpreters:
+ + [NT] New file.
+ + [NT] Added python2.7 to the list of known Python 2 interpreters.
+ * data/spelling/corrections:
+ + [RA] Remove corrections for "writeable" and "overwriteable". These
+ spellings are permitted by the OED in UK English. (Closes: #673611)
+ + [NT] Add correction for "pointer".
+ .
+ * lib/Lintian/Collect/*.pm:
+ + [NT] Localize "$_" to avoid truncating caller's variable.
+ (Closes: #673613)
+ .
+ * t:
+ + [NT] Generate empty ".so" files used in the test. This
+ resolves an issue where dpkg-source would exclude them
+ causing a FTBFS. (Closes: #673198)
+ + [NT] Fix test failure in derivatives where some hardening
+ flags are enabled by default. Thanks to Marc Deslauriers
+ for the report and the patch. (Closes: #673449)
+Checksums-Sha1:
+ de2ae82463727f45b3d28dce15b89bbea8fc641c 2485 lintian_2.5.8.dsc
+ 576c06a94e7758e358a43b549b123052a7e49fdc 1092923 lintian_2.5.8.tar.gz
+ d6f247358c070a7e37c9f22c84aee63fbfd816fb 697324 lintian_2.5.8_all.deb
+Checksums-Sha256:
+ 20fd9f4084197aaa923af9a7bb7dba8cc06bd1ed307a16c8b14e275d91e1093f 2485 lintian_2.5.8.dsc
+ b0a6016d9a0e5ba3ed1fc00cabd8b3be75c572fcfee7cd5079d06c64f626d343 1092923 lintian_2.5.8.tar.gz
+ 587c014c2f87ea1359f139e5a37bce1acd0b1552d7c49ca0e54e5e8b24f57c5c 697324 lintian_2.5.8_all.deb
+Files:
+ 71653df24991d1734fea17f3205ef042 2485 devel optional lintian_2.5.8.dsc
+ 1121be8bcccaf75a571e4c17197bebbc 1092923 devel optional lintian_2.5.8.tar.gz
+ 4fd057457a01384ffdc4fa39888f4f4d 697324 devel optional lintian_2.5.8_all.deb
+
diff --git a/t/scripts/Lintian/Lab/data/changes/lintian_2.5.9_amd64.changes b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.9_amd64.changes
new file mode 100644
index 0000000..e3e3b69
--- /dev/null
+++ b/t/scripts/Lintian/Lab/data/changes/lintian_2.5.9_amd64.changes
@@ -0,0 +1,101 @@
+Format: 1.8
+Date: Fri, 15 Jun 2012 21:29:03 +0200
+Source: lintian
+Binary: lintian
+Architecture: source all
+Version: 2.5.9
+Distribution: unstable
+Urgency: low
+Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
+Changed-By: Niels Thykier <niels@thykier.net>
+Description:
+ lintian - Debian package checker
+Closes: 675139 675358 675826 675832 676799 677142 677310 677649
+Changes:
+ lintian (2.5.9) unstable; urgency=low
+ .
+ * Summary of tag changes:
+ + Added:
+ - run-parts-cron-filename-contains-illegal-chars
+ + Removed:
+ - run-parts-cron-filename-contains-full-stop
+ .
+ * checks/*:
+ + [NT] Migrate to new Lintian::Path API.
+ * checks/fields:
+ + [NT] Also classify lib*-cli-dev as belonging to the section
+ cli-mono (rather than libdevel). Thanks to Chow Loong Jin
+ for the report and the patch. (Closes: #675358)
+ * checks/files{,.desc}:
+ + [NT] Rename run-parts-cron-filename-contains-full-stop and
+ have it catch "+" in the filename as well. Add reference
+ to policy 9.5.1 in the tag description.
+ * checks/init.d:
+ + [NT] Use the proper regex for matching package names rather
+ than an ad-hoc regex. Thanks to Thorsten Alteholz for the
+ report and suggested patch. (Closes: #677142)
+ * checks/shared-libs:
+ + [NT] Reverse order of two subst expressions to prevent
+ dev-pkg-without-shlib-symlink false positives. Thanks to
+ Aurelien Jarno, Yves-Alexis Perez and Stephen M. Webb for
+ the reports and the patch.
+ (Closes: #675826, #677310, #675832)
+ + [NT] Clarify that dev-pkg-without-shlib-symlink is emitted
+ on library and not "-dev" packages.
+ .
+ * collection/hardening-info:
+ + [NT] Process binaries with hardening-check via xargs. This
+ greatly reduces the processing time for packages with many
+ binaries (like some of the linux binaries). Thanks to
+ Bastian Blank for the heads up.
+ + [NT] Skip kernel modules (.ko files).
+ * collection/hardening-info-helper:
+ + [NT] New file.
+ .
+ * data/*:
+ + [NT] Refresh with tools/data from sid.
+ * data/scripts/interpreters:
+ + [NT] Replace ngp2 with ngraph. Thanks to Koichi Akabe for
+ the report. (Closes: #675139)
+ * data/spelling/corrections:
+ + [NT] Add corrections for usage, invocation(s) and ancient.
+ .
+ * debian/changelog:
+ + [NT] raster-image-in-scalable-directory was added in 2.5.7,
+ not removed.
+ .
+ * frontend/lintian{,-info}:
+ + [NT] Remove assumption that $ENV{HOME} is set/defined. If
+ $ENV{HOME} is not sent, user specific profiles will simply
+ be ignored.
+ * frontend/lintian:
+ + [NT] Attempt to automatically determine what to process, if
+ no packages are given and debian/changelog exists. Thanks
+ to Gilles Filippini for the suggestion. (Closes: #676799)
+ .
+ * lib/Lintian/Check.pm:
+ + [NT] Add regex to match valid package names.
+ * lib/Lintian/Collect/Package.pm:
+ + [NT] sorted_index now returns a list rather than a list ref.
+ + [NT] Represent files (from index) as Lintian::Path objects.
+ * lib/Lintian/Collect/Source.pm:
+ + [NT] Recognise "Package-Type" as an alternative of the "X-"
+ field of same name. Thanks to Christian Perrier for the
+ report. (Closes: #677649)
+ * lib/Lintian/Data.pm:
+ + [NT] Gracefully handle the absence of $ENV{HOME}.
+ * lib/Lintian/Path.pm:
+ + [NT] New file.
+Checksums-Sha1:
+ 5910ab721c5785b01400b3444cb9d6904ad6a876 2485 lintian_2.5.9.dsc
+ 0f0de9cbf56a6702509a95c2c976ca8f6bafef47 1100166 lintian_2.5.9.tar.gz
+ 40be3ed688b6d01c66bf9440fccefb5c32b189f3 702742 lintian_2.5.9_all.deb
+Checksums-Sha256:
+ 9263501f00c3e3a762803375c8febc9cd651a34d4a3710f48e0d13266d3ead8d 2485 lintian_2.5.9.dsc
+ bd5c285d46ab54588819879e10e16d301542162cc886939c29ec2a4da05b7357 1100166 lintian_2.5.9.tar.gz
+ 6caf9ba0dd9b98713356d03818f844be36f4e58af44d14374ec1366631eb3a2a 702742 lintian_2.5.9_all.deb
+Files:
+ 152a018943890d860377d5438d58f6fa 2485 devel optional lintian_2.5.9.dsc
+ d5abfd1dbca688d0bcaa90890052b758 1100166 devel optional lintian_2.5.9.tar.gz
+ 44934b36c0b11b01579cc4713772897c 702742 devel optional lintian_2.5.9_all.deb
+
diff --git a/t/scripts/Lintian/Relation/01-basic.t b/t/scripts/Lintian/Relation/01-basic.t
new file mode 100755
index 0000000..7838957
--- /dev/null
+++ b/t/scripts/Lintian/Relation/01-basic.t
@@ -0,0 +1,19 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+
+use Lintian::Relation;
+
+my $relation = Lintian::Relation->new->load('pkgA, altA | altB');
+
+ok($relation->satisfies('pkgA'), 'Satisfies');
+ok(!$relation->satisfies('altA'), 'Satisfies alt');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Relation/02-architecture.t b/t/scripts/Lintian/Relation/02-architecture.t
new file mode 100755
index 0000000..3bdefbe
--- /dev/null
+++ b/t/scripts/Lintian/Relation/02-architecture.t
@@ -0,0 +1,19 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More tests => 2;
+
+use Lintian::Relation;
+
+my $relation
+ = Lintian::Relation->new->load_norestriction('pkgA [i386], pkgB [amd64]');
+
+ok($relation->satisfies('pkgA:any'), 'Implies arch alt [i386]');
+ok($relation->satisfies('pkgB:any'), 'Implies arch alt [amd64]');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Relation/03-duplicates.t b/t/scripts/Lintian/Relation/03-duplicates.t
new file mode 100755
index 0000000..84d22c6
--- /dev/null
+++ b/t/scripts/Lintian/Relation/03-duplicates.t
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+
+use Lintian::Relation;
+
+my $relation_a
+ = Lintian::Relation->new->load_norestriction(
+ 'pkgA, pkgB, pkgC, pkgA | pkgD');
+
+my $relation_b
+ = Lintian::Relation->new->load_norestriction(
+ 'pkgA, pkgB, pkgC, pkgD | pkgE');
+
+is_deeply(
+ $relation_a->redundancies,
+ (['pkgA:any', 'pkgA:any | pkgD:any']),
+ 'Find redundancies'
+);
+is($relation_b->redundancies, 0, 'No redundancies');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Relation/04-multiarch.t b/t/scripts/Lintian/Relation/04-multiarch.t
new file mode 100755
index 0000000..7f18b6c
--- /dev/null
+++ b/t/scripts/Lintian/Relation/04-multiarch.t
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More tests => 12;
+
+use Lintian::Relation;
+
+my $orig = 'pkgA:any, pkgB, pkgC:i386';
+my $relation = Lintian::Relation->new->load($orig);
+
+ok($relation->satisfies('pkgA:any'), 'pkgA:any satisfies pkgA:any');
+
+ok($relation->satisfies('pkgB'), 'pkgB satisfies pkgB');
+
+ok(!$relation->satisfies('pkgC'), 'pkgC:i386 does not satisfy pkgC');
+ok($relation->satisfies('pkgC:i386'), 'pkgC:i386 satisfies pkgC:i386');
+
+ok($relation->satisfies('pkgB:any'), 'pkgB satisfies pkgB:any');
+
+ok(!$relation->satisfies('pkgA'), 'pkgA:any does not satisfy pkgA');
+
+ok(!$relation->satisfies('pkgC:any'), 'pkgC:i386 does not satisfy pkgC:any');
+
+is($relation->to_string, $orig, 'reconstituted eq original');
+
+my @redundancies1
+ = Lintian::Relation->new->load('pkgD, pkgD:any')->redundancies;
+is_deeply(
+ \@redundancies1,
+ [['pkgD', 'pkgD:any']],
+ 'pkgD and pkgD:any are redundant'
+);
+
+TODO: {
+ local $TODO = ':X => :Y cases are not implemented (in general)';
+
+ my @redundancies2
+ = Lintian::Relation->new->load('pkgD:i386, pkgD:any')->redundancies;
+ is_deeply(
+ \@redundancies2,
+ [['pkgD:i386', 'pkgD:any']],
+ 'pkgD:i386 and pkgD:any are redundant'
+ );
+}
+
+my @redundancies3
+ = Lintian::Relation->new->load('pkgD:i386, pkgD')->redundancies;
+is_deeply(\@redundancies3, [],'pkgD:i386 and pkgD are not redundant');
+
+my @redundancies4
+ = Lintian::Relation->new->load('pkgD:i386, pkgD:i386 (>= 1.0)')
+ ->redundancies;
+is_deeply(
+ \@redundancies4,
+ [['pkgD:i386', 'pkgD:i386 (>= 1.0)']],
+ 'Can detect pkgD:i386 redundancies'
+);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Relation/05-invalid.t b/t/scripts/Lintian/Relation/05-invalid.t
new file mode 100755
index 0000000..9b42d62
--- /dev/null
+++ b/t/scripts/Lintian/Relation/05-invalid.t
@@ -0,0 +1,66 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+
+use Lintian::Relation;
+
+test_relation(
+ 'pkg%any (>= 1.0) , pkgB | _gf , pkgC(>=2.0)',
+ 'satisfied' => [
+ 'pkgB | _gf', # partly unparsable, but identity holds
+ 'pkgC (>= 1.0)', # regular entry
+ ],
+ 'not-satisfied' => [
+ 'pkg', # unparsable
+ 'pkg%any', # unparsable
+ 'pkgB', # OR relation with unparsable entry
+ '_gf', # OR relation
+ ],
+ 'unparsable' => ['_gf', 'pkg%any (>= 1.0)'],
+ 'reconstituted' => 'pkg%any (>= 1.0), pkgB | _gf, pkgC (>= 2.0)'
+);
+
+done_testing;
+
+sub test_relation {
+ my ($text, %tests) = @_;
+
+ my $relation_under_test = Lintian::Relation->new->load($text);
+
+ my $tests = 0;
+ if (my $reconstituted = $tests{'reconstituted'}) {
+ is($relation_under_test->to_string,
+ $reconstituted, "Reconstitute $text");
+ $tests++;
+ }
+
+ for my $other_relation (@{$tests{'satisfied'} // [] }) {
+ ok($relation_under_test->satisfies($other_relation),
+ "'$text' satisfies '$other_relation'");
+ $tests++;
+ }
+
+ for my $other_relation (@{$tests{'not-satisfied'} // [] }) {
+ ok(
+ !$relation_under_test->satisfies($other_relation),
+ "'$text' does NOT satisfy '$other_relation'"
+ );
+ $tests++;
+ }
+
+ if (my $unparsable = $tests{'unparsable'}) {
+ my @actual = $relation_under_test->unparsable_predicates;
+ is_deeply(\@actual, $unparsable, "Unparsable entries for '$text'");
+ }
+
+ cmp_ok($tests, '>=', 1, "Ran at least one test on '$text'");
+ return;
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Relation/06-build-profiles.t b/t/scripts/Lintian/Relation/06-build-profiles.t
new file mode 100755
index 0000000..824572d
--- /dev/null
+++ b/t/scripts/Lintian/Relation/06-build-profiles.t
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More tests => 3;
+
+use Lintian::Relation;
+
+my $relation = Lintian::Relation->new->load_norestriction(
+ 'pkgA (<= 1.0) <stage1 nocheck> <nobiarch>, pkgB (<< 1.0) <!nodoc>');
+
+ok($relation->satisfies('pkgA:any'),
+ 'Satisfies restrictions <stage1 nocheck> <nobiarch>');
+ok($relation->satisfies('pkgB:any'), 'Satisfies restriction <!nodoc>');
+
+my $rel = Lintian::Relation->new->load('pkgC <foo bar> <baz>');
+
+is($rel->to_string, 'pkgC <foo bar> <baz>', 'Reconstitute pkgC');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Relation/07-implies.t b/t/scripts/Lintian/Relation/07-implies.t
new file mode 100644
index 0000000..85c7f74
--- /dev/null
+++ b/t/scripts/Lintian/Relation/07-implies.t
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use Lintian::Relation;
+
+my @TESTS = (
+ # A, B, A->I(B), A->I_I(B), B->I(A), B->I_I(A), line
+ # - with "I" being "satisfies" and "I_I" being "satisfies_inverse".
+ ['foo (= 1.0)', 'foo (= 2.0)', 0, 1, 0, 1, __LINE__],
+ ['foo (>= 1.0)', 'foo (= 2.0)', 0, 0, 1, 0, __LINE__],
+ ['foo (>= 2.0)', 'foo (>= 1.0)', 1, 0, 0, 0, __LINE__],
+ ['foo (>> 1.0)', 'foo (>= 1.0)', 1, 0, 0, 0, __LINE__],
+ ['foo (>> 2.0)', 'foo (>> 1.0)', 1, 0, 0, 0, __LINE__],
+ ['foo (<= 1.0)', 'foo (<= 2.0)', 1, 0, 0, 0, __LINE__],
+ ['foo (<< 1.0)', 'foo (<= 1.0)', 1, 0, 0, 0, __LINE__],
+ ['foo (<< 1.0)', 'foo (<< 2.0)', 1, 0, 0, 0, __LINE__],
+);
+
+plan tests => scalar(@TESTS) * 4;
+
+for my $test (@TESTS) {
+ my ($a_raw, $b_raw, $a_i_b, $a_ii_b, $b_i_a, $b_ii_a, $lno) = @{$test};
+
+ my $relation_a = Lintian::Relation->new->load($a_raw);
+ my $relation_b = Lintian::Relation->new->load($b_raw);
+
+ is($relation_a->satisfies($relation_b),
+ $a_i_b, "$a_raw satisfies $b_raw (case 1, line $lno)");
+ is($relation_a->satisfies_inverse($relation_b),
+ $a_ii_b,"$test->[0] satisfies inverse $test->[1] (case 2, line $lno)");
+
+ is($relation_b->satisfies($relation_a),
+ $b_i_a,"$b_raw satisfies $a_raw (case 3, line $test->[6])");
+ is($relation_b->satisfies_inverse($relation_a),
+ $b_ii_a, "$b_raw satisfies inverse $a_raw (case 4, line $lno)");
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Util/data/pgp-eof-missing-sign b/t/scripts/Lintian/Util/data/pgp-eof-missing-sign
new file mode 100644
index 0000000..78e5ee9
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-eof-missing-sign
@@ -0,0 +1,5 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: lintian
+
+# Missing signature block
diff --git a/t/scripts/Lintian/Util/data/pgp-leading-unsigned b/t/scripts/Lintian/Util/data/pgp-leading-unsigned
new file mode 100644
index 0000000..0b6b949
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-leading-unsigned
@@ -0,0 +1,14 @@
+Package: dpkg
+
+# Unsigned above, signed below (bad)
+
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: lintian
+
+-----BEGIN PGP SIGNATURE-----
+
+Some signature.
+
+-----END PGP SIGNATURE-----
+
diff --git a/t/scripts/Lintian/Util/data/pgp-malformed-header b/t/scripts/Lintian/Util/data/pgp-malformed-header
new file mode 100644
index 0000000..a9e2e7b
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-malformed-header
@@ -0,0 +1,11 @@
+# Missing a dash in the end
+
+-----BEGIN PGP SIGNED MESSAGE----
+
+Package: lintian
+
+-----BEGIN PGP SIGNATURE----
+
+Some signature.
+
+-----END PGP SIGNATURE----
diff --git a/t/scripts/Lintian/Util/data/pgp-no-end-pgp-header b/t/scripts/Lintian/Util/data/pgp-no-end-pgp-header
new file mode 100644
index 0000000..6d15d98
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-no-end-pgp-header
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: lintian
+
+-----BEGIN PGP SIGNATURE-----
+
+Some signature, missing an end marker.
diff --git a/t/scripts/Lintian/Util/data/pgp-sig-before-start b/t/scripts/Lintian/Util/data/pgp-sig-before-start
new file mode 100644
index 0000000..1d7cf12
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-sig-before-start
@@ -0,0 +1,7 @@
+Package: lintian
+
+-----BEGIN PGP SIGNATURE-----
+
+Some signature.
+
+-----END PGP SIGNATURE-----
diff --git a/t/scripts/Lintian/Util/data/pgp-trailing-unsigned b/t/scripts/Lintian/Util/data/pgp-trailing-unsigned
new file mode 100644
index 0000000..1d29d87
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-trailing-unsigned
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: lintian
+
+-----BEGIN PGP SIGNATURE-----
+
+Some signature.
+
+-----END PGP SIGNATURE-----
+
+# Signed above, unsigned below (bad)
+
+Package: dpkg
+
diff --git a/t/scripts/Lintian/Util/data/pgp-two-signatures b/t/scripts/Lintian/Util/data/pgp-two-signatures
new file mode 100644
index 0000000..0c0b7d6
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-two-signatures
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: lintian
+
+-----BEGIN PGP SIGNATURE-----
+
+Some signature.
+
+-----END PGP SIGNATURE-----
+
+-----BEGIN PGP SIGNATURE-----
+
+Another signature.
+
+-----END PGP SIGNATURE-----
+
diff --git a/t/scripts/Lintian/Util/data/pgp-two-signed-msgs b/t/scripts/Lintian/Util/data/pgp-two-signed-msgs
new file mode 100644
index 0000000..c8fcf9d
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-two-signed-msgs
@@ -0,0 +1,19 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: lintian
+
+-----BEGIN PGP SIGNATURE-----
+
+Some signature.
+
+-----END PGP SIGNATURE-----
+
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Package: dpkg
+
+-----BEGIN PGP SIGNATURE-----
+
+Aother signature.
+
+-----END PGP SIGNATURE-----
diff --git a/t/scripts/Lintian/Util/data/pgp-unexpected-header b/t/scripts/Lintian/Util/data/pgp-unexpected-header
new file mode 100644
index 0000000..743ac85
--- /dev/null
+++ b/t/scripts/Lintian/Util/data/pgp-unexpected-header
@@ -0,0 +1,6 @@
+-----BEGIN PGP MESSAGE-----
+
+We are expecting a "SIGNED" message.
+
+-----END PGP MESSAGE-----
+
diff --git a/t/scripts/Lintian/Util/dctrl-parser.t b/t/scripts/Lintian/Util/dctrl-parser.t
new file mode 100755
index 0000000..36d9961
--- /dev/null
+++ b/t/scripts/Lintian/Util/dctrl-parser.t
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Syntax::Keyword::Try;
+use Test::More;
+
+use Lintian::Deb822;
+
+my %TESTS_BAD = (
+ 'pgp-sig-before-start' => qr/PGP signature before message/,
+ 'pgp-two-signatures' => qr/Found two PGP signatures/,
+ 'pgp-unexpected-header' => qr/Unexpected .+ header/,
+ 'pgp-malformed-header' => qr/Malformed PGP header/,
+
+ 'pgp-two-signed-msgs' => qr/Multiple PGP messages/,
+ 'pgp-no-end-pgp-header' => qr/Cannot find END PGP SIGNATURE/,
+ 'pgp-leading-unsigned' => qr/Expected PGP MESSAGE header/,
+ 'pgp-trailing-unsigned' => qr/Data after PGP SIGNATURE/,
+ 'pgp-eof-missing-sign' => qr/Cannot find BEGIN PGP SIGNATURE/,
+);
+
+my $DATADIR = $0;
+$DATADIR =~ s{[^/]+$}{};
+if ($DATADIR) {
+ # invoked in some other dir
+ $DATADIR = "$DATADIR/data";
+} else {
+ # current dir
+ $DATADIR = 'data';
+}
+
+plan skip_all => 'Data files not available'
+ unless -d $DATADIR;
+
+plan tests => scalar keys %TESTS_BAD;
+
+for my $filename (sort keys %TESTS_BAD) {
+
+ my $path = "$DATADIR/$filename";
+
+ my $deb822 = Lintian::Deb822->new;
+
+ try {
+ $deb822->read_file($path);
+
+ } catch {
+ my $error = $@;
+
+ my $fail_regex = $TESTS_BAD{$filename};
+ like($error, $fail_regex, $filename);
+
+ next;
+ }
+
+ fail("$path was parsed successfully");
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/Lintian/Util/path.t b/t/scripts/Lintian/Util/path.t
new file mode 100755
index 0000000..21c359a
--- /dev/null
+++ b/t/scripts/Lintian/Util/path.t
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More tests => 18;
+
+const my $EMPTY => q{};
+const my $SLASH => q{/};
+const my $DOT => q{.};
+
+# Lintian::Util exports fail, which clashes with Test::More, so we
+# have to be explicit about the import(s).
+BEGIN {
+ use_ok('Lintian::Util', qw(normalize_pkg_path normalize_link_target));
+}
+
+# Safe - absolute
+is(normalize_link_target('usr/share/java', '/usr/share/ant/file'),
+ 'usr/share/ant/file', 'Safe absolute path');
+is(normalize_link_target('usr/share/ant', $SLASH),
+ $EMPTY, 'Safe absolute root');
+
+# Safe - relative
+is(normalize_link_target('/usr/share/java', './file/.'),
+ 'usr/share/java/file', 'Safe simple same-dir path');
+is(normalize_link_target('/usr/share/java', '../ant/./file'),
+ 'usr/share/ant/file', 'Safe simple relative path');
+is(
+ normalize_link_target(
+ 'usr/share/java', '../../../usr/./share/../share/./ant/file'
+ ),
+ 'usr/share/ant/file',
+ 'Safe absurd relative path'
+);
+is(
+ normalize_pkg_path(
+ 'usr/share/java/../../../usr/./share/../share/./ant/file'),
+ 'usr/share/ant/file',
+ 'Safe absurd single path argument'
+);
+is(normalize_link_target('usr/share/java', $DOT),
+ 'usr/share/java', 'Safe relative dot path');
+is(normalize_link_target($SLASH, $DOT), $EMPTY, 'Safe relative root dot');
+is(normalize_link_target($SLASH, 'usr/..'),
+ $EMPTY, 'Safe absurd relative root path');
+is(normalize_link_target('usr/share/java', '../../../'),
+ $EMPTY, 'Safe absurd relative path to root');
+is(normalize_pkg_path($DOT), $EMPTY, 'Safe single argument root dot');
+is(normalize_pkg_path($SLASH), $EMPTY, 'Safe single argument root slash');
+is(normalize_pkg_path('usr/..'),
+ $EMPTY, 'Safe absurd single relative root path');
+is(normalize_pkg_path('usr/share/java/../../../'),
+ $EMPTY, 'Safe absurd single relative path to root');
+
+# Unsafe
+is(normalize_link_target('/usr/share/ant', '../../../../etc/passwd'),
+ undef, 'Unsafe - relative escape root');
+is(normalize_link_target('/usr/share/ant', '/../etc/passwd'),
+ undef, 'Unsafe - absolute escape root');
+is(normalize_pkg_path('/usr/../../etc/passwd'),
+ undef, 'Unsafe - single path escape root');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/check-load.t b/t/scripts/check-load.t
new file mode 100755
index 0000000..68408fe
--- /dev/null
+++ b/t/scripts/check-load.t
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2012 Niels Thykier
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More import => ['done_testing'];
+
+use Test::Lintian;
+
+const my $DOT => q{.};
+
+# Test that all checks can be loaded (except lintian.desc, which is
+# a special case).
+sub accept_filter {
+ return !m{/lintian\.desc$};
+}
+
+my $opts = {'filter' => \&accept_filter,};
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+
+load_profile_for_test('debian/main', $ENV{'LINTIAN_BASE'});
+test_load_checks($opts, "$ENV{'LINTIAN_BASE'}/lib/Lintian/Check");
+
+done_testing;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/calibrated.t b/t/scripts/harness/calibrated.t
new file mode 100644
index 0000000..73c6f13
--- /dev/null
+++ b/t/scripts/harness/calibrated.t
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use strict;
+use warnings;
+use v5.10;
+
+use File::Find::Rule;
+use Path::Tiny;
+use Test::More;
+
+my @descpaths = File::Find::Rule->file->name('desc')->in('t/recipes');
+
+# set the testing plan
+plan tests => scalar @descpaths;
+
+for my $descpath (@descpaths) {
+
+ my $testpath = path($descpath)->parent->parent->stringify;
+ my $hintspath = "$testpath/eval/hints";
+ my $literalpath = "$testpath/eval/literal";
+
+ ok(-r $hintspath || -r $literalpath,
+ "Calibrated hints or literal output is readable in $testpath");
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/check-result.t b/t/scripts/harness/check-result.t
new file mode 100644
index 0000000..33fb1ec
--- /dev/null
+++ b/t/scripts/harness/check-result.t
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2018 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN {
+ $ENV{'LINTIAN_BASE'} //= q{.};
+}
+
+use File::Basename qw(basename);
+use File::stat;
+use File::Temp;
+use Path::Tiny;
+use Test::More;
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+use Test::Lintian::Run qw(check_result);
+use Test::Lintian::ConfigFile qw(read_config);
+use Test::Lintian::Templates;
+
+# dummy test name; used in desc and directory name
+my $TESTNAME = 'distribution-multiple-bad';
+
+# temporary work directory
+my $tempdir = Path::Tiny->tempdir();
+my $testpath = $tempdir->child($TESTNAME);
+$testpath->mkpath;
+
+# test description
+my $desctext =<<"EOSTR";
+Testname: $TESTNAME
+Sequence: 2500
+Version: 1.0
+Description: Multiple distributions with at least one bad one
+Check:
+ changes-file
+References: Debian Bug #514853
+EOSTR
+
+my $descpath = $testpath->child('desc');
+$descpath->spew($desctext);
+
+# expected hints
+my $expectedtext =<<'EOSTR';
+distribution-multiple-bad (changes): multiple-distributions-in-changes-file stable foo-backportss bar foo
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo-backportss
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo
+distribution-multiple-bad (changes): bad-distribution-in-changes-file bar
+distribution-multiple-bad (changes): backports-upload-has-incorrect-version-number 1.0
+distribution-multiple-bad (changes): backports-changes-missing
+EOSTR
+
+my $expected = $testpath->child('hints');
+$expected->spew($expectedtext);
+
+# actual hints with one line missing
+my $nomatchtext =<<'EOSTR';
+distribution-multiple-bad (changes): multiple-distributions-in-changes-file stable foo-backportss bar foo
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo-backportss
+distribution-multiple-bad (changes): bad-distribution-in-changes-file bar
+distribution-multiple-bad (changes): backports-upload-has-incorrect-version-number 1.0
+distribution-multiple-bad (changes): backports-changes-missing
+EOSTR
+
+my $nomatch = $testpath->child('hints.nomatch');
+$nomatch->spew($nomatchtext);
+
+# copy of the expected hints
+my $match = $testpath->child('hints.match');
+$match->spew($expected->slurp);
+
+# read test case
+my $testcase = read_config($descpath);
+
+# read test defaults
+my $defaultspath = 't/defaults/desc';
+my $defaults = read_config($defaultspath);
+
+for my $name ($defaults->names) {
+ $testcase->store($name, $defaults->value($name))
+ unless $testcase->declares($name);
+}
+
+# test plan
+plan tests => 2;
+
+# check when hints match
+ok(!scalar check_result($testcase, $testpath, $expected, $match),
+ 'Same hints match');
+
+# check hints do not match
+ok(scalar check_result($testcase, $testpath, $expected, $nomatch),
+ 'Different hints do not match');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/desc-fields.t b/t/scripts/harness/desc-fields.t
new file mode 100644
index 0000000..12207f1
--- /dev/null
+++ b/t/scripts/harness/desc-fields.t
@@ -0,0 +1,172 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2020 Felix Lechner
+# Copyright (C) 2023 Axel Beckert
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use strict;
+use warnings;
+use v5.10;
+
+use Const::Fast;
+use File::Find::Rule;
+use List::SomeUtils qw(uniq);
+use List::Util qw(all any);
+use Path::Tiny;
+use Test::More;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+
+use Lintian::Profile;
+use Test::Lintian::ConfigFile qw(read_config);
+
+const my $FIXED_TESTS_PER_FILE => 7;
+
+my @descpaths = File::Find::Rule->file()->name('desc')->in('t/recipes');
+
+# mandatory fields
+my @mandatory = qw(Testname);
+
+# all known fields
+my @known = qw(
+ Check
+ Default-Lintian-Options
+ Exit-Status
+ Lintian-Command-Line
+ Match-Strategy
+ Options
+ Output-Format
+ Profile
+ See-Also
+ Test-Against
+ Test-Architectures
+ Test-Conflicts
+ Test-Depends
+ Testname
+ Todo
+);
+
+# disallowed fields
+my @disallowed = qw(Test-For Checks References Reference Ref);
+
+# tests per desc
+my $perfile = $FIXED_TESTS_PER_FILE + scalar @mandatory + scalar @disallowed;
+
+# set the testing plan
+my $known_tests = $perfile * scalar @descpaths;
+
+my $profile = Lintian::Profile->new;
+$profile->load(undef, undef, 0);
+
+for my $descpath (@descpaths) {
+
+ # test for duplicate fields
+ my %count;
+ my @lines = path($descpath)->lines_utf8;
+ for my $line (@lines) {
+ my ($field) = $line =~ qr/^(\S+):/;
+ $count{$field} += 1
+ if defined $field;
+ }
+ ok(
+ (all { $count{$_} == 1 } keys %count),
+ "No duplicate fields in $descpath"
+ );
+
+ ok(
+ (
+ all {
+ my $key = $_;
+ any { $key eq $_ } @known;
+ } keys %count
+ ),
+ "No unknown field names are present in $descpath"
+ );
+
+ my $testcase = read_config($descpath);
+
+ # get test path
+ my $testpath = path($descpath)->parent->parent->stringify;
+
+ # get name from encapsulating directory
+ my $name = path($testpath)->basename;
+
+ # name equals encapsulating directory
+ is($testcase->unfolded_value('Testname'),
+ $name, "Test name matches encapsulating directory in $testpath");
+
+ # mandatory fields
+ ok($testcase->declares($_), "Field $_ exists in $name") for @mandatory;
+
+ # disallowed fields
+ ok(!$testcase->declares($_), "Field $_ does not exist in $name")
+ for @disallowed;
+
+ # no test-against without check
+ ok(!$testcase->declares('Test-Against') || $testcase->declares('Check'),
+ "No Test-Against without Check in $name");
+
+ # get checks
+ my @check_names = $testcase->trimmed_list('Check');
+
+ # no duplicates in checks
+ is(
+ (scalar @check_names),
+ (scalar uniq @check_names),
+ "No duplicates in Check in $name"
+ );
+
+ # listed checks exist
+ ok((all { length $profile->check_module_by_name->{$_} } @check_names),
+ "All checks mentioned in $testpath exist");
+
+ # no duplicates in tags against
+ my @against = $testcase->trimmed_list('Test-Against');
+ is(
+ (scalar @against),
+ (scalar uniq @against),
+ "No duplicates in Test-Against in $name"
+ );
+
+ # listed test-against belong to listed checks
+ $known_tests += scalar @against;
+ my @tags = map { @{$profile->tag_names_for_check->{$_} // []} }
+ (@check_names, 'lintian');
+ my %relatedtags = map { $_ => 1 } @tags;
+ for my $tag (@against) {
+ ok(
+ exists $relatedtags{$tag},
+ "Tags $tag in Test-Against belongs to checks listed in $testpath"
+ );
+ }
+}
+
+done_testing($known_tests);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/diagnostic-value.t b/t/scripts/harness/diagnostic-value.t
new file mode 100644
index 0000000..f95357c
--- /dev/null
+++ b/t/scripts/harness/diagnostic-value.t
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2020 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use strict;
+use warnings;
+use v5.10;
+
+use File::Find::Rule;
+use List::Compare;
+use List::SomeUtils qw(uniq);
+use Path::Tiny;
+use Test::More;
+
+use Test::Lintian::ConfigFile qw(read_config);
+use Test::Lintian::Output::Universal qw(tag_name);
+
+my @known_undeclared = qw(
+);
+
+my @descpaths = File::Find::Rule->file()->name('desc')->in('t/recipes/checks');
+
+my @testpaths;
+for my $descpath (@descpaths) {
+
+ my $testpath = path($descpath)->parent->parent->stringify;
+ my $hintspath = "$testpath/eval/hints";
+
+ push(@testpaths, $testpath)
+ if -r $hintspath;
+}
+
+# set the testing plan
+plan tests => scalar @testpaths + 2;
+
+my @undeclared;
+for my $testpath (@testpaths) {
+
+ my $descpath = "$testpath/eval/desc";
+ my $hintspath = "$testpath/eval/hints";
+
+ my $testcase = read_config($descpath);
+ my @testagainst = uniq $testcase->trimmed_list('Test-Against');
+
+ my @lines = path($hintspath)->lines_utf8({ chomp => 1 });
+ my @testfor = uniq map { tag_name($_) } @lines;
+
+ my @combined = (@testfor, @testagainst);
+
+ push(@undeclared, $testpath) unless scalar @combined;
+
+ TODO: {
+ local $TODO = "Recipe does not test for or against tags in $testpath"
+ unless scalar @combined;
+
+ ok(scalar @combined, "Recipe tests for or against tags in $testpath");
+ }
+}
+
+my $missing = scalar @undeclared;
+my $total = scalar @testpaths;
+diag "$missing tests out of $total have no declared diagnostic value.";
+
+diag "Test with unknown purpose: $_" for @undeclared;
+
+my $exceptions = List::Compare->new(\@undeclared, \@known_undeclared);
+my @unknown = $exceptions->get_Lonly;
+my @solved = $exceptions->get_Ronly;
+
+is(scalar @unknown, 0, 'All tests without a declared purpose are known');
+diag "New test without a declared purpose: $_" for @unknown;
+
+is(scalar @solved,0,'Solved test should be removed from known undeclared set');
+diag "Solved test: $_" for @solved;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/get-tagnames.t b/t/scripts/harness/get-tagnames.t
new file mode 100644
index 0000000..bed1966
--- /dev/null
+++ b/t/scripts/harness/get-tagnames.t
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+
+use List::SomeUtils qw(uniq);
+use Path::Tiny;
+use Test::More;
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+use Test::Lintian::Output::Universal qw(get_tag_names);
+
+# dummy hints
+my $hintstext =<<'EOSTR';
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo-backportss
+distribution-multiple-bad (changes): bad-distribution-in-changes-file foo
+distribution-multiple-bad (changes): bad-distribution-in-changes-file bar
+distribution-multiple-bad (changes): backports-upload-has-incorrect-version-number 1.0
+distribution-multiple-bad (changes): backports-changes-missing
+EOSTR
+my $hintspath = Path::Tiny->tempfile;
+$hintspath->spew($hintstext);
+
+# read tag names from file
+my @actual = sort +uniq +get_tag_names($hintspath->stringify);
+
+my @expected = qw(
+ backports-changes-missing
+ backports-upload-has-incorrect-version-number
+ bad-distribution-in-changes-file
+);
+
+# test plan
+plan tests => 1;
+
+# check when hints match
+is_deeply(\@actual, \@expected, 'Tags read via get_tag_names match');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/hintdiff.t b/t/scripts/harness/hintdiff.t
new file mode 100644
index 0000000..ed59f38
--- /dev/null
+++ b/t/scripts/harness/hintdiff.t
@@ -0,0 +1,207 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+use Capture::Tiny qw(capture_merged);
+use Const::Fast;
+use List::Util qw(none);
+use Path::Tiny;
+use Test::More;
+
+const my $EMPTY => q{};
+const my $SPACE => q{ };
+const my $LINESEP => qr/^/;
+const my $WAIT_STATUS_SHIFT => 8;
+
+# the files below were generated from changelog-file-general on Feb 1, 2019
+
+# original file
+my $original =<<'EOSTR';
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date
+changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555
+changelog-file-general (binary): misspelled-closes-bug #666666
+changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+changelog-file-general (binary): latest-changelog-entry-without-new-date
+changelog-file-general (binary): improbable-bug-number-in-closes 1234
+changelog-file-general (binary): epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+changelog-file-general (binary): debian-changelog-line-too-long line 8
+changelog-file-general (binary): debian-changelog-line-too-long line 15
+changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings
+changelog-file-general (binary): debian-changelog-file-contains-invalid-email-address unknown@unknown
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef
+changelog-file-general (binary): changelog-not-compressed-with-max-compression changelog.Debian.gz
+changelog-file-general (binary): bad-intended-distribution intended to experimental but uploaded to unstable
+EOSTR
+
+# test plan
+plan tests => 8;
+
+# different order
+my $reordered =<<'EOSTR';
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef
+changelog-file-general (binary): changelog-not-compressed-with-max-compression changelog.Debian.gz
+changelog-file-general (binary): debian-changelog-line-too-long line 15
+changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings
+changelog-file-general (binary): debian-changelog-file-contains-invalid-email-address unknown@unknown
+changelog-file-general (binary): bad-intended-distribution intended to experimental but uploaded to unstable
+changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555
+changelog-file-general (binary): misspelled-closes-bug #666666
+changelog-file-general (binary): improbable-bug-number-in-closes 1234
+changelog-file-general (binary): epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+changelog-file-general (binary): debian-changelog-line-too-long line 8
+changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+changelog-file-general (binary): latest-changelog-entry-without-new-date
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date
+EOSTR
+
+ok(hintdiff($original, $reordered) eq $EMPTY, 'Reordered hints on the right');
+ok(hintdiff($reordered, $original) eq $EMPTY, 'Reordered hints on the left');
+
+# lines missing
+my $missing =<<'EOSTR';
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date
+changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555
+changelog-file-general (binary): latest-changelog-entry-without-new-date
+changelog-file-general (binary): improbable-bug-number-in-closes 1234
+changelog-file-general (binary): epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+changelog-file-general (binary): debian-changelog-line-too-long line 15
+changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings
+changelog-file-general (binary): debian-changelog-file-contains-invalid-email-address unknown@unknown
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef
+changelog-file-general (binary): bad-intended-distribution intended to experimental but uploaded to unstable
+EOSTR
+
+my $missingright =<<'EOSTR';
+-changelog-file-general (binary): misspelled-closes-bug #666666
+-changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+-changelog-file-general (binary): debian-changelog-line-too-long line 8
+-changelog-file-general (binary): changelog-not-compressed-with-max-compression changelog.Debian.gz
+EOSTR
+
+ok(hintdiff($original, $missing) eq $missingright,
+ 'Missing hints on the right');
+ok(hintdiff($missing, $original) eq complement($missingright),
+ 'Missing hints on the left');
+
+# lines extra
+my $extra =<<'EOSTR';
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date
+changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555
+changelog-file-general (binary): misspelled-closes-bug #666666
+changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+changelog-file-general (binary): latest-changelog-entry-without-new-date
+changelog-file-general (binary): improbable-bug-number-in-closes 1234
+changelog-file-general (binary): epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+changelog-file-general (binary): debian-changelog-line-too-long line 8
+changelog-file-general (binary): debian-changelog-line-too-long line 15
+changelog-file-general (binary): misspelled-closes-bug #666666
+changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings
+changelog-file-general (source): completely-new never seen before
+changelog-file-general (binary): debian-changelog-file-contains-invalid-email-address unknown@unknown
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef
+changelog-file-general (binary): changelog-not-compressed-with-max-compression changelog.Debian.gz
+changelog-file-general (binary): bad-intended-distribution intended to experimental but uploaded to unstable
+EOSTR
+
+my $extraright =<<'EOSTR';
++changelog-file-general (source): completely-new never seen before
++changelog-file-general (binary): misspelled-closes-bug #666666
++changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+EOSTR
+
+ok(hintdiff($original, $extra) eq $extraright, 'Extra hints on the right');
+ok(hintdiff($extra, $original) eq complement($extraright),
+ 'Extra hints on the left');
+
+# lines different
+my $different =<<'EOSTR';
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date
+changelog-file-general (binary): possible-missing-semicolon-in-closes Closes #555555
+changelog-file-general (binary): misspelled-closes-bug #666666
+changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+changelog-file-general (binary): latest-changelog-entry-without-new-date
+changelog-file-general (binary): improbable-bug-number-in-closes 1234
+changelog-file-general (binary): epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+changelog-file-general (binary): debian-changelog-line-too-long line 9
+changelog-file-general (binary): debian-changelog-line-too-long line 15
+changelog-file-general (source): debian-changelog-file-contains-obsolete-user-emacs-settings
+changelog-file-general (binary): debian-changelog-file-contains-invalid-irc-address unknown@unknown
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef
+changelog-file-general (binary): changelog-not-compressed-with-max-compression changelog.Debian.gz
+changelog-file-general (binary): bad-intended-distribution intended to experimental but uploaded to unstable
+EOSTR
+
+my $differentright =<<'EOSTR';
+-changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555
+-changelog-file-general (binary): debian-changelog-line-too-long line 8
+-changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings
+-changelog-file-general (binary): debian-changelog-file-contains-invalid-email-address unknown@unknown
++changelog-file-general (source): debian-changelog-file-contains-obsolete-user-emacs-settings
++changelog-file-general (binary): possible-missing-semicolon-in-closes Closes #555555
++changelog-file-general (binary): debian-changelog-line-too-long line 9
++changelog-file-general (binary): debian-changelog-file-contains-invalid-irc-address unknown@unknown
+EOSTR
+
+ok(hintdiff($original, $different) eq $differentright,
+ 'Different hints on the right');
+ok(hintdiff($different, $original) eq complement($differentright),
+ 'Different hints on the left');
+
+exit;
+
+sub complement {
+ my ($diff) = @_;
+
+ return $EMPTY
+ unless length $diff;
+
+ my @lines = split($LINESEP, $diff);
+ $_ = -$_ for @lines;
+
+ return join($EMPTY, reverse sort @lines);
+}
+
+sub hintdiff {
+ my ($left_contents, $right_contents) = @_;
+
+ my $left_tiny = Path::Tiny->tempfile;
+ my $right_tiny = Path::Tiny->tempfile;
+
+ $left_tiny->spew($left_contents);
+ $right_tiny->spew($right_contents);
+
+ my @command = ('hintdiff', $left_tiny->stringify, $right_tiny->stringify);
+ my ($diff, $status) = capture_merged { system(@command); };
+ $status >>= $WAIT_STATUS_SHIFT;
+
+ die 'Error executing: ' . join($SPACE, @command) . ": $!"
+ if none { $_ eq $status } (0, 1);
+
+ return $diff;
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/hintextract.t b/t/scripts/harness/hintextract.t
new file mode 100644
index 0000000..c2f8cb9
--- /dev/null
+++ b/t/scripts/harness/hintextract.t
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+use Path::Tiny;
+use Test::More;
+
+# the text below was generated from changelog-file-general on Feb 1, 2019
+
+# expected output
+my $expected =<<'EOSTR';
+changelog-file-general (source): latest-debian-changelog-entry-without-new-date
+changelog-file-general (binary): possible-missing-colon-in-closes Closes #555555
+changelog-file-general (binary): misspelled-closes-bug #666666
+changelog-file-general (binary): latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+changelog-file-general (binary): latest-changelog-entry-without-new-date
+changelog-file-general (binary): improbable-bug-number-in-closes 1234
+changelog-file-general (binary): epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+changelog-file-general (binary): debian-changelog-line-too-long line 8
+changelog-file-general (binary): debian-changelog-line-too-long line 15
+changelog-file-general (binary): debian-changelog-file-contains-obsolete-user-emacs-settings
+changelog-file-general (binary): debian-changelog-file-contains-invalid-email-address unknown@unknown
+changelog-file-general (binary): changelog-references-temp-security-identifier TEMP-1234567-abcdef
+changelog-file-general (binary): changelog-not-compressed-with-max-compression changelog.Debian.gz
+changelog-file-general (binary): bad-intended-distribution intended to experimental but uploaded to unstable
+EOSTR
+
+# test plan
+plan tests => 1;
+
+# EWI input
+my $ewi =<<'EOSTR';
+E: changelog-file-general source: latest-debian-changelog-entry-without-new-date
+W: changelog-file-general: changelog-not-compressed-with-max-compression changelog.Debian.gz
+W: changelog-file-general: debian-changelog-file-contains-obsolete-user-emacs-settings
+E: changelog-file-general: debian-changelog-file-contains-invalid-email-address unknown@unknown
+E: changelog-file-general: latest-changelog-entry-without-new-date
+W: changelog-file-general: latest-debian-changelog-entry-reuses-existing-version 1:1.0-1 == 1.0-1 (last used: Fri, 01 Feb 2019 12:27:45 -0800)
+E: changelog-file-general: epoch-changed-but-upstream-version-did-not-go-backwards 1.0 >= 1.0
+E: changelog-file-general: possible-missing-colon-in-closes Closes #555555
+W: changelog-file-general: changelog-references-temp-security-identifier TEMP-1234567-abcdef
+X: changelog-file-general: bad-intended-distribution intended to experimental but uploaded to unstable
+W: changelog-file-general: misspelled-closes-bug #666666
+W: changelog-file-general: improbable-bug-number-in-closes 1234
+W: changelog-file-general: debian-changelog-line-too-long line 8
+W: changelog-file-general: debian-changelog-line-too-long line 15
+EOSTR
+
+ok(
+ hintextract('EWI', $ewi) eq $expected,
+ 'Hints extracted from EWI format matched.'
+);
+
+exit;
+
+sub hintextract {
+ my ($format, $text) = @_;
+
+ my $outpath = Path::Tiny->tempfile;
+
+ my $inpath = Path::Tiny->tempfile;
+ $inpath->spew($text);
+
+ die "Cannot run hintextract: $!"
+ if (
+ system(
+ 'hintextract', '-f',$format,
+ $inpath->stringify,$outpath->stringify
+ )
+ );
+
+ return $outpath->slurp;
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/match-glob.t b/t/scripts/harness/match-glob.t
new file mode 100644
index 0000000..1838537
--- /dev/null
+++ b/t/scripts/harness/match-glob.t
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2022 Axel Beckert
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use strict;
+use warnings;
+use v5.10;
+
+use Test::More;
+use Lintian::Util qw(match_glob);
+
+is_deeply([match_glob('foo*bar', qw(foo bar foobar foobazbar xfoobazbary))],
+ [qw(foobar foobazbar)],'match_glob() with simple * wildcard');
+
+is_deeply([match_glob('fo?bar', qw(foo bar foobar foobazbar xfoobarbaz))],
+ [qw(foobar)],'match_glob() with simple ? wildcard');
+
+is_deeply(
+ [match_glob('foo*[baz]', qw(foo foo[baz] foobar[baz]))],
+ [qw(foo[baz] foobar[baz])],
+ 'match_glob() with * wildcard and literal brackets'
+);
+
+is_deeply(
+ [match_glob('foo*{baz}', qw(foo foo{baz} foobar{baz} xfoobar{baz}y))],
+ [qw(foo{baz} foobar{baz})],
+ 'match_glob() with * wildcard and literal curly braces'
+);
+
+is_deeply(
+ [match_glob('foo*(baz)', qw[foo foo(baz) foobar(baz) xfoobar(baz)y])],
+ [qw[foo(baz) foobar(baz)]],
+ 'match_glob() with * wildcard and literal parentheses'
+);
+
+is_deeply([match_glob('foo.bar', qw(foo.bar foo|bar foo&bar xfoo.bary))],
+ [qw(foo.bar)],'match_glob() with no wildcard but a literal dot');
+
+done_testing();
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/no-watch-file-in-native.t b/t/scripts/harness/no-watch-file-in-native.t
new file mode 100644
index 0000000..9df968b
--- /dev/null
+++ b/t/scripts/harness/no-watch-file-in-native.t
@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2018 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+
+use File::Basename qw(basename);
+use File::Temp;
+use File::stat;
+use List::Util qw(max);
+use Test::More;
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+use Test::Lintian::Prepare qw(prepare);
+
+# dummy test name; used in desc and directory name
+my $TESTNAME = 'test-of-templates-for-native-package';
+
+# temporary work directory
+my $tempdir = Path::Tiny->tempdir();
+
+# specification path
+my $specpath = $tempdir->child('spec')->child($TESTNAME);
+$specpath->mkpath;
+
+# test description
+my $desctext =<<"EOSTR";
+Testname: $TESTNAME
+Version: 1
+Skeleton: upload-native
+EOSTR
+
+my $descpath = $specpath->child('fill-values');
+$descpath->spew($desctext);
+
+my $runpath = $tempdir->child('run')->child($TESTNAME);
+$runpath->mkpath;
+
+prepare($specpath->stringify, $runpath->stringify, 't');
+
+# test plan
+plan tests => 1;
+
+ok(!-e $runpath->child('debian')->child('watch')->stringify,
+ 'No watch file present');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/prepare.t b/t/scripts/harness/prepare.t
new file mode 100644
index 0000000..90fcb39
--- /dev/null
+++ b/t/scripts/harness/prepare.t
@@ -0,0 +1,159 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2018 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+
+use File::Basename qw(basename);
+use File::Temp;
+use File::stat;
+use IPC::Run3;
+use List::Util qw(max);
+use Test::More;
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+use Test::Lintian::Prepare qw(prepare);
+use Test::Lintian::ConfigFile qw(read_config);
+use Test::Lintian::Helper qw(rfc822date);
+
+# dummy test name; used in desc and directory name
+my $TESTNAME = 'shared-libs-non-pic-i386';
+
+# temporary work directory
+my $tempdir = Path::Tiny->tempdir();
+
+# specification path
+my $specpath = $tempdir->child('spec')->child($TESTNAME);
+$specpath->mkpath;
+
+# test description
+my $desctext =<<"EOSTR";
+Testname: $TESTNAME
+Version: 1.0-2
+Skeleton: upload-native
+Test-Architectures: any-amd64 any-i386
+Package-Architecture: any
+Test-Depends: debhelper (>= 9.20151004~)
+Description: Test checks related to non-pic code
+Test-For: shlib-with-non-pic-code
+Check: shared-libs
+EOSTR
+
+my $descpath = $specpath->child('fill-values');
+$descpath->spew($desctext);
+
+my $runpath = $tempdir->child('run')->child($TESTNAME);
+$runpath->mkpath;
+
+prepare($specpath->stringify, $runpath->stringify, 't');
+
+# read resulting test description
+my $testcase = read_config($runpath->child('fill-values')->stringify);
+
+my @testarches = $testcase->trimmed_list('Test-Architectures');
+
+# test plan
+plan tests => 20 + scalar @testarches;
+
+is($testcase->unfolded_value('Testname'), $TESTNAME, 'Correct name');
+
+is($testcase->unfolded_value('Version'), '1.0-2', 'Correct version');
+is($testcase->unfolded_value('Upstream-Version'),
+ '1.0', 'Correct upstream version');
+
+is(
+ $testcase->unfolded_value('Test-Architectures'),
+ 'any-amd64 any-i386',
+ 'Correct test architectures'
+);
+isnt($testcase->unfolded_value('Test-Architectures'),
+ 'any', 'Correct test architectures');
+for my $testarch (@testarches) {
+ my @command
+ = (qw{dpkg-architecture --list-known --match-wildcard}, $testarch);
+ my $output;
+
+ run3(\@command, \undef, \$output);
+ my @known = grep { length } split(/\n/, $output);
+
+ cmp_ok(scalar @known, '>', 1, "Known test architecture $testarch");
+}
+
+is($testcase->unfolded_value('Host-Architecture'),
+ $ENV{'DEB_HOST_ARCH'}, 'Correct host architecture');
+isnt(
+ $testcase->unfolded_value('Host-Architecture'),
+ $testcase->unfolded_value('Test-Architectures'),
+ 'Test and host architectures are different'
+);
+
+is($testcase->unfolded_value('Package-Architecture'),
+ 'any', 'Changed package architecture');
+isnt($testcase->unfolded_value('Package-Architecture'),
+ 'all', 'Not the default package architecture');
+
+is($testcase->unfolded_value('Skeleton'), 'upload-native', 'Correct skeleton');
+
+is(
+ $testcase->unfolded_value('Test-Depends'),
+ 'debhelper (>= 9.20151004~)',
+ 'Correct test dependencies'
+);
+
+is($testcase->unfolded_value('Test-For'),
+ 'shlib-with-non-pic-code','Correct Test-For');
+ok(!$testcase->declares('Test-Against'), 'Correct Test-Against');
+
+is($testcase->unfolded_value('Standards-Version'),
+ $ENV{'POLICY_VERSION'}, 'Correct policy version');
+
+is($testcase->unfolded_value('Type'), 'native', 'Test is native');
+isnt($testcase->unfolded_value('Type'), 'yes', 'Native type not yes.');
+
+is(
+ $testcase->unfolded_value('Dh-Compat-Level'),
+ $ENV{'DEFAULT_DEBHELPER_COMPAT'},
+ 'Default debhelper compat level'
+);
+
+is(
+ $testcase->unfolded_value('Description'),
+ 'Test checks related to non-pic code',
+ 'Correct description'
+);
+isnt(
+ $testcase->unfolded_value('Description'),
+ 'No Description Available',
+ 'Not default description'
+);
+
+is(
+ $testcase->unfolded_value('Author'),
+ 'Debian Lintian Maintainers <lintian-maint@debian.org>',
+ 'Default author'
+);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/sort-order.t b/t/scripts/harness/sort-order.t
new file mode 100644
index 0000000..a74375f
--- /dev/null
+++ b/t/scripts/harness/sort-order.t
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2020 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use strict;
+use warnings;
+use v5.10;
+
+use File::Basename;
+use File::Find::Rule;
+use Path::Tiny;
+use Test::More;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+
+use Lintian::Profile;
+use Test::Lintian::ConfigFile qw(read_config);
+
+my $checkpath = 't/recipes/checks';
+
+# find all test specifications related to only one check
+my @descpaths = sort File::Find::Rule->file()->name('desc')->in($checkpath);
+
+# set the testing plan
+plan tests => 3 * scalar @descpaths;
+
+my $profile = Lintian::Profile->new;
+$profile->load(undef, undef, 0);
+
+foreach my $descpath (@descpaths) {
+
+ my $testcase = read_config($descpath);
+ my $name = $testcase->unfolded_value('Testname');
+
+ # get test path
+ my $testpath = path($descpath)->parent->stringify;
+
+ ok($testcase->declares('Check'),
+ "Test specification for $name defines a field Check");
+
+ next
+ unless $testcase->declares('Check');
+
+ my @checks = $testcase->trimmed_list('Check');
+
+ # test is only about one check
+ is(scalar @checks, 1,"Test in $testpath is associate only with one check");
+
+ next unless scalar @checks == 1;
+ my $check = $checks[0];
+
+ # get the relative location of folder containing test
+ my $parent = path($testpath)->parent->parent;
+ my $relative = $parent->relative($checkpath)->stringify;
+
+ # relative location should match check
+ is($relative, $check,
+ "Test in $testpath is located in correct folder ($relative != $check)"
+ );
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/tag-coverage.t b/t/scripts/harness/tag-coverage.t
new file mode 100644
index 0000000..366789a
--- /dev/null
+++ b/t/scripts/harness/tag-coverage.t
@@ -0,0 +1,171 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use strict;
+use warnings;
+use v5.10;
+
+use Const::Fast;
+use File::Basename;
+use File::Find::Rule;
+use List::Compare;
+use List::SomeUtils qw(uniq);
+use Path::Tiny;
+use Test::More;
+
+use lib ($ENV{'LINTIAN_BASE'} // q{.}) . '/lib';
+
+use Lintian::Profile;
+use Test::Lintian::ConfigFile qw(read_config);
+use Test::Lintian::Output::EWI qw(to_universal);
+use Test::Lintian::Output::Universal qw(tag_name);
+
+const my $SPACE => q{ };
+const my $NEWLINE => qq{\n};
+
+my @known_missing = (
+ qw(
+ changed-by-invalid-for-derivative
+ debian-files-list-in-source
+ debian-rules-missing-recommended-target
+ debian-rules-not-executable
+ elf-warning
+ embedded-pear-module
+ invalid-field-for-derivative
+ invalid-version-number-for-derivative
+ manual-page-in-udeb
+ no-tests
+ old-python-version-field
+ old-source-override-location
+ patch-modifying-debian-files
+ patch-system-but-direct-changes-in-diff
+ quilt-series-references-non-existent-patch
+ source-contains-quilt-control-dir
+ sphinxdoc-but-no-sphinxdoc-depends
+ unpack-message-for-deb-control
+ unpack-message-for-orig
+ uses-deprecated-adttmp
+ ),
+
+# the following tags are not testable due to restrictions in reprotest
+# building the tests causes regressions due to an unknown problem, maybe in docker
+# possibly related to https://github.com/yarnpkg/yarn/pull/1837
+# their functionality is probably better tested in piuparts
+ qw(
+ wrong-file-owner-uid-or-gid
+ bad-owner-for-doc-file
+ non-standard-game-executable-perm
+ rules-silently-require-root
+ )
+);
+
+my $profile = Lintian::Profile->new;
+$profile->load(undef, undef, 0);
+
+# find known checks
+my @known = uniq $profile->known_checks;
+
+my %checktags;
+$checktags{$_} = $profile->tag_names_for_check->{$_}for @known;
+
+my %seen;
+
+# require tags tested in their check; otherwise path could be t/recipes
+my @descpaths = File::Find::Rule->file()->name('desc')->in('t/recipes/checks');
+for my $descpath (@descpaths) {
+
+ my $testcase = read_config($descpath);
+
+ my $testpath = dirname($descpath);
+ my $hintspath = "$testpath/hints";
+
+ next unless -r $hintspath;
+
+ my $universal = path($hintspath)->slurp_utf8;
+
+ print "testcase->{testname}\n";
+ my @lines = split(/$NEWLINE/, $universal);
+ my @testfor = uniq map { tag_name($_) } @lines;
+
+ # diag "Test-For: " . join($SPACE, @testfor);
+
+ if (exists $testcase->{check}) {
+ my @checks = split($SPACE, $testcase->{check});
+ # diag "Checks: " . join($SPACE, @checks);
+ my @related;
+ push(@related, @{$checktags{$_} // []})for @checks;
+ my $lc = List::Compare->new(\@testfor, \@related);
+ @testfor = $lc->get_intersection;
+ }
+
+ $seen{$_} = 1 for @testfor;
+}
+
+# find known tags
+my @wanted = uniq $profile->known_tags;
+my $total = scalar @wanted;
+
+# set the testing plan
+plan tests => scalar @wanted + 2;
+
+for my $name (@wanted) {
+ TODO: {
+ local $TODO = "Tag $name is currently untested"
+ unless exists $seen{$name};
+
+ ok(exists $seen{$name}, "Tag $name appears in tests");
+ }
+}
+
+my @tested = keys %seen;
+
+my $comp = List::Compare->new(\@wanted, \@tested);
+my @missing = $comp->get_Lonly;
+my @extra = $comp->get_Ronly;
+
+my $found = scalar @tested;
+diag 'Missing '
+ . scalar @missing
+ . " out of $total tags for complete test coverage.";
+
+diag "Untested tag: $_" for @missing;
+#diag "Extra: $_" for @extra;
+
+my $exceptions = List::Compare->new(\@missing, \@known_missing);
+my @unknown = $exceptions->get_Lonly;
+my @solved = $exceptions->get_Ronly;
+
+is(scalar @unknown, 0, 'All tags are covered in the testsuite');
+diag "Unknown/missing tag: $_" for @unknown;
+
+is(scalar @solved, 0, 'Solved tags should be removed from known missing set');
+diag "Solved tag: $_" for @solved;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/harness/watch-file-in-non-native.t b/t/scripts/harness/watch-file-in-non-native.t
new file mode 100644
index 0000000..5bea873
--- /dev/null
+++ b/t/scripts/harness/watch-file-in-non-native.t
@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2018 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+
+use File::Basename qw(basename);
+use File::Temp;
+use File::stat;
+use List::Util qw(max);
+use Test::More;
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+use Test::Lintian::Prepare qw(prepare);
+
+# dummy test name; used in desc and directory name
+my $TESTNAME = 'test-of-templates-for-native-package';
+
+# temporary work directory
+my $tempdir = Path::Tiny->tempdir();
+
+# specification path
+my $specpath = $tempdir->child('spec')->child($TESTNAME);
+$specpath->mkpath;
+
+# test description
+my $desctext =<<"EOSTR";
+Testname: $TESTNAME
+Version: 1-1
+Skeleton: upload-non-native
+EOSTR
+
+my $descpath = $specpath->child('fill-values');
+$descpath->spew($desctext);
+
+my $runpath = $tempdir->child('run')->child($TESTNAME);
+$runpath->mkpath;
+
+prepare($specpath->stringify, $runpath->stringify, 't');
+
+# test plan
+plan tests => 1;
+
+ok(-e $runpath->child('debian')->child('watch')->stringify,
+ 'Watch file present');
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/pod-coverage.t b/t/scripts/pod-coverage.t
new file mode 100755
index 0000000..e440476
--- /dev/null
+++ b/t/scripts/pod-coverage.t
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use Test::Lintian;
+
+plan skip_all => 'Not needed for coverage of Lintian'
+ if $ENV{'LINTIAN_COVERAGE'};
+
+plan skip_all => 'Test::Pod::Coverage 1.08 required for this test'
+ unless eval 'use Test::Pod::Coverage 1.08; 1';
+
+load_profile_for_test;
+
+# exempt checks and screens
+my @modules = grep { !/^Lintian::(?:Check|Screen)::/ } all_modules('lib');
+
+plan tests => scalar @modules;
+
+pod_coverage_ok($_, { coverage_class => 'Pod::Coverage::TrustPod' })
+ for @modules;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/pod-spelling.t b/t/scripts/pod-spelling.t
new file mode 100755
index 0000000..7e2e0f8
--- /dev/null
+++ b/t/scripts/pod-spelling.t
@@ -0,0 +1,140 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Const::Fast;
+use IPC::Run3;
+use Test::More;
+
+plan skip_all => 'Not needed for coverage of Lintian'
+ if $ENV{'LINTIAN_COVERAGE'};
+
+plan skip_all => 'Need newer version of aspell-en (>= 7.1)'
+ if not check_aspell();
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+
+use Test::Lintian;
+
+eval 'use Test::Spelling';
+plan skip_all => 'Pod spell checking requires Test::Spelling' if $@;
+
+const my $DOT => q{.};
+
+my @GOOD_WORDS;
+while (my $line = <DATA>) {
+ $line =~ s/ \s* (?: [#] .* )? \Z//xsm;
+ push(@GOOD_WORDS, grep { length } split(/\s+/, $line));
+}
+
+add_stopwords(@GOOD_WORDS);
+
+# Hardcode spelling command as Test::Spelling prefers spell over
+# aspell if installed, too. This avoids a "Build-Conflicts: spell".
+set_spell_cmd('aspell list -l en -p /dev/null');
+
+chdir($ENV{'LINTIAN_BASE'} // $DOT)
+ or die("fatal error: could not chdir to $ENV{LINTIAN_BASE}: $!");
+
+my @CHECKS = glob('checks/*[!.]*[!c]');
+my @DIRS= qw(bin doc/tutorial lib private reporting t/scripts t/templates);
+
+all_pod_files_spelling_ok(@CHECKS, @DIRS);
+
+sub check_aspell {
+ # Ubuntu Precise has an old aspell-en, which does not recognise
+ # "basic" stuff like "indices" or "extendable".
+ my $ok = 0;
+
+ my @command = qw{dpkg -l};
+ my $output;
+
+ run3(\@command, \undef, \$output);
+ my @lines = split(/\n/, $output);
+
+ while (defined(my $line = shift @lines)) {
+ if ($line =~ m/^.i \s+ aspell-en \s+ (\S+) \s/xsm) {
+ my $version = $1;
+ require Lintian::Relation::Version;
+ Lintian::Relation::Version->import(qw(versions_gte));
+ # Print the version of aspell-en if it is not new enough
+ $ok = versions_gte($version, '7.1-0~')
+ ||diag("Found aspell-en $version, want 7.1-0~ or newer");
+ }
+ }
+
+ return $ok;
+}
+
+__DATA__
+# List of extra words that aspell doesn't know, but we need it to know
+# about. Comments are stripped and lines are split on white space, so
+# multiple words can appear on the same line
+
+
+# Names of various people that appear in the POD docs
+Russ Allbery
+Barratt
+Braakman
+Brockschmidt
+Geissert
+Lichtenheld
+Niels Thykier
+Bastien ROUCARIES
+Felix Lechner
+Schwarz
+Axel Beckert
+
+lintian Lintian Lintian's # ' # hi emacs
+dpkg
+libapt
+debian Debian DEBIAN
+
+# md is md5 butchered by aspell
+md
+# 'soft'ly which was parsed as soft'ly.
+soft'ly # ' # hi emacs
+
+# "util" is import tag ":util" from Lintian::Output, where aspell
+# dropped the ":".
+util
+
+# This is wrong in general, but it happens to be a package name that
+# we use as an example.
+alot
+
+# Other various names/fields/arguments/variables/expressions that
+# trips aspell. Ordered by nothing in particular
+PTS QA qa uploader uploaders UPLOADER Uploaders changelog changelogs
+desc COND CURVALUE subdirectory subdirectories udeb deb dsc nlist
+olist KEYN BASEDIR METADATA OO TODO dir exitcode nohang substvar
+substvars listref metadata blockingly checksum checksums Nativeness
+src nativeness Indep debfiles diffstat gz env classpath conffiles
+objdump tasksel filename Pre pre hardlink hardlinking hardlinks PROC
+dirs PROFNAME CHECKNAMES COLLMAP ERRHANDLER LPKG unpacker worklist
+BASEPATH stderr stdout stdin ascii html issuedtags subclasses
+showdescription printables overridable processables msg ORed SIGKILLs
+SIGTERM wildcard wildcards ar whitelist blacklist API amd armhf cpu
+linux whitelisted blacklisted shaX sha parsers EWI
+customisation ALGO CLOC CMD DEBFILE DEST DSCFILE FOH NOCLOSE PARENTDIR
+PGP STARTLINE STR UTF bitmask cp debconf rw processable severities
+AND'ing # ' # this is getting old
+superset YYYY dirname operm username whitespace
+Whitespace udebs multiword recognised eqv testsuite methodx multi
+multiarch relationA relationB Multi natively unordered arg CVE autodie
+hashrefs namespace subdir SIGPIPE SIG blocknumber blocksub readwindow
+REMOVESLASH STAMPFILE TAGNAME TCODE TESTDATA BLOCKSIZE jN
+POSIX t1c2pfb init runtime txt executability writability
+INHANDLE OUTHANDLES UTC timestamp faux tag_name READMEs Testname
+debhelper compat dh buildpackage uaccess udev AppStream plugdev dbgsym
+buildinfo dfsg addons xargs
+
+Buildflags
+__END__
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/pod-synopsis.t b/t/scripts/pod-synopsis.t
new file mode 100755
index 0000000..715aed4
--- /dev/null
+++ b/t/scripts/pod-synopsis.t
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More;
+
+use Test::Lintian;
+
+const my $DOT => q{.};
+
+load_profile_for_test;
+
+plan skip_all => 'Not needed for coverage of Lintian'
+ if $ENV{'LINTIAN_COVERAGE'};
+eval 'use Test::Pod';
+plan skip_all => 'Test::Pod required for testing' if $@;
+eval 'use Test::Synopsis';
+plan skip_all => 'Test::Synopsis required for testing' if $@;
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+
+my @pod_files = all_pod_files("$ENV{'LINTIAN_BASE'}/lib");
+plan tests => scalar(@pod_files);
+synopsis_ok(@pod_files);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/pod.t b/t/scripts/pod.t
new file mode 100755
index 0000000..2b50e43
--- /dev/null
+++ b/t/scripts/pod.t
@@ -0,0 +1,37 @@
+#!/usr/bin/perl
+#
+# Test POD formatting. Taken essentially verbatim from the examples in the
+# Test::Pod documentation.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More;
+
+plan skip_all => 'Not needed for coverage of Lintian'
+ if $ENV{'LINTIAN_COVERAGE'};
+
+eval 'use Test::Pod 1.00';
+
+const my $DOT => q{.};
+
+my $dir = $ENV{'LINTIAN_BASE'} // $DOT;
+
+my @POD_SOURCES = grep { -e } (
+ "$dir/lib",
+ "$dir/doc/tutorial",
+ "$dir/man/lintian.pod",
+ "$dir/man/lintian-annotate-hints.pod",
+ "$dir/man/lintian-explain-tags.pod",
+);
+
+my @POD_FILES = all_pod_files(@POD_SOURCES);
+
+all_pod_files_ok(@POD_FILES);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/profile-load.t b/t/scripts/profile-load.t
new file mode 100755
index 0000000..9ad0a0c
--- /dev/null
+++ b/t/scripts/profile-load.t
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+
+# Test that all profiles are loadable...
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More;
+
+use Test::Lintian;
+
+const my $DOT => q{.};
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+
+# We could use a plan, but then we had to update every time we added
+# or removed a profile...
+test_load_profiles($ENV{'LINTIAN_BASE'}, $ENV{'LINTIAN_BASE'});
+
+done_testing;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/profiles-coverage.t b/t/scripts/profiles-coverage.t
new file mode 100755
index 0000000..5186ea0
--- /dev/null
+++ b/t/scripts/profiles-coverage.t
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+
+# Test for complete coverage of tags in profiles
+# - side-effect, test that all tags and checks
+# in the profiles are valid.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use File::Find::Rule;
+use Path::Tiny;
+use Test::More;
+
+use Lintian::Deb822;
+
+const my $EMPTY => q{};
+const my $TESTS_PER_TAG => 3;
+
+# allow commas until all third-party profiles present in Lintian
+# installations, such as dpkg/main.profile, have been converted
+const my $FIELD_SEPARATOR => qr/ \s+ | \s* , \s* /sx;
+
+my $known_tests = 0;
+
+my $root = $ENV{'LINTIAN_BASE'} // q{.};
+
+my %CHECKS;
+my $checkdir = "$root/lib/Lintian/Check";
+
+# find all checks
+my @modulepaths = File::Find::Rule->file->name('*.pm')->in($checkdir);
+for my $modulepath (@modulepaths) {
+ my $relative = path($modulepath)->relative($checkdir)->stringify;
+ my ($name) = ($relative =~ /^(.*)\.pm$/);
+
+ $name =~ s{([[:upper:]])}{-\L$1}g;
+ $name =~ s{^-}{};
+ $name =~ s{/-}{/}g;
+
+ $CHECKS{$name} = [];
+}
+
+my %TAGS;
+
+# find all tags
+my @tag_paths = File::Find::Rule->file->name('*.tag')->in("$root/tags");
+for my $tag_path (@tag_paths) {
+
+ my $deb822 = Lintian::Deb822->new;
+ my @sections = $deb822->read_file($tag_path);
+
+ BAIL_OUT("$tag_path does not have at least one paragraph")
+ unless @sections;
+ my $header = shift @sections;
+
+ ok($header->declares('Tag'), "Field Tag exists in $tag_path");
+ ok($header->declares('Check'), "Field Check exists in $tag_path");
+
+ my $tag_name = $header->value('Tag');
+ my $check_name = $header->value('Check');
+
+ ok(exists $CHECKS{$check_name},
+ "Check $check_name mentioned in $tag_path exists");
+ $CHECKS{$check_name} //= [];
+ push(@{$CHECKS{$check_name}}, $tag_name);
+
+ $TAGS{$tag_name} = 0;
+}
+
+$known_tests += $TESTS_PER_TAG * scalar @tag_paths;
+
+done_testing($known_tests);
+
+exit 0;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/run-private-scripts.t b/t/scripts/run-private-scripts.t
new file mode 100644
index 0000000..0632ea2
--- /dev/null
+++ b/t/scripts/run-private-scripts.t
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2014-2016 Jakub Wilk <jwilk@jwilk.net>
+# Copyright (C) 2017-2022 Axel Beckert <abe@debian.org>
+#
+# This program is free software. It is distributed under the terms of
+# the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use IPC::Run3;
+use Test::More tests => 2;
+
+const my $DOT => q{.};
+const my $WAIT_STATUS_SHIFT => 8;
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+my $cmd_dir = "$ENV{LINTIAN_BASE}/private";
+
+sub t {
+ my ($cmd, $expected, $expected_stderr) = @_;
+
+ subtest $cmd => sub {
+ my $command = "$cmd_dir/$cmd";
+ if (-x $command) {
+ plan tests => 3;
+
+ $expected_stderr //= qr/\A\Z/;
+ my $input = undef;
+ my $output;
+ my $error;
+ run3([$command], \$input, \$output, \$error);
+
+ my $status = ($? >> $WAIT_STATUS_SHIFT);
+ is($status, 0, "Exit status 0 of $cmd");
+ like($error, $expected_stderr,
+ "STDERR of $cmd matches $expected_stderr");
+ like($output, $expected, "Expected output of $cmd");
+ } else {
+ plan skip_all =>'due to script not present (likely not installed)';
+ }
+ };
+
+ return;
+}
+
+SKIP: {
+ skip('Only works with git', 1) unless -x '/usr/bin/git' && -d '.git';
+
+ t(
+ 'generate-tag-summary',
+ qr/Assuming commit range to be/,
+ qr/^No tags were added or removed$|\A\Z/
+ );
+}
+t('latest-policy-version', qr/^(\d+\.){3}/);
+
+done_testing();
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/spellintian-textual-content.t b/t/scripts/spellintian-textual-content.t
new file mode 100644
index 0000000..76a8166
--- /dev/null
+++ b/t/scripts/spellintian-textual-content.t
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2014-2016 Jakub Wilk <jwilk@jwilk.net>
+# Copyright (C) 2017-2023 Axel Beckert <abe@debian.org>
+#
+# This program is free software. It is distributed under the terms of
+# the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# TODO: lintian should probably find these issues itself when running
+# against itself , i.e. without having a specific check in the test
+# suite for this. That way we especially also could use Lintian
+# overrides to declare false positives.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use IPC::Run3;
+use List::SomeUtils qw(uniq);
+use Test::More tests => 4;
+
+const my $NEWLINE => qq{\n};
+const my $DOT => q{.};
+const my $EMPTY => q{};
+const my $WAIT_STATUS_SHIFT => 8;
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+
+my $cmd_path = "$ENV{LINTIAN_BASE}/bin/spellintian";
+my @list_of_tag_files = glob('tags/*/*.tag');
+my @list_of_doc_files = (
+ glob('doc/tutorial/Lintian/Tutorial/*.pod doc/examples/tags/m/*.desc'),
+ qw(
+ doc/README.developers.pod
+ doc/lintian.rst
+ doc/releases.md
+ doc/tutorial/Lintian/Tutorial.pod
+ )
+);
+
+sub t {
+ my ($filetype, @files) = @_;
+ my @command = ($cmd_path, @files);
+ my $output;
+ run3(\@command, undef, \$output);
+
+ my $status = ($? >> $WAIT_STATUS_SHIFT);
+ is($status, 0, "Exit status is 0 when checking $filetype");
+ is($output, $EMPTY, "No spelling errors in $filetype");
+
+ return;
+}
+
+t('tags', @list_of_tag_files);
+t('docs', @list_of_doc_files);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/spellintian.t b/t/scripts/spellintian.t
new file mode 100755
index 0000000..719d65c
--- /dev/null
+++ b/t/scripts/spellintian.t
@@ -0,0 +1,169 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2014-2016 Jakub Wilk <jwilk@jwilk.net>
+# Copyright (C) 2017-2023 Axel Beckert <abe@debian.org>
+#
+# This program is free software. It is distributed under the terms of
+# the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use IPC::Run3;
+use List::SomeUtils qw(uniq);
+use Array::Utils qw(intersect);
+use Test::More tests => 8;
+
+const my $NEWLINE => qq{\n};
+const my $DOT => q{.};
+const my $WAIT_STATUS_SHIFT => 8;
+
+$ENV{'LINTIAN_BASE'} //= $DOT;
+
+my $cmd_path = "$ENV{LINTIAN_BASE}/bin/spellintian";
+my $spelling_data = "$ENV{LINTIAN_BASE}/data/spelling/corrections";
+my @word_lists
+ = qw(/usr/share/dict/american-english /usr/share/dict/british-english);
+
+# See #1019541 why some valid words are ignored and still ok to be
+# listed as a misspelled word.
+my @valid_but_very_seldom_words = qw(bellow singed want's);
+
+# See #865055 why "iff" is wrong. "publically" is a seldom, but valid
+# English word, is used in the OpenSSL license and hence causes quite
+# some false positives, when being added (again).
+my @valid_words = qw(iff publically);
+
+sub t {
+ my ($input, $expected, @options) = @_;
+
+ my @command = ($cmd_path, @options);
+ my $output;
+ run3(\@command, \$input, \$output);
+
+ my $status = ($? >> $WAIT_STATUS_SHIFT);
+ is($status, 0, 'exit status 0');
+ is($output, $expected, 'expected output');
+
+ return;
+}
+
+my $s = "A familar brown gnu allows\nto jump over the lazy dog.\n";
+
+t($s,
+ 'familar -> familiar'
+ . $NEWLINE
+ . '"allows to" -> "allows one to"'
+ . $NEWLINE);
+t(
+ $s,
+ 'familar -> familiar'
+ . $NEWLINE
+ . '"allows to" -> "allows one to"'
+ . $NEWLINE
+ . 'gnu -> GNU'
+ . $NEWLINE,
+ '--picky'
+);
+
+foreach my $word_list (@word_lists) {
+ open(my $wl_fh, '<', $word_list)
+ or die "Can't open $word_list for reading: $!";
+ local $/ = undef; # enable localized slurp mode
+ push(@valid_words, split(/\n/, <$wl_fh>));
+ close $wl_fh;
+}
+
+# Don't list identical words from American and British English twice.
+@valid_words = uniq(@valid_words);
+
+# Ignore words which are valid but very seldom and unlikely to show up
+# in Debian packages.
+foreach my $valid_but_very_seldom_word (@valid_but_very_seldom_words) {
+ @valid_words = grep { !/^$valid_but_very_seldom_word$/ } @valid_words;
+}
+
+my $iff = 0;
+my $publically = 0;
+my @case_sen;
+my @equal;
+my @valid_but_listed_words = qw();
+my @bad_spellings = qw();
+my @good_spellings = qw();
+
+open(my $sp_fh, '<', $spelling_data)
+ or die "Can't open $spelling_data for reading: $!";
+while (my $corr = <$sp_fh>) {
+ next if $corr =~ m{ ^\# | ^$ }x;
+ chomp($corr);
+
+ my ($wrong, $good) = split(/\|\|/, $corr);
+ # Check for corrections equal to original
+ if ($wrong eq $good) {
+ push @equal, $wrong;
+ # Check if case sensitive corrections have been added to the wrong
+ # file (data/spelling/corrections, not data/spelling/corrections-case).
+ # Bad example from #883041: german||German
+ } elsif ($wrong eq lc($good)) {
+ push @case_sen, $wrong;
+ }
+
+ # Needed later, e.g. for checking against lists of valid words.
+ push(@bad_spellings, $wrong);
+ push(@good_spellings, $good);
+}
+close($sp_fh);
+
+ok(
+ scalar(@equal) == 0,
+ "No no-op correction present in ${spelling_data} ("
+ . join(', ', @equal) . ')'
+);
+ok(
+ scalar(@case_sen) == 0,
+ "No case sensitive correction present in ${spelling_data} ("
+ . join(', ', @case_sen) . ')'
+);
+
+# Check if valid words have beeing has been added as correction.
+my %word_count = ();
+foreach my $word (@valid_words, @bad_spellings) {
+ $word_count{$word}++;
+}
+foreach my $word (keys %word_count) {
+ push(@valid_but_listed_words, $word) if $word_count{$word} > 1;
+}
+
+ok(
+ scalar(@valid_but_listed_words) == 0,
+ "No valid word is present in ${spelling_data} ("
+ . join(', ', sort @valid_but_listed_words) . ')'
+);
+
+my @good_bad_ugly = intersect(@bad_spellings, @good_spellings);
+
+ok(
+ scalar(@good_bad_ugly) == 0,
+ 'No bad spelling is listed as good spelling for another bad spelling ('
+ . join(', ', @good_bad_ugly) . ')'
+);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/tags/fields.t b/t/scripts/tags/fields.t
new file mode 100644
index 0000000..971439c
--- /dev/null
+++ b/t/scripts/tags/fields.t
@@ -0,0 +1,180 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019-2020 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The harness for Lintian's test suite. For detailed information on
+# the test suite layout and naming conventions, see t/tests/README.
+# For more information about running tests, see
+# doc/tutorial/Lintian/Tutorial/TestSuite.pod
+#
+
+use v5.20;
+use warnings;
+use utf8;
+
+use Const::Fast;
+use File::Find::Rule;
+use IPC::Run3;
+use List::SomeUtils qw(true);
+use Path::Tiny;
+use Test::More;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+
+use Lintian::Deb822;
+use Lintian::Output::HTML;
+use Lintian::Profile;
+
+const my $EMPTY => q{};
+const my $SLASH => q{/};
+const my $FIXED_TESTS_PER_FILE => 8;
+
+my @tag_paths = sort File::Find::Rule->file()->name('*.tag')->in('tags');
+
+diag scalar @tag_paths . ' known tags.';
+
+# mandatory fields
+my @mandatory = qw(Tag Severity Check Explanation);
+
+# disallowed fields
+my @disallowed = qw(Reference References Ref Info Certainty);
+
+# tests per desc
+my $perfile = $FIXED_TESTS_PER_FILE + scalar @mandatory + scalar @disallowed;
+
+# set the testing plan
+plan tests => 1 + $perfile * scalar @tag_paths;
+
+my $profile = Lintian::Profile->new;
+$profile->load(undef, undef, 0);
+
+my @descpaths = sort File::Find::Rule->file()->name('*.desc')->in('tags');
+diag "Illegal desc file name $_" for @descpaths;
+is(scalar @descpaths, 0, 'No tags have the old *.desc name');
+
+for my $tag_path (@tag_paths) {
+
+ my $contents = path($tag_path)->slurp_utf8;
+ my @parts = split(m{\n\n}, $contents);
+
+ # test for duplicate fields
+ my $duplicates = 0;
+
+ for my $part (@parts) {
+ my %count;
+
+ my @lines = split(/\n/, $part);
+ for my $line (@lines) {
+ my ($field) = $line =~ qr/^(\S+):/;
+ $count{$field} += 1
+ if defined $field;
+ }
+
+ $duplicates += true { $count{$_} > 1 } keys %count;
+ }
+
+ is($duplicates, 0, "No duplicate fields in $tag_path");
+
+ my $deb822 = Lintian::Deb822->new;
+
+ my @sections = $deb822->read_file($tag_path);
+ ok(@sections >= 1, "Tag in $tag_path has at least one section");
+
+ my $fields = shift @sections;
+
+ # tag has a name
+ my $tag_name = $fields->value('Tag');
+ BAIL_OUT("Tag described in $tag_path has no name")
+ unless length $tag_name;
+
+ # tagfile is named $tag_name.tag
+ is(path($tag_path)->basename,
+ "$tag_name.tag", "Tagfile for $tag_path is named $tag_name.tag");
+
+ my $check_name = $fields->value('Check');
+
+ # tag is associated with a check
+ ok(length $check_name, "Tag in $tag_path is associated with a check");
+
+ if ($fields->value('Name-Spaced') eq 'yes') {
+
+ $tag_name = $check_name . $SLASH . $tag_name;
+
+ # encapsulating directory is name of check
+ my $subdir = path($tag_path)->parent->relative('tags');
+ is($subdir, $check_name,
+ "Tag in $tag_path is in directory named '$check_name'");
+
+ } else {
+ # encapsulating directory is first letter of tag's name
+ my $parentdir = path($tag_path)->parent->basename;
+ my $firstletter = lc(substr($tag_name, 0, 1));
+ is($parentdir, $firstletter,
+ "Tag $tag_name is in directory named '$firstletter'");
+ }
+
+ # mandatory fields
+ ok($fields->declares($_), "Field $_ exists in $tag_path")for @mandatory;
+
+ # disallowed fields
+ ok(!$fields->declares($_), "Field $_ does not exist in $tag_path")
+ for @disallowed;
+
+ ok(
+ length $profile->check_module_by_name->{$check_name},
+ "Tag in $tag_path is associated with a valid check"
+ );
+
+ ok($fields->value('Renamed-From') !~ m{,},
+ "Old tag names in $tag_path are not separated by commas");
+
+ my $html_output = Lintian::Output::HTML->new;
+
+ my $tag = $profile->get_tag($tag_name);
+ BAIL_OUT("Tag $tag_name was not loaded via profile")
+ unless defined $tag;
+
+ my $html_description;
+ open(my $fh, '>:utf8_strict', \$html_description)
+ or die 'Cannot open scalar';
+ select $fh;
+
+ print "<!DOCTYPE html><head><title>$tag_name</title></head><body>";
+ $html_output->describe_tags($profile->data, [$tag]);
+ say '</body>';
+
+ select *STDOUT;
+ close $fh;
+
+ my $tidy_out;
+ my $tidy_err;
+
+ my @tidy_command = qw(tidy -quiet);
+ run3(\@tidy_command, \$html_description, \$tidy_out, \$tidy_err);
+
+ is($tidy_err, $EMPTY,
+ "No warnings from HTML Tidy for tag description in $tag_path");
+}
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/scripts/version.t b/t/scripts/version.t
new file mode 100755
index 0000000..6e1f23d
--- /dev/null
+++ b/t/scripts/version.t
@@ -0,0 +1,38 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Const::Fast;
+use Test::More tests => 13;
+
+use Lintian::Relation::Version qw(:all);
+
+const my $EQUAL => q{=};
+
+ok(versions_equal('1.0', '1.0'), 'Basic equality');
+ok(versions_equal('1.0', '1.00'), '0 == 00');
+ok(versions_gte('1.1', '1.0'), 'Basic >=');
+ok(!versions_lte('1.1', '1.0'), 'Basic <=');
+ok(versions_gt('1.1', '1.0'), 'Basic >');
+ok(!versions_lt('1.1', '1.1'), 'Basic <');
+
+ok(versions_compare('1.1', '<=', '1.1'), 'compare() <=');
+ok(versions_compare('1.2', '>=', '1.1'), 'compare() >=');
+ok(versions_compare('0:1-1', $EQUAL, '1-1'), 'compare() = with epoch 0');
+ok(versions_compare('2.3~', '<<', '2.3'), 'compare() << with tilde');
+ok(!versions_compare('1:1.0', '>>', '1:1.1'), 'compare() >> with equal epoch');
+ok(
+ !versions_compare('1:1.1', '>>', '2:1.0'),
+ 'compare() >> with different epochs'
+);
+ok(
+ versions_compare('1:1.1', '<<', '2:1.1'),
+ 'compare() << with different epochs'
+);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/t/skeletons/changes b/t/skeletons/changes
new file mode 100644
index 0000000..eb0ae55
--- /dev/null
+++ b/t/skeletons/changes
@@ -0,0 +1,6 @@
+Version: 1.0
+Template-Sets:
+ . (changes-simple-filler),
+Fill-Targets:
+ test.changes,
+ . (make-builder),
diff --git a/t/skeletons/deb b/t/skeletons/deb
new file mode 100644
index 0000000..3155097
--- /dev/null
+++ b/t/skeletons/deb
@@ -0,0 +1,12 @@
+Version: 1.0
+Template-Sets:
+ DEBIAN (binary-control),
+ doc (mandatory-docs),
+ . (deb-make-builder)
+Fill-Targets:
+ DEBIAN (binary-control),
+ doc (mandatory-docs),
+ . (make-builder),
+ pre-build,
+ pre-control,
+ pre-data
diff --git a/t/skeletons/source-native b/t/skeletons/source-native
new file mode 100644
index 0000000..ed26f79
--- /dev/null
+++ b/t/skeletons/source-native
@@ -0,0 +1,9 @@
+Type: native
+Source-Format: 3.0 (native)
+Version: 1.0
+Template-Sets:
+ debian (debian-native),
+ . (source-make-builder),
+Fill-Targets:
+ debian (debian-packaging),
+ . (make-builder),
diff --git a/t/skeletons/source-non-native b/t/skeletons/source-non-native
new file mode 100644
index 0000000..79a325c
--- /dev/null
+++ b/t/skeletons/source-non-native
@@ -0,0 +1,11 @@
+Type: non-native
+Source-Format: 3.0 (quilt)
+Version: 1.0-1
+Template-Sets:
+ debian (debian-native),
+ debian (debian-extra-non-native),
+ . (source-make-builder),
+Fill-Targets:
+ debian (debian-packaging),
+ orig/debian (debian-packaging),
+ . (make-builder),
diff --git a/t/skeletons/testing b/t/skeletons/testing
new file mode 100644
index 0000000..d92f615
--- /dev/null
+++ b/t/skeletons/testing
@@ -0,0 +1,3 @@
+Template-Sets:
+ . (test-runner-tags),
+ . (lintian-invocation)
diff --git a/t/skeletons/upload-builder-only b/t/skeletons/upload-builder-only
new file mode 100644
index 0000000..4be967d
--- /dev/null
+++ b/t/skeletons/upload-builder-only
@@ -0,0 +1,8 @@
+Type: non-native
+Source-Format: 3.0 (quilt)
+Version: 1.0-1
+Template-Sets:
+ . (upload-make-builder),
+Fill-Targets:
+ debian (debian-packaging),
+ . (make-builder),
diff --git a/t/skeletons/upload-native b/t/skeletons/upload-native
new file mode 100644
index 0000000..f8f8857
--- /dev/null
+++ b/t/skeletons/upload-native
@@ -0,0 +1,9 @@
+Type: native
+Source-Format: 3.0 (native)
+Version: 1.0
+Template-Sets:
+ debian (debian-native),
+ . (upload-make-builder),
+Fill-Targets:
+ debian (debian-packaging),
+ . (make-builder),
diff --git a/t/skeletons/upload-non-native b/t/skeletons/upload-non-native
new file mode 100644
index 0000000..099268a
--- /dev/null
+++ b/t/skeletons/upload-non-native
@@ -0,0 +1,12 @@
+Type: non-native
+Source-Format: 3.0 (quilt)
+Version: 1.0-1
+Template-Sets:
+ debian (debian-native),
+ debian (debian-extra-non-native),
+ . (upload-make-builder),
+Fill-Targets:
+ debian (debian-packaging),
+ orig/debian (debian-packaging),
+ . (make-builder),
+ pre-upstream,
diff --git a/t/templates/binary-control/control.in b/t/templates/binary-control/control.in
new file mode 100644
index 0000000..7d912d8
--- /dev/null
+++ b/t/templates/binary-control/control.in
@@ -0,0 +1,12 @@
+Package: [% $source %]
+Version: [% $version %]
+Architecture: all
+Maintainer: [% $author %]
+Section: [% $section %]
+Priority: optional
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
+
diff --git a/t/templates/changes-simple-filler/Makefile.in b/t/templates/changes-simple-filler/Makefile.in
new file mode 100644
index 0000000..286cc6d
--- /dev/null
+++ b/t/templates/changes-simple-filler/Makefile.in
@@ -0,0 +1,17 @@
+ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+product = [% $build_product %]
+
+references = $(ROOT_DIR)/referenced-files
+
+.DEFAULT_GOAL := $(product)
+
+$(product): $(ROOT_DIR)/$(product)
+ if [ -d $(references) ] ; then \
+ cp -rp $(references)/. . ; \
+ fi
+ cp $(ROOT_DIR)/$(product) $(product)
+
+.PHONY: clean
+clean:
+ rm -f $(product)
diff --git a/t/templates/changes-simple-filler/fill-values.d/changes-simple-filler.values b/t/templates/changes-simple-filler/fill-values.d/changes-simple-filler.values
new file mode 100644
index 0000000..5332dd2
--- /dev/null
+++ b/t/templates/changes-simple-filler/fill-values.d/changes-simple-filler.values
@@ -0,0 +1,2 @@
+Build-Product: test.changes
+Build-Command: make -f [% $source_path %]/Makefile
diff --git a/t/templates/deb-make-builder/Makefile.in b/t/templates/deb-make-builder/Makefile.in
new file mode 100644
index 0000000..3a89ab2
--- /dev/null
+++ b/t/templates/deb-make-builder/Makefile.in
@@ -0,0 +1,121 @@
+ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+name = [% $source %]
+
+package = $(name).deb
+
+datadir = $(ROOT_DIR)/root
+controldir = $(ROOT_DIR)/DEBIAN
+
+builddir = build
+debiandir = $(builddir)/DEBIAN
+rootdir = $(builddir)/root
+docdir = $(rootdir)/usr/share/doc/$(name)
+
+mandatorydir = $(ROOT_DIR)/doc
+changelogfile = $(mandatorydir)/changelog
+copyrightfile = $(mandatorydir)/copyright
+
+version = [% $version %]
+
+ifeq "$(findstring -, $(version))" ""
+changelogtarget = $(docdir)/changelog
+else
+changelogtarget = $(docdir)/changelog.Debian
+endif
+
+pre_build = $(ROOT_DIR)/pre-build
+pre_data = $(ROOT_DIR)/pre-data
+tar_data = $(ROOT_DIR)/tar-data
+pre_control = $(ROOT_DIR)/pre-control
+tar_control = $(ROOT_DIR)/tar-control
+post_build = $(ROOT_DIR)/post-build
+
+deb_member_source_path = $(ROOT_DIR)/members
+deb_member_build_path = members
+
+debmembers = $(shell tr '\n' ' ' < $(ROOT_DIR)/deb-members)
+controlmembers = $(shell tr '\n' ' ' < $(ROOT_DIR)/control-members)
+
+$(package): fix-perm
+ -mkdir -p $(deb_member_build_path)
+ if [ -d $(deb_member_source_path) \
+ -a $(deb_member_source_path) != $(deb_member_build_path) ] ; then \
+ cp -rp $(deb_member_source_path)/. $(deb_member_build_path) ; \
+ fi
+
+ -mkdir -p $(rootdir)
+ if [ -d $(datadir) ] ; then \
+ cp -rp $(datadir)/. $(rootdir) ; \
+ fi
+
+ if [ -x $(pre_build) ] ; then \
+ $(pre_build) "$(rootdir)" "$(name)" ; \
+ fi
+
+ -mkdir -p $(docdir)
+ -if [ -f $(changelogfile) ] ; then \
+ install --mode 0644 $(changelogfile) $(changelogtarget) ; \
+ gzip -9nf $(changelogtarget) ; \
+ fi
+ if [ -f $(copyrightfile) ] ; then \
+ install --mode 0644 $(copyrightfile) $(docdir) ; \
+ fi
+
+ # pass package name to pre-data script
+ if [ -x $(pre_data) ] ; then \
+ $(pre_data) "$(rootdir)" "$(name)" ; \
+ fi
+
+ if [ -x $(tar_data) ] ; then \
+ $(tar_data) "$(rootdir)" ; \
+ fi
+
+ -mkdir $(debiandir)
+ if [ -d $(controldir) ] ; then \
+ cp -rp $(controldir)/. $(debiandir) ; \
+ fi
+
+ # prevents 'control-file-has-bad-permissions' on CI runners with strange umasks
+ find $(debiandir) -type d -exec chmod 0755 \{\} +
+ find $(debiandir) -type f -exec chmod 0644 \{\} +
+
+ (cd $(rootdir); find . -type f -a -! -ipath etc -exec md5sum -- \{\} +) > $(debiandir)/md5sums
+
+ # pass package name to pre-control script
+ if [ -x $(pre_control) ] ; then \
+ $(pre_control) "$(debiandir)" "$(name)" ; \
+ fi
+ if [ -x $(tar_control) ] ; then \
+ $(tar_control) "$(debiandir)" "$(controlmembers)" ; \
+ fi
+
+ ar rc $(package) $(debmembers)
+
+ # pass package name to post-build script
+ if [ -x $(post_build) ] ; then \
+ $(post_build) "$(name)" ; \
+ fi
+
+
+.PHONY: clean
+clean:
+ rm -f $(package)
+ rm -rf $(builddir)
+
+# If root/ exists, it is because the test ships with it. Since the
+# test may have been checked out (or unpacked) with a "whack umask"
+# (anything but 0022), we reset the permissions to a reasonable
+# default.
+#
+# The contents of the deb usually is not what is tested by this suite
+# (t/tests is preferred for this), so the below merely handles the
+# AVERAGE CASE. Tests that need special permissions (anything but
+# 0644 for files and 0755 for dirs) require manually setting the
+# permissions.
+.PHONY: fix-perm
+fix-perm:
+ if [ -d $(datadir) ] ; then \
+ find $(datadir) -type d | xargs -r chmod 0755 ; \
+ find $(datadir) -type f | xargs -r chmod 0644 ; \
+ fi
diff --git a/t/templates/deb-make-builder/control-members b/t/templates/deb-make-builder/control-members
new file mode 100644
index 0000000..cf97afe
--- /dev/null
+++ b/t/templates/deb-make-builder/control-members
@@ -0,0 +1,2 @@
+control
+md5sums
diff --git a/t/templates/deb-make-builder/deb-members b/t/templates/deb-make-builder/deb-members
new file mode 100644
index 0000000..57c72d4
--- /dev/null
+++ b/t/templates/deb-make-builder/deb-members
@@ -0,0 +1,3 @@
+members/debian-binary
+members/control.tar.gz
+members/data.tar.gz
diff --git a/t/templates/deb-make-builder/fill-values.d/deb-make-builder.values b/t/templates/deb-make-builder/fill-values.d/deb-make-builder.values
new file mode 100644
index 0000000..610b6f6
--- /dev/null
+++ b/t/templates/deb-make-builder/fill-values.d/deb-make-builder.values
@@ -0,0 +1,2 @@
+Build-Product: [% $source %].deb
+Build-Command: fakeroot make --trace -f [% $source_path %]/Makefile DEFAULT_DH_COMPAT=[% $dh_compat_level %]
diff --git a/t/templates/deb-make-builder/members/debian-binary b/t/templates/deb-make-builder/members/debian-binary
new file mode 100644
index 0000000..cd5ac03
--- /dev/null
+++ b/t/templates/deb-make-builder/members/debian-binary
@@ -0,0 +1 @@
+2.0
diff --git a/t/templates/deb-make-builder/tar-control b/t/templates/deb-make-builder/tar-control
new file mode 100755
index 0000000..feb065b
--- /dev/null
+++ b/t/templates/deb-make-builder/tar-control
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+debiandir="$1"
+controlmembers="$2"
+
+tar --create \
+ --owner=root:0 --group=root:0 \
+ --file members/control.tar.gz \
+ --gzip \
+ --directory "$debiandir" \
+ $controlmembers
diff --git a/t/templates/deb-make-builder/tar-data b/t/templates/deb-make-builder/tar-data
new file mode 100755
index 0000000..fcb7dc3
--- /dev/null
+++ b/t/templates/deb-make-builder/tar-data
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+rootdir="$1"
+
+tar --create --file members/data.tar.gz --gzip --directory "$rootdir" .
diff --git a/t/templates/debian-extra-non-native/upstream/metadata b/t/templates/debian-extra-non-native/upstream/metadata
new file mode 100644
index 0000000..948ec52
--- /dev/null
+++ b/t/templates/debian-extra-non-native/upstream/metadata
@@ -0,0 +1,2 @@
+Contact: John Doe
+Name: foo \ No newline at end of file
diff --git a/t/templates/debian-extra-non-native/watch b/t/templates/debian-extra-non-native/watch
new file mode 100644
index 0000000..81615fd
--- /dev/null
+++ b/t/templates/debian-extra-non-native/watch
@@ -0,0 +1,2 @@
+# Empty watch file, except for version
+version=3
diff --git a/t/templates/debian-native/changelog.in b/t/templates/debian-native/changelog.in
new file mode 100644
index 0000000..525cea7
--- /dev/null
+++ b/t/templates/debian-native/changelog.in
@@ -0,0 +1,17 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $source %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/templates/debian-native/control.in b/t/templates/debian-native/control.in
new file mode 100644
index 0000000..4cc1a12
--- /dev/null
+++ b/t/templates/debian-native/control.in
@@ -0,0 +1,19 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Rules-Requires-Root: [% $rules_requires_root %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package.
+ .
+ This package probably has no meaningful contents.
diff --git a/t/templates/debian-native/copyright b/t/templates/debian-native/copyright
new file mode 100644
index 0000000..021a1f3
--- /dev/null
+++ b/t/templates/debian-native/copyright
@@ -0,0 +1,29 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Comment: This is part of the testsuite of lintian.
+ See the file debian/copyright
+ in the lintian source directory for more details.
+
+Files: *
+Copyright:
+ 2008 Frank Lichtenheld <djpig@debian.org>
+ 2009 Russ Allbery <rra@debian.org>
+ 2018 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/templates/debian-native/rules b/t/templates/debian-native/rules
new file mode 100755
index 0000000..4411cbf
--- /dev/null
+++ b/t/templates/debian-native/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
+%:
+ dh $@
+
+# In Ubuntu, dh does not catch this file by default.
+# They have diffed it to reduce the size of packages.
+ifneq (,$(strip $(wildcard Changes)))
+override_dh_installchangelogs:
+ dh_installchangelogs Changes
+endif
diff --git a/t/templates/debian-native/source/format.in b/t/templates/debian-native/source/format.in
new file mode 100644
index 0000000..4fc5420
--- /dev/null
+++ b/t/templates/debian-native/source/format.in
@@ -0,0 +1 @@
+[% $source_format %]
diff --git a/t/templates/debian-native/tests/control b/t/templates/debian-native/tests/control
new file mode 100644
index 0000000..db2fda9
--- /dev/null
+++ b/t/templates/debian-native/tests/control
@@ -0,0 +1 @@
+Tests: test
diff --git a/t/templates/debian-native/tests/test b/t/templates/debian-native/tests/test
new file mode 100755
index 0000000..039e4d0
--- /dev/null
+++ b/t/templates/debian-native/tests/test
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/t/templates/lintian-invocation/fill-values.d/lintian-invocation.values b/t/templates/lintian-invocation/fill-values.d/lintian-invocation.values
new file mode 100644
index 0000000..4fb41b4
--- /dev/null
+++ b/t/templates/lintian-invocation/fill-values.d/lintian-invocation.values
@@ -0,0 +1 @@
+Lintian-Command-Line: --no-user-dirs [% $options %] --profile [% $profile %] --allow-root --no-cfg --exp-output format=[% $output_format %] [% $default_lintian_options %]
diff --git a/t/templates/mandatory-docs/changelog.in b/t/templates/mandatory-docs/changelog.in
new file mode 100644
index 0000000..525cea7
--- /dev/null
+++ b/t/templates/mandatory-docs/changelog.in
@@ -0,0 +1,17 @@
+[% $source %] ([% $version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $date %]
+
+[% $source %] ([% $prev_version %]) [% $distribution %]; urgency=low
+
+ * Lintian Test Suite.
+ * Test: [% $testname %]
+
+ * Suppress "should close ITP bug" messages. (Closes: #123456)
+
+ -- [% $author %] [% $prev_date %]
diff --git a/t/templates/mandatory-docs/copyright b/t/templates/mandatory-docs/copyright
new file mode 100644
index 0000000..021a1f3
--- /dev/null
+++ b/t/templates/mandatory-docs/copyright
@@ -0,0 +1,29 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Lintian
+Upstream-Contact: <debian-lint-maint@lists.debian.org>
+Source: http://lintian.debian.org
+Comment: This is part of the testsuite of lintian.
+ See the file debian/copyright
+ in the lintian source directory for more details.
+
+Files: *
+Copyright:
+ 2008 Frank Lichtenheld <djpig@debian.org>
+ 2009 Russ Allbery <rra@debian.org>
+ 2018 Felix Lechner <felix.lechner@lease-up.com>
+License: GPL-2+
+ This program is free software; you may redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ .
+ This is distributed in the hope that it will be useful, but without
+ any warranty; without even the implied warranty of merchantability or
+ fitness for a particular purpose. See the GNU General Public License
+ for more details.
+ .
+ A copy of the GNU General Public License version 2 is available as
+ /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
+ or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+ You can also obtain it by writing to the Free Software Foundation, Inc.,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/t/templates/source-make-builder/Makefile.in b/t/templates/source-make-builder/Makefile.in
new file mode 100644
index 0000000..f527523
--- /dev/null
+++ b/t/templates/source-make-builder/Makefile.in
@@ -0,0 +1,86 @@
+ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+name = [% $source %]
+version = [% $upstream_version %]
+type = [% $type %]
+
+packagedir = $(name)-$(version)
+underscored = $(name)_$(version)
+
+origdata = $(ROOT_DIR)/orig
+origstem = $(underscored).orig
+
+debiandata = $(ROOT_DIR)/debian
+
+formatfile = $(debiandata)/source/format
+
+watchfile = $(packagedir)/debian/watch
+
+post_clean = $(ROOT_DIR)/post-clean
+pre_orig = $(ROOT_DIR)/pre-orig
+tar_orig = $(ROOT_DIR)/tar-orig
+pre_build = $(ROOT_DIR)/pre-build
+post_build = $(ROOT_DIR)/post-build
+
+product = [% $build_product %]
+
+ifneq (,$(wildcard $(ROOT_DIR)/dpkg-overrides))
+dpkgoverrides = $(shell cat $(ROOT_DIR)/dpkg-overrides)
+endif
+
+ifeq ($(type),native)
+dpkgoptions = -sn
+else
+dpkgoptions = -sp
+endif
+
+.DEFAULT_GOAL := $(product)
+
+$(product):
+ -mkdir -p $(packagedir)
+ if [ -x $(post_clean) ] ; then \
+ $(post_clean) $(packagedir) ; \
+ fi
+
+ mkdir $(origdata) || true
+ cp -rp $(origdata)/. $(packagedir)
+
+ if [ "[% $type %]" != "native" ] ; then \
+ if [ -x $(pre_orig) ] ; then \
+ $(pre_orig) $(shell realpath $(packagedir)) ; \
+ fi ; \
+ if [ -x $(tar_orig) ] ; then \
+ $(tar_orig) $(origstem) $(packagedir) ; \
+ fi ; \
+ if [ -f $(formatfile) ] && grep --quiet "^3\.. (quilt)$$" $(formatfile) ; then \
+ rm -rf $(packagedir)/debian ; \
+ fi ; \
+ fi
+
+ -mkdir -p $(packagedir)/debian
+ if [ -d $(debiandata) ] ; then \
+ cp -rp $(debiandata)/. $(packagedir)/debian ; \
+ fi
+ if [ "[% $type %]" != "native" ] ; then \
+ if [ ! -f $(watchfile) ] ; then \
+ echo '# Empty watch file' > $(watchfile) ; \
+ fi ; \
+ fi
+
+ if [ -x $(pre_build) ] ; then \
+ $(pre_build) $(shell realpath $(packagedir)) ; \
+ fi
+ if [ -f $(formatfile) ] && grep --quiet "^3\.. (quilt)$$" $(formatfile) ; then \
+ dpkg-source $(dpkgoverrides) -b $(packagedir) ; \
+ else \
+ dpkg-source $(dpkgoverrides) $(dpkgoptions) -b $(packagedir) ; \
+ fi
+ if [ -x $(post_build) ] ; then \
+ $(post_build) $(product) ; \
+ fi
+
+
+.PHONY: clean
+clean:
+ rm -rf $(packagedir)
+ rm -f $(underscored)*
diff --git a/t/templates/source-make-builder/fill-values.d/source-make-builder.values b/t/templates/source-make-builder/fill-values.d/source-make-builder.values
new file mode 100644
index 0000000..41e08da
--- /dev/null
+++ b/t/templates/source-make-builder/fill-values.d/source-make-builder.values
@@ -0,0 +1,3 @@
+Build-Product: [% $source %]_[% $version %].dsc
+Build-Command: fakeroot make --trace -f [% $source_path %]/Makefile DEFAULT_DH_COMPAT=[% $dh_compat_level %]
+Default-Build-Depends: debhelper-compat (= [% $dh_compat_level %])
diff --git a/t/templates/source-make-builder/tar-orig b/t/templates/source-make-builder/tar-orig
new file mode 100755
index 0000000..791bca4
--- /dev/null
+++ b/t/templates/source-make-builder/tar-orig
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+tarstem="$1"
+directory="$2"
+
+tar --create --file "$tarstem.tar.gz" --gzip "$directory"
diff --git a/t/templates/test-runner-tags/generic.t b/t/templates/test-runner-tags/generic.t
new file mode 100644
index 0000000..2dbd03a
--- /dev/null
+++ b/t/templates/test-runner-tags/generic.t
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2018 Felix Lechner
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN {
+ die('Cannot find LINTIAN_BASE')
+ unless length $ENV{'LINTIAN_BASE'};
+}
+
+use Cwd qw(realpath);
+use File::Basename qw(dirname);
+use List::Util qw(max);
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+
+use Test::Lintian::Run qw(logged_runner);
+use Test::ScriptAge qw(our_modification_epoch perl_modification_epoch);
+
+$ENV{'RUNNER_EPOCH'}= max(our_modification_epoch, perl_modification_epoch);
+
+my $runpath = realpath(dirname($0));
+
+logged_runner($runpath);
diff --git a/t/templates/upload-make-builder/Makefile.in b/t/templates/upload-make-builder/Makefile.in
new file mode 100644
index 0000000..d67f796
--- /dev/null
+++ b/t/templates/upload-make-builder/Makefile.in
@@ -0,0 +1,90 @@
+ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+package = [% $source %]
+upstream_version = [% $upstream_version %]
+type = [% $type %]
+
+packagedir = $(package)-$(upstream_version)
+
+origdata = $(ROOT_DIR)/orig
+origtargz = $(package)_$(upstream_version).orig.tar.gz
+
+debiandata = $(ROOT_DIR)/debian
+formatfile = $(debiandata)/source/format
+
+diffdata = $(ROOT_DIR)/diff
+
+private_key = $(ROOT_DIR)/upstream/private-key.asc
+
+pre_build = $(ROOT_DIR)/pre-build
+post_build = $(ROOT_DIR)/post-build
+pre_upstream = $(ROOT_DIR)/pre-upstream
+
+product = [% $build_product %]
+upload_type = [% $upload_type %]
+
+ifeq ($(upload_type),source)
+extraflags = -S
+else
+extraflags =
+endif
+
+.DEFAULT_GOAL := $(product)
+
+$(product): $(origtargz)
+ if [ -r $(origtargz) -a -r $(private_key) ] ; then \
+ tmpdir=$(shell mktemp -d) ; \
+ gpg --homedir "$$tmpdir" --import $(private_key) ; \
+ gpg --homedir "$$tmpdir" --batch --yes --armor --output $(origtargz).asc \
+ --detach-sign $(origtargz) ; \
+ gpg-connect-agent --homedir "$$tmpdir" KILLAGENT /bye ; \
+ rm -rf "$$tmpdir" ; \
+ fi
+ if [ -d $(diffdata)/. ] ; then \
+ cp -rp $(diffdata)/. $(packagedir) ; \
+ fi
+ if [ -d $(debiandata)/. ] ; then \
+ cp -rp $(debiandata)/. $(packagedir)/debian ; \
+ fi
+
+ if [ -x $(pre_build) ] ; then \
+ $(pre_build) $(shell realpath $(packagedir)) ; \
+ fi
+
+ cd $(packagedir) && dpkg-buildpackage -rfakeroot $(extraflags) -us -uc -d \
+ -iNEVER_MATCH_ANYTHING -INEVER_MATCH_ANYTHING --source-option=--auto-commit
+
+ if [ -x $(post_build) ] ; then \
+ $(post_build) $(shell realpath $(packagedir)) ; \
+ fi
+
+ifeq ($(type),native)
+$(origtargz):
+ -mkdir $(packagedir)
+ if [ -d $(origdata)/. ] ; then \
+ cp -rp $(origdata)/. $(packagedir) ; \
+ fi
+else
+$(origtargz):
+ -mkdir $(packagedir)
+ if [ -d $(origdata)/. ] ; then \
+ cp -rp $(origdata)/. $(packagedir) ; \
+ fi
+
+ if [ -x $(pre_upstream) ] ; then \
+ $(pre_upstream) $(shell realpath $(packagedir)) ; \
+ fi
+
+ tar czf $(origtargz) $(packagedir)
+
+ if [ -f $(formatfile) ] && grep --quiet "^3\.. (quilt)$$" $(formatfile) ; then \
+ rm -rf $(packagedir)/debian ; \
+ fi
+endif
+
+.PHONY: clean
+clean:
+ rm -rf $(packagedir)
+ if [ "$(type)" = "native" ] ; then \
+ rm -f $(origtargz) ; \
+ fi
diff --git a/t/templates/upload-make-builder/fill-values.d/upload-make-builder.values b/t/templates/upload-make-builder/fill-values.d/upload-make-builder.values
new file mode 100644
index 0000000..ec90e55
--- /dev/null
+++ b/t/templates/upload-make-builder/fill-values.d/upload-make-builder.values
@@ -0,0 +1,4 @@
+Upload-Type: [% $host_architecture %]
+Build-Product: [% $source %]_[% $no_epoch %]_[% $upload_type %].changes
+Build-Command: make --trace -f [% $source_path %]/Makefile DEFAULT_DH_COMPAT=[% $dh_compat_level %]
+Default-Build-Depends: debhelper-compat (= [% $dh_compat_level %])
diff --git a/t/whitelists/binary-control b/t/whitelists/binary-control
new file mode 100644
index 0000000..070d0b0
--- /dev/null
+++ b/t/whitelists/binary-control
@@ -0,0 +1,2 @@
+May-Generate:
+ control
diff --git a/t/whitelists/debian-packaging b/t/whitelists/debian-packaging
new file mode 100644
index 0000000..a6e97a1
--- /dev/null
+++ b/t/whitelists/debian-packaging
@@ -0,0 +1,8 @@
+May-Generate:
+ rules
+ changelog
+ control
+ compat
+ source/format
+ tests/control
+ tests/test
diff --git a/t/whitelists/make-builder b/t/whitelists/make-builder
new file mode 100644
index 0000000..cf1532c
--- /dev/null
+++ b/t/whitelists/make-builder
@@ -0,0 +1,4 @@
+May-Generate:
+ Makefile
+ pre-build
+ post-build
diff --git a/t/whitelists/mandatory-docs b/t/whitelists/mandatory-docs
new file mode 100644
index 0000000..aaee294
--- /dev/null
+++ b/t/whitelists/mandatory-docs
@@ -0,0 +1,2 @@
+May-Generate:
+ changelog